<?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>243619</bug_id>
          
          <creation_ts>2022-08-05 17:12:52 -0700</creation_ts>
          <short_desc>[Painting] Cleanup underlineOffsetForTextBoxPainting</short_desc>
          <delta_ts>2022-08-14 14:06:25 -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>Layout and Rendering</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>243766</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>aboxhall</cc>
    
    <cc>andresg_22</cc>
    
    <cc>apinheiro</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>kondapallykalyan</cc>
    
    <cc>mmaxfield</cc>
    
    <cc>pdr</cc>
    
    <cc>samuel_white</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1889282</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2022-08-05 17:12:52 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889288</commentid>
    <comment_count>1</comment_count>
      <attachid>461434</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-05 17:23:15 -0700</bug_when>
    <thetext>Created attachment 461434
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889453</commentid>
    <comment_count>2</comment_count>
      <attachid>461451</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 18:06:55 -0700</bug_when>
    <thetext>Created attachment 461451
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889463</commentid>
    <comment_count>3</comment_count>
      <attachid>461453</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 18:40:23 -0700</bug_when>
    <thetext>Created attachment 461453
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889464</commentid>
    <comment_count>4</comment_count>
      <attachid>461454</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 18:42:11 -0700</bug_when>
    <thetext>Created attachment 461454
patch for EWS (including patch from bug 243632)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889481</commentid>
    <comment_count>5</comment_count>
      <attachid>461457</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 21:19:55 -0700</bug_when>
    <thetext>Created attachment 461457
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889482</commentid>
    <comment_count>6</comment_count>
      <attachid>461458</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 21:20:58 -0700</bug_when>
    <thetext>Created attachment 461458
for EWS with dependency</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889485</commentid>
    <comment_count>7</comment_count>
      <attachid>461459</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 22:04:45 -0700</bug_when>
    <thetext>Created attachment 461459
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889486</commentid>
    <comment_count>8</comment_count>
      <attachid>461460</attachid>
    <who name="alan">zalan</who>
    <bug_when>2022-08-06 22:05:21 -0700</bug_when>
    <thetext>Created attachment 461460
for EWS</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889517</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-08-07 08:00:23 -0700</bug_when>
    <thetext>Committed 253190@main (569066b52c66): &lt;https://commits.webkit.org/253190@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 461459.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1889518</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-08-07 08:01:16 -0700</bug_when>
    <thetext>&lt;rdar://problem/98274655&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461434</attachid>
            <date>2022-08-05 17:23:15 -0700</date>
            <delta_ts>2022-08-06 18:06:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243619-20220805172314.patch</filename>
            <type>text/plain</type>
            <size>12117</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiZWU0ZjQzNWE2NjZmMTc0NjMwNWY0ZTZkMGUzNzU0NTFhZWI1MzkzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBG
cmksIDUgQXVnIDIwMjIgMTc6MTM6MDMgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IEludHJvZHVjZSBEZWNvcmF0aW5nQm94U3R5bGVBbmRPZmZzZXRGb3JVbmRlcmxpbmUKIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDM2MTkKClJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgoKTGV0J3MgZ3JhYiB0aGUgdW5kZXJsaW5lIHN0eWxlIChhbmQgdGhlIG9m
ZnNldCkgZnJvbSB0aGUgZGVjb3JhdGluZyBib3ggYW5kIG5vdCBmcm9tIHRoZSBSZW5kZXJUZXh0
IGl0c2VsZi4KVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgY2FzZXMgd2hlbiB3ZSBzdGFydCBk
cmF3aW5nIG11bHRpcGxlIGxpbmVzIGZvciBhIHRleHQgcnVuIHdpdGggKHBvc3NpYmx5KSBkaWZm
ZXJlbnQgc3R5bGUuCgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91
bmREZWNvcmF0aW9ucyk6CiogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmNwcDoKKFdlYkNvcmU6Om1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgooV2Vi
Q29yZTo6bWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZSk6CihXZWJDb3JlOjp0
ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3RXaXRoaW5EZWNvcmF0aW5nQm94KToKKFdlYkNvcmU6
OnRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdCk6CihXZWJDb3JlOjpjb21wdXRlVW5kZXJsaW5l
T2Zmc2V0KToKKFdlYkNvcmU6OnVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyk6Ciog
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmg6Ci0tLQogLi4uL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwICAgICAgIHwgMTIgKystLQogU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgNjIgKysrKysrKysrKysrLS0t
LS0tLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmggICAgIHwgIDgg
KystCiAzIGZpbGVzIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQoK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5j
cHAKaW5kZXggZDY0ZjUzM2ZiZmQ2Li41MDI4ODkyZTVmNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBAIC0yODQsMTEgKzI4
NCwxMyBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogCiAgICAgICAgIC8vIFRoZXNlIGRlY29y
YXRpb25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCkuCiAgICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgYXV0
byBvZmZzZXQgPSB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcobV9saW5lU3R5bGUs
IG1fdGV4dEJveCk7Ci0gICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMudW5k
ZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6
IDA7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1f
d2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7Ci0gICAgICAgICAgICByZWN0Lm1vdmUo
MCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVybGluZVN0eWxlLCBtX3N0
eWxlcy51bmRlcmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBhdXRvIGRlY29yYXRpbmdC
b3hTdHlsZUFuZE9mZnNldCA9IHVuZGVybGluZVN0eWxlQW5kT2Zmc2V0Rm9yVGV4dEJveFBhaW50
aW5nKG1fdGV4dEJveCk7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZVJlY3QgPSBGbG9hdFJl
Y3QgeyBsb2NhbE9yaWdpbiwgRmxvYXRTaXplIHsgbV93aWR0aCwgZGVjb3JhdGluZ0JveFN0eWxl
QW5kT2Zmc2V0LnRoaWNrbmVzcyB9IH07CisgICAgICAgICAgICBhdXRvIHdhdnlPZmZzZXQgPSBk
ZWNvcmF0aW5nQm94U3R5bGVBbmRPZmZzZXQuc3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6
V2F2eSA/IG1fd2F2eU9mZnNldCA6IDAuZjsKKyAgICAgICAgICAgIGF1dG8gYm90dG9tT2Zmc2V0
ID0gZGVjb3JhdGluZ0JveFN0eWxlQW5kT2Zmc2V0Lm9mZnNldEZyb21UZXh0Qm94TG9naWNhbEJv
dHRvbSArIHdhdnlPZmZzZXQ7IAorCisgICAgICAgICAgICB1bmRlcmxpbmVSZWN0Lm1vdmUoMC5m
LCBib3R0b21PZmZzZXQpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lLCBkZWNvcmF0aW5nQm94U3R5bGVBbmRPZmZzZXQuc3R5bGUsIGRl
Y29yYXRpbmdCb3hTdHlsZUFuZE9mZnNldC5jb2xvciwgdW5kZXJsaW5lUmVjdCk7CiAgICAgICAg
IH0KICAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSkpIHsKICAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5v
dmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQg
OiAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXgg
YjZjM2IyNDY0ZGUzLi44MGEwN2U0ZjBmMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5s
aW5lVGV4dEJveFN0eWxlLmNwcApAQCAtMzgsNyArMzgsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgVW5kZXJsaW5lT2Zmc2V0QXJndW1lbnRzIHsKLSAgICBjb25zdCBSZW5kZXJT
dHlsZSYgbGluZVN0eWxlOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBkZWNvcmF0aW5nQm94U3R5
bGU7CiAgICAgZmxvYXQgZGVmYXVsdEdhcCB7IDAgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyPiB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7IH07CiB9
OwpAQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2so
Y29uc3QgUmVuZGVySW5saW5lJiBhbmNlc3RvciwgY29uc3QgUmVuZGVyTwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAotc3RhdGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxp
bmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQg
dGV4dFJ1bkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJl
cikKK3N0YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0
IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5M
b2dpY2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW9uUmVuZGVyZXIpCiB7CiAg
ICAgYXV0byBtaW5Mb2dpY2FsVG9wID0gdGV4dFJ1bkxvZ2ljYWxUb3A7CiAgICAgZm9yIChhdXRv
IHJ1biA9IGxpbmVCb3gtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxp
bmUoKSkgewpAQCAtNjQsNyArNjQsNyBAQCBzdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRl
eHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZQogICAgICAg
ICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJ
ZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4g
aXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW9uUmVuZGVyZXJ8J3MgaGllcmFyY2h5Lgog
Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5p
c1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVu
ZGVySW5saW5lPigqZGVjb3JhdGlvblJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAg
ICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3Rv
ckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGlvblJlbmRlcmVy
KSwgJnJ1bi0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBp
ZiAocnVuLT5pc1RleHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lwSW5rKCkg
PT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpOb25lKQpAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMg
ZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVy
YXRvcjo6TGluZUJveEl0ZQogICAgIHJldHVybiBtaW5Mb2dpY2FsVG9wOwogfQogCi1zdGF0aWMg
ZmxvYXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJ
dGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNhbEJv
dHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyKQorc3RhdGljIGZs
b2F0IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxCb3R0
b20sIGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpb25SZW5kZXJlcikKIHsKICAgICBhdXRv
IG1heExvZ2ljYWxCb3R0b20gPSB0ZXh0UnVuTG9naWNhbEJvdHRvbTsKICAgICBmb3IgKGF1dG8g
cnVuID0gbGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGlu
ZSgpKSB7CkBAIC04Myw3ICs4Myw3IEBAIHN0YXRpYyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9y
VGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94CiAgICAgICAg
IGlmICghcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4
dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQogICAgICAgICAgICAgY29udGludWU7IC8vIElm
IHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBp
dCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCiAK
LSAgICAgICAgaWYgKGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlz
UmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KCpkZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAg
ICAgaWYgKGRlY29yYXRpb25SZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9y
QW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW9uUmVuZGVyZXIp
LCAmcnVuLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlm
IChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9
PSBUZXh0RGVjb3JhdGlvblNraXBJbms6Ok5vbmUpCkBAIC0xMTAsMTggKzExMCwyMCBAQCBzdGF0
aWMgY29uc3QgUmVuZGVyRWxlbWVudCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRp
b24oY29uc3QgUmVuZGVyVGV4dAogICAgIHJldHVybiBjdXJyZW50OwogfQogCitzdGF0aWMgZmxv
YXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChjb25zdCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBjb25zdCBSZW5kZXJFbGVt
ZW50JiBkZWNvcmF0aW9uUmVuZGVyZXIsIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSwg
ZmxvYXQgdGV4dEJveExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKQorewor
ICAgIGlmIChpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKQorICAgICAgICByZXR1cm4gdGV4dEJv
eExvZ2ljYWxUb3AgLSBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gs
IHRleHRCb3hMb2dpY2FsVG9wLCBkZWNvcmF0aW9uUmVuZGVyZXIpOworICAgIHJldHVybiBtYXhM
b2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2Fs
Qm90dG9tLCBkZWNvcmF0aW9uUmVuZGVyZXIpIC0gdGV4dEJveExvZ2ljYWxCb3R0b207Cit9CisK
IHN0YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVy
ZXIsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkK
IHsKLSAgICBmbG9hdCBvZmZzZXQgPSAwLmY7CiAgICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVy
ID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24ocmVuZGVyZXIsIGxpbmVCb3gt
PmlzRmlyc3QoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSgpKSB7Ci0gICAgICAgIGF1dG8gbWluTG9naWNhbFRvcCA9IG1pbkxvZ2ljYWxUb3BG
b3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJveExvZ2ljYWxUb3AsIGRlY29yYXRp
b25SZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldCA9IHRleHRCb3hMb2dpY2FsVG9wIC0gbWluTG9n
aWNhbFRvcDsKLSAgICB9IGVsc2UgewotICAgICAgICBvZmZzZXQgPSBtYXhMb2dpY2FsQm90dG9t
Rm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsQm90dG9tLCBkZWNv
cmF0aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZzZXQgLT0gdGV4dEJveExvZ2ljYWxCb3R0b207
Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXQ7CisgICAgaWYgKCFkZWNvcmF0aW9uUmVuZGVyZXIp
CisgICAgICAgIHJldHVybiAwLmY7CisKKyAgICByZXR1cm4gdGV4dFJ1bk9mZnNldEZyb21Cb3R0
b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChsaW5lQm94LCAqZGVjb3JhdGlvblJlbmRlcmVyLCBk
ZWNvcmF0aW9uUmVuZGVyZXItPnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpLCB0
ZXh0Qm94TG9naWNhbFRvcCwgdGV4dEJveExvZ2ljYWxCb3R0b20pOwogfQogCiBzdGF0aWMgaW5s
aW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQpAQCAtMTQ0LDkg
KzE0Niw5IEBAIHN0YXRpYyBmbG9hdCBjb21wdXRlVW5kZXJsaW5lT2Zmc2V0KGNvbnN0IFVuZGVy
bGluZU9mZnNldEFyZ3VtZW50cyYgY29udGV4dCkKICAgICAvLyBldmVuIGlmIGl0IGlzIGhvcml6
b250YWwsIGJ1dCBkZXRlY3RpbmcgdGhpcyBoYXMgcGVyZm9ybWFuY2UgaW1wbGljYXRpb25zLiBG
b3Igbm93IHdlIG9ubHkgd29yayB3aXRoCiAgICAgLy8gdmVydGljYWwgdGV4dCwgc2luY2Ugd2Ug
YWxyZWFkeSBkZXRlcm1pbmVkIHRoZSBiYXNlbGluZSB0eXBlIHRvIGJlIGlkZW9ncmFwaGljIGlu
IHRoYXQKICAgICAvLyBjYXNlLgotICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb24gPSBjb250ZXh0
LmxpbmVTdHlsZS50ZXh0VW5kZXJsaW5lUG9zaXRpb24oKTsKLSAgICBhdXRvIHVuZGVybGluZU9m
ZnNldCA9IGNvbnRleHQubGluZVN0eWxlLnRleHRVbmRlcmxpbmVPZmZzZXQoKTsKLSAgICBhdXRv
JiBmb250TWV0cmljcyA9IGNvbnRleHQubGluZVN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCk7
CisgICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvbiA9IGNvbnRleHQuZGVjb3JhdGluZ0JveFN0eWxl
LnRleHRVbmRlcmxpbmVQb3NpdGlvbigpOworICAgIGF1dG8gdW5kZXJsaW5lT2Zmc2V0ID0gY29u
dGV4dC5kZWNvcmF0aW5nQm94U3R5bGUudGV4dFVuZGVybGluZU9mZnNldCgpOworICAgIGF1dG8m
IGZvbnRNZXRyaWNzID0gY29udGV4dC5kZWNvcmF0aW5nQm94U3R5bGUubWV0cmljc09mUHJpbWFy
eUZvbnQoKTsKIAogICAgIGF1dG8gcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbiA9IHVuZGVybGlu
ZVBvc2l0aW9uOwogICAgIGlmIChyZXNvbHZlZFVuZGVybGluZVBvc2l0aW9uID09IFRleHRVbmRl
cmxpbmVQb3NpdGlvbjo6QXV0byAmJiB1bmRlcmxpbmVPZmZzZXQuaXNBdXRvKCkpIHsKQEAgLTI3
NiwxNCArMjc4LDI4IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9u
cyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAotZmxvYXQg
dW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHls
ZSwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKK0RlY29y
YXRpbmdCb3hTdHlsZUFuZE9mZnNldEZvclVuZGVybGluZSB1bmRlcmxpbmVTdHlsZUFuZE9mZnNl
dEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9y
JiB0ZXh0Qm94KQogewotICAgIGF1dG8gdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0
VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7Ci0gICAgICAgIHRleHRCb3gtPmxpbmVCb3goKS0+YmFz
ZWxpbmVUeXBlKCksCi0gICAgICAgIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSAtIHRleHRCb3gt
PmxvZ2ljYWxUb3AoKSwKLSAgICAgICAgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KHRleHRC
b3gtPmxpbmVCb3goKSwgdGV4dEJveC0+cmVuZGVyZXIoKSwgdGV4dEJveC0+bG9naWNhbFRvcCgp
LCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpCisgICAgLy8gMS4gRmluZCB0aGUgZGVjb3JhdGlu
ZyBib3ggZm9yIHRoaXMgdGV4dCBydW4gKGZvciByb290IGlubGluZSBib3ggY29udGVudCwgaXQn
cyB0aGUgY29udGFpbmluZyBibG9jaywgZm9yIHRleHQgaW5zaWRlIGFuIGlubGluZSBib3gsIGl0
J3MgbW9zdGx5IHRoZSBwYXJlbnQgaW5saW5lIGJveCBpdHNlbGYpIAorICAgIC8vIDIuIGNvbXB1
dGUgdGhlIG9mZnNldCBhbmQgdXNlIHRoZSBhc3NvY2lhdGVkIHN0eWxlIHRvIHJldHVybi4KKyAg
ICBhdXRvIGxpbmVCb3ggPSB0ZXh0Qm94LT5saW5lQm94KCk7CisgICAgYXV0byBpc0ZpcnN0TGlu
ZSA9IGxpbmVCb3gtPmlzRmlyc3QoKTsKKworICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJlciA9
IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHRleHRCb3gtPnJlbmRlcmVyKCks
IGlzRmlyc3RMaW5lKTsKKyAgICBpZiAoIWRlY29yYXRpb25SZW5kZXJlcikgeworICAgICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBh
dXRvJiBzdHlsZSA9IGlzRmlyc3RMaW5lID8gZGVjb3JhdGlvblJlbmRlcmVyLT5maXJzdExpbmVT
dHlsZSgpIDogZGVjb3JhdGlvblJlbmRlcmVyLT5zdHlsZSgpOworICAgIGF1dG8gdGV4dFJ1bk9m
ZnNldCA9IHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdFdpdGhpbkRlY29yYXRpbmdCb3gobGlu
ZUJveCwgKmRlY29yYXRpb25SZW5kZXJlciwgc3R5bGUuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSgpLCB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7Cisg
ICAgYXV0byB0ZXh0Qm94SGVpZ2h0ID0gdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJv
eC0+bG9naWNhbFRvcCgpOworICAgIHJldHVybiB7CisgICAgICAgIHN0eWxlLnRleHREZWNvcmF0
aW9uU3R5bGUoKSwKKyAgICAgICAgc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9y
RmlsdGVyKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvciksCisgICAgICAgIGNlaWxUb0Rl
dmljZVBpeGVsKHN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShzdHlsZS5j
b21wdXRlZEZvbnRTaXplKCksIHN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCkpLCBkZWNvcmF0
aW9uUmVuZGVyZXItPmRvY3VtZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKSksCisgICAgICAgIGNv
bXB1dGVVbmRlcmxpbmVPZmZzZXQoeyBzdHlsZSAsIGRlZmF1bHRHYXAoc3R5bGUpLCBUZXh0VW5k
ZXJsaW5lUG9zaXRpb25VbmRlciB7IGxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpLCB0ZXh0Qm94SGVp
Z2h0LCB0ZXh0UnVuT2Zmc2V0IH0gfSkKICAgICB9OwotICAgIHJldHVybiBjb21wdXRlVW5kZXJs
aW5lT2Zmc2V0KHsgc3R5bGUgLCBkZWZhdWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0
aW9uVW5kZXIgfSk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmgKaW5kZXggOGIwN2M1YTkyOWJhLi5kYmM1ZDFkZGI2YjggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCkBAIC02NSw2ICs2NSwxMiBAQCBHbHlwaE92ZXJm
bG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmKTsKIEds
eXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHls
ZSYsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyKTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3Zl
cmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9y
JiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0
Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWlu
dGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3ImKTsKK3N0cnVjdCBEZWNvcmF0aW5nQm94U3R5bGVBbmRPZmZzZXRGb3JVbmRlcmxpbmUg
eworICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgeyBUZXh0RGVjb3JhdGlvblN0eWxlOjpT
b2xpZCB9OworICAgIENvbG9yIGNvbG9yOworICAgIGZsb2F0IHRoaWNrbmVzcyB7IDAuZiB9Owor
ICAgIGZsb2F0IG9mZnNldEZyb21UZXh0Qm94TG9naWNhbEJvdHRvbSB7IDAuZiB9OworfTsKK0Rl
Y29yYXRpbmdCb3hTdHlsZUFuZE9mZnNldEZvclVuZGVybGluZSB1bmRlcmxpbmVTdHlsZUFuZE9m
ZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJh
dG9yJik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461451</attachid>
            <date>2022-08-06 18:06:55 -0700</date>
            <delta_ts>2022-08-06 18:40:21 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243619-20220806180654.patch</filename>
            <type>text/plain</type>
            <size>23526</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBmNGQ4OWJhOTRlYzJmMTliNjc3YzE2ZDNkNTc5NjVkYTE2YmY3ZGI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBT
YXQsIDYgQXVnIDIwMjIgMTg6MDQ6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IEludHJvZHVjZSBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94CiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNjE5CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KCkxldCdzIGdyYWIgdGhlIHVuZGVybGluZSBzdHlsZSAoYW5kIHRoZSBvZmZzZXQpIGZy
b20gdGhlIGRlY29yYXRpbmcgYm94IGFuZCBub3QgZnJvbSB0aGUgUmVuZGVyVGV4dCBpdHNlbGYu
ClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGNhc2VzIHdoZW4gd2Ugc3RhcnQgZHJhd2luZyBt
dWx0aXBsZSBsaW5lcyBmb3IgYSB0ZXh0IHJ1biB3aXRoIChwb3NzaWJseSkgZGlmZmVyZW50IHN0
eWxlLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25kLW9y
ZGVyLWRlc2NlbmRhbnRzLWV4cGVjdGVkLmh0bWw6IFByb2dyZXNzaW9uLCB0aGUgdW5kZXJsaW5l
IGNvbWVzIGZyb20gLm91dGVyIChkZWNvcmF0aW5nIGJveCkgYW5kIG5vdCBmcm9tIDxhPi4KKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbToKKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcDoKKFdlYkNvcmU6OnJlc29sdmVTdHlsZUZv
ck1hcmtlZFRleHQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwOgooV2ViQ29yZTo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZSk6CihX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9PSBjb25zdCk6
CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRp
b25zKToKKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludExpbmVUaHJv
dWdoKToKKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CihXZWJDb3JlOjptaW5Mb2dpY2FsVG9wRm9yVGV4
dERlY29yYXRpb25MaW5lKToKKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3Jh
dGlvbkxpbmUpOgooV2ViQ29yZTo6dGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVj
b3JhdGluZ0JveCk6CihXZWJDb3JlOjp0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QpOgooV2Vi
Q29yZTo6dW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyk6
CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIC4uLi9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAgfCAxMiArKy0tLQogLi4uL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwICAgICAgIHwgNTQgKysrKysrKysrKystLS0t
LS0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIHwgMTMg
KystLS0KIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgICB8IDUy
ICsrKysrKysrKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmggICAgIHwgIDcgKystCiAuLi4taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLWV4cGVj
dGVkLmh0bWwgfCAgMiArLQogNyBmaWxlcyBjaGFuZ2VkLCA4NyBpbnNlcnRpb25zKCspLCA1NyBk
ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21h
Yy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmluZGV4
IDZmYjM1YTc5MjczYy4uMzA3YzlkODM0MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0
V3JhcHBlck1hYy5tbQpAQCAtODQzLDEyICs4NDMsMTIgQEAgc3RhdGljIHZvaWQgQVhBdHRyaWJ1
dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5nLCBS
ZW4KIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkg
ewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNB
Y2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwotICAgICAg
ICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxp
dHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxl
cy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29sb3JU
ZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmNvbG9y
KS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRlY29yICYgVGV4dERl
Y29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRleHRB
dHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0
Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0
dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IpLmdl
dCgpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJT
dHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUsIGNv
Y29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5jb2xvcikuZ2V0KCksIHJhbmdl
KTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9T
dHlsZWRNYXJrZWRUZXh0LmNwcAppbmRleCA0ZmZlNjcyMTY1NDMuLmY1Njk5ZDhhZGRjZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcApAQCAtNTgs
MTYgKzU4LDE2IEBAIHN0YXRpYyBTdHlsZWRNYXJrZWRUZXh0IHJlc29sdmVTdHlsZUZvck1hcmtl
ZFRleHQoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCwKICAgICAgICAgICAgIGF1dG8gZGVj
b3JhdGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKIAogICAg
ICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKSkgewotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVu
ZGVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRp
b25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAg
ICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmNvbG9yID0gY29sb3I7Cisg
ICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmRlY29y
YXRpb25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkg
ewotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lQ29s
b3IgPSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5v
dmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgICAgIHN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmNvbG9yID0gY29sb3I7CisgICAgICAgICAgICAg
ICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7Ci0gICAgICAg
ICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvciA9IGNv
bG9yOwotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJv
dWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dERl
Y29yYXRpb25TdHlsZXMubGluZXRocm91Z2guY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAg
ICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgYnJl
YWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25Q
YWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuY3BwCmluZGV4IGY1ZTczOTcyMzlkMS4uMmIyNjQwMDk4NGQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTg4LDE5
ICsxODgsMTkgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9r
ZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKIHN0YXRpYyBpbmxpbmUgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShj
b25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCiB7CiAgICAgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7Ci0gICAgaWYgKHN0eWxlLnVuZGVy
bGluZUNvbG9yLmlzVmFsaWQoKSkKKyAgICBpZiAoc3R5bGUudW5kZXJsaW5lLmNvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKTsKLSAgICBpZiAoc3R5bGUub3ZlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCisgICAgaWYgKHN0
eWxlLm92ZXJsaW5lLmNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRl
eHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOwotICAgIGlmIChzdHlsZS5saW5ldGhyb3VnaENv
bG9yLmlzVmFsaWQoKSkKKyAgICBpZiAoc3R5bGUubGluZXRocm91Z2guY29sb3IuaXNWYWxpZCgp
KQogICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3Vn
aCk7CiAgICAgcmV0dXJuIGRlY29yYXRpb25zOwogfQogCiBib29sIFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6U3R5bGVzOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIHVuZGVybGluZUNvbG9yID09IG90aGVyLnVuZGVybGluZUNvbG9yICYmIG92ZXJs
aW5lQ29sb3IgPT0gb3RoZXIub3ZlcmxpbmVDb2xvciAmJiBsaW5ldGhyb3VnaENvbG9yID09IG90
aGVyLmxpbmV0aHJvdWdoQ29sb3IKLSAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUgPT0gb3RoZXIu
dW5kZXJsaW5lU3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGluZVN0eWxlICYm
IGxpbmV0aHJvdWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKKyAgICByZXR1cm4g
dW5kZXJsaW5lLmNvbG9yID09IG90aGVyLnVuZGVybGluZS5jb2xvciAmJiBvdmVybGluZS5jb2xv
ciA9PSBvdGhlci5vdmVybGluZS5jb2xvciAmJiBsaW5ldGhyb3VnaC5jb2xvciA9PSBvdGhlci5s
aW5ldGhyb3VnaC5jb2xvcgorICAgICAgICAmJiB1bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09
IG90aGVyLnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUgJiYgb3ZlcmxpbmUuZGVjb3JhdGlvblN0
eWxlID09IG90aGVyLm92ZXJsaW5lLmRlY29yYXRpb25TdHlsZSAmJiBsaW5ldGhyb3VnaC5kZWNv
cmF0aW9uU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2guZGVjb3JhdGlvblN0eWxlOwogfQogCiBU
ZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBJbmxpbmVJdGVyYXRvcjo6VGV4
dEJveEl0ZXJhdG9yIHRleHRCb3gsIGZsb2F0IHdpZHRoLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFk
b3csIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIGNvbG9yRmlsdGVyLCBTdHlsZXMgc3R5bGVPdmVy
cmlkZSkKQEAgLTI1Myw5ICsyNTMsOSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFp
bnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgICAg
ICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIGJvb2wgYXJlTGluZXNP
cGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpIHx8IG1fc3R5bGVzLnVuZGVybGluZUNvbG9y
LmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvci5p
c09wYXF1ZSgpKQotICAgICAgICAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29s
b3IuaXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcg
JiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVu
ZGVybGluZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAg
ICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpP
dmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAg
JiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Okxp
bmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvci5pc09wYXF1ZSgpKTsKIAog
ICAgIGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVz
T3BhcXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yOTcsMTggKzI5Nywy
OCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlv
bnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogCiAgICAgICAgIC8vIFRoZXNlIGRlY29yYXRp
b25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1YWxP
dmVyZmxvd0ZvckRlY29yYXRpb25zKCkuCiAgICAgICAgIGlmIChtX3RleHRCb3hEZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAg
IGF1dG8gb2Zmc2V0ID0gdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKG1fdGV4dEJv
eFN0eWxlLCBtX3RleHRCb3gpOwotICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5
bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlP
ZmZzZXQgOiAwOworICAgICAgICAgICAgYXV0byBvZmZzZXRBbmREZWNvcmF0aW5nQm94ID0gdW5k
ZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhtX3RleHRCb3hT
dHlsZSwgbV90ZXh0Qm94KTsKKworICAgICAgICAgICAgYXV0byBzdHlsZVRvVXNlID0gWyZdIHsK
KyAgICAgICAgICAgICAgICBpZiAoJm9mZnNldEFuZERlY29yYXRpbmdCb3guZGVjb3JhdGluZ0Jv
eCA9PSBtX3RleHRCb3gtPnJlbmRlcmVyKCkucGFyZW50KCkpCisgICAgICAgICAgICAgICAgICAg
IHJldHVybiBtX3N0eWxlcy51bmRlcmxpbmU7CisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1h
a2UgdGhpY2tuZXNzIHBhcnQgb2YgdGhlIGRlY29yYXRpb24gc3R5bGUuCisgICAgICAgICAgICAg
ICAgYXV0byBpc0ZpcnN0TGluZSA9IG1fdGV4dEJveC0+bGluZUJveCgpLT5pc0ZpcnN0KCk7Cisg
ICAgICAgICAgICAgICAgYXV0byYgZGVjb3JhdGluZ0JveFN0eWxlID0gaXNGaXJzdExpbmUgPyBv
ZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdCb3guZmlyc3RMaW5lU3R5bGUoKSA6IG9m
ZnNldEFuZERlY29yYXRpbmdCb3guZGVjb3JhdGluZ0JveC5zdHlsZSgpOworICAgICAgICAgICAg
ICAgIHJldHVybiBzdHlsZXNGb3JSZW5kZXJlcihvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29y
YXRpbmdCb3gsIGRlY29yYXRpbmdCb3hTdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCBp
c0ZpcnN0TGluZSkudW5kZXJsaW5lOworICAgICAgICAgICAgfSgpOworICAgICAgICAgICAgICAg
IAorICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IHN0eWxlVG9Vc2UuZGVjb3JhdGlvblN0
eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAg
ICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwotICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNl
dCArIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSwgbV9zdHlsZXMudW5k
ZXJsaW5lQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIG9mZnNldEFuZERl
Y29yYXRpbmdCb3gudW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCk7CisgICAgICAgICAgICBw
YWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIHN0eWxlVG9Vc2Uu
ZGVjb3JhdGlvblN0eWxlLCBzdHlsZVRvVXNlLmNvbG9yLCByZWN0KTsKICAgICAgICAgfQogICAg
ICAgICBpZiAobV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5v
dmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQg
OiAwOworICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLm92ZXJsaW5lLmRl
Y29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zmc2V0
IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNpemUo
bV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAgICAgICAgIGZsb2F0IGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVsKFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV90ZXh0Qm94U3R5bGUuY29t
cHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAg
ICAgICAgICAgcmVjdC5tb3ZlKDAsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHRE
ZWNvcmF0aW9uVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29y
YXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHls
ZSwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBwYWludERlY29y
YXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmUuZGVj
b3JhdGlvblN0eWxlLCBtX3N0eWxlcy5vdmVybGluZS5jb2xvciwgcmVjdCk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gcGFpbnQgdGhlIHNoYWRvdywgaGVuY2UgdGhl
IHRyYW5zcGFyZW50IGNvbG9yLCBub3QgdGhlIGFjdHVhbCBsaW5lLXRocm91Z2gsCkBAIC0zMjks
NyArMzM5LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50Rm9yZWdyb3VuZERl
Y29yYXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgYXV0byB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVsKG1fdGV4
dEJveFN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX3RleHRCb3hTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCksIG1fdGV4dEJveFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250
KCkpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludExpbmVUaHJvdWdoKG1fc3R5bGVz
LmxpbmV0aHJvdWdoQ29sb3IsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4pOwor
ICAgIHBhaW50TGluZVRocm91Z2gobV9zdHlsZXMubGluZXRocm91Z2guY29sb3IsIHRleHREZWNv
cmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4pOwogfQogCiB2b2lkIFRleHREZWNvcmF0aW9uUGFp
bnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29sb3IsIGZsb2F0IHRoaWNrbmVz
cywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4pCkBAIC0zNDIsNyArMzUyLDcgQEAgdm9p
ZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImIGNv
bG9yLCBmbG9hdCB0aGlja25lc3MKIAogICAgIG1fY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xv
cik7CiAKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0gbV9zdHlsZXMubGluZXRocm91
Z2hTdHlsZTsKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0gbV9zdHlsZXMubGluZXRo
cm91Z2guZGVjb3JhdGlvblN0eWxlOwogICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3Jh
dGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICBpZiAoc3R5bGUgPT0gVGV4dERl
Y29yYXRpb25TdHlsZTo6V2F2eSkKQEAgLTM2MiwxOCArMzcyLDE4IEBAIHN0YXRpYyB2b2lkIGNv
bGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVz
dWx0LCBjb25zCiAKICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMu
cmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAgICAgICAgICAgIHJlc3Vs
dC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZVN0
eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5jb2xv
ciA9IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICByZW1h
aW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSk7Ci0g
ICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVz
dWx0Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQu
b3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7CiAg
ICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5l
OjpMaW5lVGhyb3VnaCk7Ci0gICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hDb2xvciA9IGNv
bG9yOwotICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5
bGU7CisgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2guY29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5
bGU7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
VGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggOWRhM2Q0YjA0MmI0Li5mZjczY2Y4NmY1Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmgKQEAgLTUzLDEyICs1MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShj
b25zdCBTdHlsZXMmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxl
cyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOyB9CiAKLSAgICAgICAg
Q29sb3IgdW5kZXJsaW5lQ29sb3I7Ci0gICAgICAgIENvbG9yIG92ZXJsaW5lQ29sb3I7Ci0gICAg
ICAgIENvbG9yIGxpbmV0aHJvdWdoQ29sb3I7Ci0gICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUg
dW5kZXJsaW5lU3R5bGU7Ci0gICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgb3ZlcmxpbmVTdHls
ZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBsaW5ldGhyb3VnaFN0eWxlOworICAgICAg
ICBzdHJ1Y3QgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3IgeworICAgICAgICAgICAgQ29sb3IgY29s
b3I7CisgICAgICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpb25TdHlsZTsKKyAg
ICAgICAgfTsKKyAgICAgICAgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3IgdW5kZXJsaW5lOworICAg
ICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciBvdmVybGluZTsKKyAgICAgICAgRGVjb3JhdGlv
blN0eWxlQW5kQ29sb3IgbGluZXRocm91Z2g7CiAgICAgfTsKICAgICBzdGF0aWMgQ29sb3IgZGVj
b3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGljIFN0eWxlcyBzdHls
ZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCBPcHRpb25TZXQ8VGV4dERlY29yYXRp
b25MaW5lPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZhbHNl
LCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9Jbmxp
bmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDBmOTc2NGYxNDI0Ny4uZWZhMWIwYmRkOGMxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKQEAgLTU1LDcgKzU1
LDcgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGNvbnN0IFJlbmRlcklu
bGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0
YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2Fs
VG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIpCitzdGF0aWMgZmxv
YXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNhbFRvcCwgY29u
c3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0JveFJlbmRlcmVyKQogewogICAgIGF1dG8gbWlu
TG9naWNhbFRvcCA9IHRleHRSdW5Mb2dpY2FsVG9wOwogICAgIGZvciAoYXV0byBydW4gPSBsaW5l
Qm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkpIHsKQEAg
LTYzLDkgKzYzLDkgQEAgc3RhdGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlv
bkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGUKICAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3VsYXRpb25z
LgogCiAgICAgICAgIGlmICghcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCku
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQotICAgICAgICAgICAgY29u
dGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBj
aGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJlcnwncyBo
aWVyYXJjaHkuCisgICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlv
biBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBv
ZiB8ZGVjb3JhdGluZ0JveFJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KIAotICAgICAgICBpZiAoZGVj
b3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRpb25SZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSAm
JiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oKmRlY29y
YXRpb25SZW5kZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQorICAgICAgICBpZiAoZGVjb3JhdGlu
Z0JveFJlbmRlcmVyLmlzUmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9j
ayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGRlY29yYXRpbmdCb3hSZW5kZXJlciksICZydW4tPnJl
bmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHJ1bi0+aXNU
ZXh0KCkgfHwgcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHREZWNv
cmF0aW9uU2tpcEluazo6Tm9uZSkKQEAgLTc0LDcgKzc0LDcgQEAgc3RhdGljIGZsb2F0IG1pbkxv
Z2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVC
b3hJdGUKICAgICByZXR1cm4gbWluTG9naWNhbFRvcDsKIH0KIAotc3RhdGljIGZsb2F0IG1heExv
Z2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6Okxp
bmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxCb3R0b20sIGNvbnN0
IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlcikKK3N0YXRpYyBmbG9hdCBtYXhMb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5l
Qm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2FsQm90dG9tLCBjb25zdCBS
ZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIpCiB7CiAgICAgYXV0byBtYXhMb2dp
Y2FsQm90dG9tID0gdGV4dFJ1bkxvZ2ljYWxCb3R0b207CiAgICAgZm9yIChhdXRvIHJ1biA9IGxp
bmVCb3gtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewpA
QCAtODIsOSArODIsOSBAQCBzdGF0aWMgZmxvYXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNv
cmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveAogICAgICAgICAgICAgY29u
dGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlv
bnMuCiAKICAgICAgICAgaWYgKCFydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3Qo
KS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICBj
b250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhl
IGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdz
IGhpZXJhcmNoeS4KKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0
aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRl
IG9mIHxkZWNvcmF0aW5nQm94UmVuZGVyZXJ8J3MgaGllcmFyY2h5LgogCi0gICAgICAgIGlmIChk
ZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgp
ICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVj
b3JhdGlvblJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAgICAgIGlmIChkZWNvcmF0
aW5nQm94UmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJs
b2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGluZ0JveFJlbmRlcmVyKSwgJnJ1bi0+
cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAocnVuLT5p
c1RleHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERl
Y29yYXRpb25Ta2lwSW5rOjpOb25lKQpAQCAtMTExLDE4ICsxMTEsMTkgQEAgc3RhdGljIGNvbnN0
IFJlbmRlckVsZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKGNvbnN0
IFJlbmRlclRleHQKICAgICByZXR1cm4gY3VycmVudDsKIH0KIAorc3RhdGljIGZsb2F0IHRleHRS
dW5PZmZzZXRGcm9tQm90dG9tTW9zdFdpdGhpbkRlY29yYXRpbmdCb3goY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29uc3QgUmVuZGVyRWxlbWVudCYgZGVj
b3JhdGluZ0JveFJlbmRlcmVyLCBib29sIGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUsIGZsb2F0
IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkKK3sKKyAgICBp
ZiAoaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSkKKyAgICAgICAgcmV0dXJuIHRleHRCb3hMb2dp
Y2FsVG9wIC0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5lQm94LCB0ZXh0
Qm94TG9naWNhbFRvcCwgZGVjb3JhdGluZ0JveFJlbmRlcmVyKTsKKyAgICByZXR1cm4gbWF4TG9n
aWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShsaW5lQm94LCB0ZXh0Qm94TG9naWNhbEJv
dHRvbSwgZGVjb3JhdGluZ0JveFJlbmRlcmVyKSAtIHRleHRCb3hMb2dpY2FsQm90dG9tOworfQor
CiBzdGF0aWMgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGNvbnN0IElubGluZUl0
ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRl
cmVyLCBmbG9hdCB0ZXh0Qm94TG9naWNhbFRvcCwgZmxvYXQgdGV4dEJveExvZ2ljYWxCb3R0b20p
CiB7Ci0gICAgZmxvYXQgb2Zmc2V0ID0gMC5mOwotICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJl
ciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHJlbmRlcmVyLCBsaW5lQm94
LT5pc0ZpcnN0KCkpOwotICAgIGlmIChyZW5kZXJlci5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3Jp
dGluZ01vZGUoKSkgewotICAgICAgICBhdXRvIG1pbkxvZ2ljYWxUb3AgPSBtaW5Mb2dpY2FsVG9w
Rm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsVG9wLCBkZWNvcmF0
aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZzZXQgPSB0ZXh0Qm94TG9naWNhbFRvcCAtIG1pbkxv
Z2ljYWxUb3A7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgb2Zmc2V0ID0gbWF4TG9naWNhbEJvdHRv
bUZvclRleHREZWNvcmF0aW9uTGluZShsaW5lQm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgZGVj
b3JhdGlvblJlbmRlcmVyKTsKLSAgICAgICAgb2Zmc2V0IC09IHRleHRCb3hMb2dpY2FsQm90dG9t
OwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0OworICAgIGF1dG8qIGRlY29yYXRpbmdCb3hSZW5k
ZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHJlbmRlcmVyLCBsaW5l
Qm94LT5pc0ZpcnN0KCkpOworICAgIGlmICghZGVjb3JhdGluZ0JveFJlbmRlcmVyKQorICAgICAg
ICByZXR1cm4gMC5mOworICAgIHJldHVybiB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3RXaXRo
aW5EZWNvcmF0aW5nQm94KGxpbmVCb3gsICpkZWNvcmF0aW5nQm94UmVuZGVyZXIsIGRlY29yYXRp
bmdCb3hSZW5kZXJlci0+c3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCksIHRleHRC
b3hMb2dpY2FsVG9wLCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUg
ZmxvYXQgZGVmYXVsdEdhcChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCkBAIC0yOTAsMTggKzI5
MSwzMSBAQCBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3Qg
UmVuZGVyU3R5bGUmIHN0eWxlKQogICAgIHJldHVybiBjb21wdXRlZFZpc3VhbE92ZXJmbG93Rm9y
RGVjb3JhdGlvbnMoc3R5bGUsIHVuZGVybGluZU9mZnNldCk7CiB9CiAKLWZsb2F0IHVuZGVybGlu
ZU9mZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCitVbmRlcmxpbmVPZmZz
ZXRBbmREZWNvcmF0aW5nQm94IHVuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3hGb3JUZXh0
Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlLCBjb25zdCBJbmxpbmVJdGVyYXRv
cjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQogeworICAgIC8vIDEuIEZpbmQgdGhlIGRlY29y
YXRpbmcgYm94IGZvciB0aGlzIHRleHQgcnVuIChmb3Igcm9vdCBpbmxpbmUgYm94IGNvbnRlbnQs
IGl0J3MgdGhlIGNvbnRhaW5pbmcgYmxvY2ssIGZvciB0ZXh0IGluc2lkZSBhbiBpbmxpbmUgYm94
LCBpdCdzIG1vc3RseSB0aGUgcGFyZW50IGlubGluZSBib3ggaXRzZWxmKSAKKyAgICAvLyAyLiBj
b21wdXRlIHRoZSB1bmRlcmxpbmUgb2Zmc2V0LgorICAgIGF1dG8mIHRleHRCb3hSZW5kZXJlciA9
IHRleHRCb3gtPnJlbmRlcmVyKCk7CiAgICAgYXV0byBsaW5lQm94ID0gdGV4dEJveC0+bGluZUJv
eCgpOworICAgIGF1dG8gaXNGaXJzdExpbmUgPSBsaW5lQm94LT5pc0ZpcnN0KCk7CisgICAgYXV0
byogZGVjb3JhdGluZ0JveFJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29y
YXRpb24odGV4dEJveFJlbmRlcmVyLCBpc0ZpcnN0TGluZSk7CisgICAgaWYgKCFkZWNvcmF0aW5n
Qm94UmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIHJl
dHVybiB7IDAuZiwgKnRleHRCb3hSZW5kZXJlci5wYXJlbnQoKSB9OworICAgIH0KKwogICAgIGF1
dG8gdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBzdGQ6Om9wdGlvbmFsPFRleHRVbmRlcmxp
bmVQb3NpdGlvblVuZGVyPiB7IH07CiAgICAgYXV0byB1bmRlcmxpbmVQb3NpdGlvblZhbHVlID0g
cmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbihzdHlsZSwgbGluZUJveC0+YmFzZWxpbmVUeXBlKCkp
OwogCiAgICAgaWYgKHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPT0gVGV4dFVuZGVybGluZVBvc2l0
aW9uOjpVbmRlcikgewotICAgICAgICBhdXRvIHRleHRSdW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0
RnJvbUJvdHRvbU1vc3QobGluZUJveCwgdGV4dEJveC0+cmVuZGVyZXIoKSwgdGV4dEJveC0+bG9n
aWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOworICAgICAgICBhdXRvIHRleHRS
dW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QobGluZUJveCwgdGV4dEJveFJl
bmRlcmVyLCB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7
CiAgICAgICAgIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gVGV4dFVuZGVybGluZVBvc2l0
aW9uVW5kZXIgeyB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkgLSB0ZXh0Qm94LT5sb2dpY2FsVG9w
KCksIHRleHRSdW5PZmZzZXQgfTsKICAgICB9CiAKLSAgICByZXR1cm4gY29tcHV0ZWRVbmRlcmxp
bmVPZmZzZXQoeyBzdHlsZSwgdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSwgZGVmYXVsdEdhcChzdHls
ZSksIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIH0pOworICAgIHJldHVybiB7CisgICAgICAg
IGNvbXB1dGVkVW5kZXJsaW5lT2Zmc2V0KHsgc3R5bGUsIHVuZGVybGluZVBvc2l0aW9uVmFsdWUs
IGRlZmF1bHRHYXAoc3R5bGUpLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB9KSwKKyAgICAg
ICAgKmRlY29yYXRpbmdCb3hSZW5kZXJlcgorICAgIH07CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggMzg0MzIwOWQ2MjZiLi43YWZiMDdiMDhl
YjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCkBAIC0zMyw2
ICszMyw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBMZWdhY3lJbmxpbmVU
ZXh0Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3Mg
VGV4dFVuZGVybGluZU9mZnNldDsKIApAQCAtNjQsNiArNjUsMTAgQEAgR2x5cGhPdmVyZmxvdyB2
aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJik7CiBHbHlwaE92
ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmLCBG
b250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyKTsKIEdseXBoT3ZlcmZsb3cg
dmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBm
bG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVuZGVybGluZU9mZnNldEZvclRl
eHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpU
ZXh0Qm94SXRlcmF0b3ImKTsKK3N0cnVjdCBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94
IHsKKyAgICBmbG9hdCB1bmRlcmxpbmVPZmZzZXQgeyAwIH07CisgICAgY29uc3QgUmVuZGVyRWxl
bWVudCYgZGVjb3JhdGluZ0JveDsKK307CitVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94
IHVuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3hGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3Qg
UmVuZGVyU3R5bGUmLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3RleHQtZGVjb3JhdGlvbi1pbi1zZWNvbmQtb3JkZXItZGVzY2VuZGFudHMtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbi1pbi1zZWNvbmQtb3JkZXIt
ZGVzY2VuZGFudHMtZXhwZWN0ZWQuaHRtbAppbmRleCAwZTJmMTdkNTMzMzIuLmI4MmIxYWVmOTNj
OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9uLWluLXNl
Y29uZC1vcmRlci1kZXNjZW5kYW50cy1leHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3RleHQtZGVjb3JhdGlvbi1pbi1zZWNvbmQtb3JkZXItZGVzY2VuZGFudHMtZXhwZWN0
ZWQuaHRtbApAQCAtNCw0ICs0LDQgQEAKICAgPHA+CiAgIDxhIGhyZWY9Ind3dy5leGFtcGxlLmNv
bSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogbm9uZTsiPkFzIHRoZSBjaGlsZCBvZiBhbiBhYnNv
bHV0ZWx5IHBvc2l0aW9uZWQgYmxvY2ssIHRoaXMgbGluayBzaG91bGQgbm90IGJlIHVuZGVybGlu
ZWQ8L2E+CiA8L2Rpdj4KLTxhIGhyZWY9Ind3dy5leGFtcGxlLmNvbSI+QXMgdGhlIGNoaWxkIG9m
IGEgc3RhdGljYWxseSBwb3NpdGlvbmVkIGJsb2NrLCB0aGlzIGxpbmsgc2hvdWxkIGJlIHVuZGVy
bGluZWQ8L2E+Cis8YSBocmVmPSJ3d3cuZXhhbXBsZS5jb20iIHN0eWxlPSJ0ZXh0LWRlY29yYXRp
b24tY29sb3I6IGJsYWNrIj5BcyB0aGUgY2hpbGQgb2YgYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQg
YmxvY2ssIHRoaXMgbGluayBzaG91bGQgYmUgdW5kZXJsaW5lZDwvYT4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461453</attachid>
            <date>2022-08-06 18:40:23 -0700</date>
            <delta_ts>2022-08-06 21:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243619-20220806184023.patch</filename>
            <type>text/plain</type>
            <size>24767</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA0MjFkZmE5YTU1MGExOWM1YTIxMmExNDk2MDBjM2U0ZDE2Zjg4ZDdmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBT
YXQsIDYgQXVnIDIwMjIgMTg6MDQ6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IEludHJvZHVjZSBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94CiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNjE5CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KCkxldCdzIGdyYWIgdGhlIHVuZGVybGluZSBzdHlsZSAoYW5kIHRoZSBvZmZzZXQpIGZy
b20gdGhlIGRlY29yYXRpbmcgYm94IGFuZCBub3QgZnJvbSB0aGUgUmVuZGVyVGV4dCBpdHNlbGYu
ClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGNhc2VzIHdoZW4gd2Ugc3RhcnQgZHJhd2luZyBt
dWx0aXBsZSBsaW5lcyBmb3IgYSB0ZXh0IHJ1biB3aXRoIChwb3NzaWJseSkgZGlmZmVyZW50IHN0
eWxlLgoKKiBMYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25kLW9y
ZGVyLWRlc2NlbmRhbnRzLWV4cGVjdGVkLmh0bWw6IFByb2dyZXNzaW9uLCB0aGUgdW5kZXJsaW5l
IGNvbWVzIGZyb20gLm91dGVyIChkZWNvcmF0aW5nIGJveCkgYW5kIG5vdCBmcm9tIDxhPi4KKiBT
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlck1hYy5tbToKKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgoqIFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcDoKKFdlYkNvcmU6OnJlc29sdmVTdHlsZUZv
ck1hcmtlZFRleHQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwOgooV2ViQ29yZTo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZSk6CihX
ZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9PSBjb25zdCk6
CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29yYXRp
b25zKToKKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMpOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWludExpbmVUaHJv
dWdoKToKKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6CiogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgoqIFNvdXJjZS9XZWJDb3JlL3N0
eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CihXZWJDb3JlOjptaW5Mb2dpY2FsVG9wRm9yVGV4
dERlY29yYXRpb25MaW5lKToKKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3Jh
dGlvbkxpbmUpOgooV2ViQ29yZTo6dGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVj
b3JhdGluZ0JveCk6CihXZWJDb3JlOjp0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QpOgooV2Vi
Q29yZTo6dW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyk6
CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOiBEZWxldGVkLgoq
IFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0KIC4uLi9tYWMv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA0ICstCiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAgfCAxMiArKy0tLQogLi4uL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwICAgICAgIHwgNTQgKysrKysrKysrKystLS0t
LS0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIHwgMTMg
KystLS0KIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgICB8IDUy
ICsrKysrKysrKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmggICAgIHwgMTcgKysrLS0tCiAuLi4taW4tc2Vjb25kLW9yZGVyLWRlc2NlbmRhbnRzLWV4
cGVjdGVkLmh0bWwgfCAgMiArLQogNyBmaWxlcyBjaGFuZ2VkLCA5MSBpbnNlcnRpb25zKCspLCA2
MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5
L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCmlu
ZGV4IDZmYjM1YTc5MjczYy4uMzA3YzlkODM0MTlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlck1hYy5tbQpAQCAtODQzLDEyICs4NDMsMTIgQEAgc3RhdGljIHZvaWQgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRTdHlsZShOU011dGFibGVBdHRyaWJ1dGVkU3RyaW5nKiBhdHRyU3RyaW5n
LCBSZW4KIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGlu
ZSkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywg
TlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwotICAg
ICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2li
aWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0
eWxlcy51bmRlcmxpbmVDb2xvcikuZ2V0KCksIHJhbmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmli
dXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5VW5kZXJsaW5lQ29s
b3JUZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmNv
bG9yKS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKGRlY29yICYgVGV4
dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgewogICAgICAgICAgICAgQVhBdHRyaWJ1dGVT
dHJpbmdTZXROdW1iZXIoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaFRl
eHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKLSAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5n
U2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4
dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3Ip
LmdldCgpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0
dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRleHRBdHRyaWJ1dGUs
IGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5jb2xvcikuZ2V0KCksIHJh
bmdlKTsKICAgICAgICAgfQogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9TdHlsZWRNYXJrZWRUZXh0LmNwcAppbmRleCA0ZmZlNjcyMTY1NDMuLmY1Njk5ZDhhZGRjZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcApAQCAt
NTgsMTYgKzU4LDE2IEBAIHN0YXRpYyBTdHlsZWRNYXJrZWRUZXh0IHJlc29sdmVTdHlsZUZvck1h
cmtlZFRleHQoY29uc3QgTWFya2VkVGV4dCYgbWFya2VkVGV4dCwKICAgICAgICAgICAgIGF1dG8g
ZGVjb3JhdGlvbnMgPSByZW5kZXJTdHlsZS0+dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKTsKIAog
ICAgICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6
VW5kZXJsaW5lKSkgewotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVz
LnVuZGVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29y
YXRpb25TdHlsZXMudW5kZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAg
ICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmNvbG9yID0gY29sb3I7
CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lLmRl
Y29yYXRpb25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAg
ICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5l
KSkgewotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5l
Q29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxl
cy5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgICAgIHN0eWxl
LnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmNvbG9yID0gY29sb3I7CisgICAgICAgICAg
ICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxl
ID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7Ci0gICAg
ICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvciA9
IGNvbG9yOwotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0
aHJvdWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4
dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2guY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAg
ICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAg
YnJlYWs7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRp
b25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBh
aW50ZXIuY3BwCmluZGV4IGY1ZTczOTcyMzlkMS4uOTRmMjc5MTAxZDU2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTg4
LDE5ICsxODgsMTkgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0
cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKIHN0YXRpYyBpbmxpbmUgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHls
ZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCiB7CiAgICAgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7Ci0gICAgaWYgKHN0eWxlLnVu
ZGVybGluZUNvbG9yLmlzVmFsaWQoKSkKKyAgICBpZiAoc3R5bGUudW5kZXJsaW5lLmNvbG9yLmlz
VmFsaWQoKSkKICAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUub3ZlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCisgICAgaWYg
KHN0eWxlLm92ZXJsaW5lLmNvbG9yLmlzVmFsaWQoKSkKICAgICAgICAgZGVjb3JhdGlvbnMuYWRk
KFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOwotICAgIGlmIChzdHlsZS5saW5ldGhyb3Vn
aENvbG9yLmlzVmFsaWQoKSkKKyAgICBpZiAoc3R5bGUubGluZXRocm91Z2guY29sb3IuaXNWYWxp
ZCgpKQogICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhy
b3VnaCk7CiAgICAgcmV0dXJuIGRlY29yYXRpb25zOwogfQogCiBib29sIFRleHREZWNvcmF0aW9u
UGFpbnRlcjo6U3R5bGVzOjpvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIHVuZGVybGluZUNvbG9yID09IG90aGVyLnVuZGVybGluZUNvbG9yICYmIG92
ZXJsaW5lQ29sb3IgPT0gb3RoZXIub3ZlcmxpbmVDb2xvciAmJiBsaW5ldGhyb3VnaENvbG9yID09
IG90aGVyLmxpbmV0aHJvdWdoQ29sb3IKLSAgICAgICAgJiYgdW5kZXJsaW5lU3R5bGUgPT0gb3Ro
ZXIudW5kZXJsaW5lU3R5bGUgJiYgb3ZlcmxpbmVTdHlsZSA9PSBvdGhlci5vdmVybGluZVN0eWxl
ICYmIGxpbmV0aHJvdWdoU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2hTdHlsZTsKKyAgICByZXR1
cm4gdW5kZXJsaW5lLmNvbG9yID09IG90aGVyLnVuZGVybGluZS5jb2xvciAmJiBvdmVybGluZS5j
b2xvciA9PSBvdGhlci5vdmVybGluZS5jb2xvciAmJiBsaW5ldGhyb3VnaC5jb2xvciA9PSBvdGhl
ci5saW5ldGhyb3VnaC5jb2xvcgorICAgICAgICAmJiB1bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxl
ID09IG90aGVyLnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUgJiYgb3ZlcmxpbmUuZGVjb3JhdGlv
blN0eWxlID09IG90aGVyLm92ZXJsaW5lLmRlY29yYXRpb25TdHlsZSAmJiBsaW5ldGhyb3VnaC5k
ZWNvcmF0aW9uU3R5bGUgPT0gb3RoZXIubGluZXRocm91Z2guZGVjb3JhdGlvblN0eWxlOwogfQog
CiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBJbmxpbmVJdGVyYXRvcjo6
VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gsIGZsb2F0IHdpZHRoLCBjb25zdCBTaGFkb3dEYXRhKiBz
aGFkb3csIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIGNvbG9yRmlsdGVyLCBTdHlsZXMgc3R5bGVP
dmVycmlkZSkKQEAgLTI1Myw5ICsyNTMsOSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6
cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAg
ICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAotICAgIGJvb2wgYXJlTGlu
ZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpIHx8IG1fc3R5bGVzLnVuZGVybGluZUNv
bG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmVDb2xv
ci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5z
KFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdo
Q29sb3IuaXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRp
bmcgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLmlzT3BhcXVlKCkpCisgICAg
ICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IuaXNPcGFxdWUoKSkKKyAgICAg
ICAgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6
OkxpbmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvci5pc09wYXF1ZSgpKTsK
IAogICAgIGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxp
bmVzT3BhcXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yOTcsMTggKzI5
NywyNiBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3Jh
dGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogCiAgICAgICAgIC8vIFRoZXNlIGRlY29y
YXRpb25zIHNob3VsZCBtYXRjaCB0aGUgdmlzdWFsIG92ZXJmbG93cyBjb21wdXRlZCBpbiB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKCkuCiAgICAgICAgIGlmIChtX3RleHRCb3hEZWNvcmF0
aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKLSAgICAgICAg
ICAgIGF1dG8gb2Zmc2V0ID0gdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKG1fdGV4
dEJveFN0eWxlLCBtX3RleHRCb3gpOwotICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1f
c3R5bGVzLnVuZGVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dh
dnlPZmZzZXQgOiAwOwotICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZs
b2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwotICAgICAgICAgICAg
cmVjdC5tb3ZlKDAsIG9mZnNldCArIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNv
cmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBtX3N0eWxlcy51bmRlcmxpbmVT
dHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgYXV0byBv
ZmZzZXRBbmREZWNvcmF0aW5nQm94ID0gdW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZv
clRleHRCb3hQYWludGluZyhtX3RleHRCb3hTdHlsZSwgbV90ZXh0Qm94KTsKKyAgICAgICAgICAg
IGF1dG8gc3R5bGVUb1VzZSA9IFsmXSB7CisgICAgICAgICAgICAgICAgaWYgKCZvZmZzZXRBbmRE
ZWNvcmF0aW5nQm94LmRlY29yYXRpbmdCb3ggPT0gbV90ZXh0Qm94LT5yZW5kZXJlcigpLnBhcmVu
dCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9zdHlsZXMudW5kZXJsaW5lOworICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaWNrbmVzcyBwYXJ0IG9mIHRoZSBkZWNvcmF0
aW9uIHN0eWxlLgorICAgICAgICAgICAgICAgIGF1dG8gaXNGaXJzdExpbmUgPSBtX3RleHRCb3gt
PmxpbmVCb3goKS0+aXNGaXJzdCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGRlY29yYXRpbmdC
b3hTdHlsZSA9IGlzRmlyc3RMaW5lID8gb2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0aW5n
Qm94LmZpcnN0TGluZVN0eWxlKCkgOiBvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdC
b3guc3R5bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGVzRm9yUmVuZGVyZXIob2Zm
c2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0aW5nQm94LCBkZWNvcmF0aW5nQm94U3R5bGUudGV4
dERlY29yYXRpb25zSW5FZmZlY3QoKSwgaXNGaXJzdExpbmUpLnVuZGVybGluZTsKKyAgICAgICAg
ICAgIH0oKTsKKyAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9IHN0eWxlVG9Vc2UuZGVjb3Jh
dGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAw
LmY7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZVJlY3QgPSBGbG9hdFJlY3QgeyBsb2NhbE9y
aWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSB9OworICAg
ICAgICAgICAgdW5kZXJsaW5lUmVjdC5tb3ZlKDAuZiwgb2Zmc2V0QW5kRGVjb3JhdGluZ0JveC51
bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgc3R5bGVUb1VzZS5kZWNvcmF0aW9uU3R5
bGUsIHN0eWxlVG9Vc2UuY29sb3IsIHVuZGVybGluZVJlY3QpOwogICAgICAgICB9CiAgICAgICAg
IGlmIChtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92
ZXJsaW5lKSkgewotICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLm92ZXJs
aW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7
CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmUuZGVjb3Jh
dGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAw
OwogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dp
ZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgZmxvYXQgYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERlY29yYXRpb25U
aGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX3RleHRCb3hTdHlsZS5jb21wdXRl
ZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAgICAg
ICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERlY29y
YXRpb25UaGlja25lc3MgLSB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZVN0eWxlLCBt
X3N0eWxlcy5vdmVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZS5kZWNvcmF0
aW9uU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lLmNvbG9yLCByZWN0KTsKICAgICAgICAgfQogCiAg
ICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBwYWludCB0aGUgc2hhZG93LCBoZW5jZSB0aGUgdHJh
bnNwYXJlbnQgY29sb3IsIG5vdCB0aGUgYWN0dWFsIGxpbmUtdGhyb3VnaCwKQEAgLTMyOSw3ICsz
MzcsNyBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3Jh
dGlvbnMoY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZwogICAgICAgICByZXR1cm47CiAKICAgICBh
dXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0Qm94
U3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSwgbV90ZXh0Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKSks
IG1fZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50TGluZVRocm91Z2gobV9zdHlsZXMubGlu
ZXRocm91Z2hDb2xvciwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGJveE9yaWdpbik7CisgICAg
cGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvciwgdGV4dERlY29yYXRp
b25UaGlja25lc3MsIGJveE9yaWdpbik7CiB9CiAKIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVy
OjpwYWludExpbmVUaHJvdWdoKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgdGhpY2tuZXNzLCBj
b25zdCBGbG9hdFBvaW50JiBsb2NhbE9yaWdpbikKQEAgLTM0Miw3ICszNTAsNyBAQCB2b2lkIFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29sb3Is
IGZsb2F0IHRoaWNrbmVzcwogCiAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsK
IAotICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3VnaFN0
eWxlOworICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3Vn
aC5kZWNvcmF0aW9uU3R5bGU7CiAgICAgYXV0byBzdHJva2VTdHlsZSA9IHRleHREZWNvcmF0aW9u
U3R5bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAogICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3Jh
dGlvblN0eWxlOjpXYXZ5KQpAQCAtMzYyLDE4ICszNzAsMTggQEAgc3RhdGljIHZvaWQgY29sbGVj
dFN0eWxlc0ZvclJlbmRlcmVyKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1bHQs
IGNvbnMKIAogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1v
dmUoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwotICAgICAgICAgICAgcmVzdWx0LnVu
ZGVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lLmNvbG9yID0g
Y29sb3I7CisgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9IGRl
Y29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKICAgICAgICAgICAgIHJlbWFpbmlu
Z0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKLSAgICAg
ICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICByZXN1bHQu
b3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgIHJlc3VsdC5vdmVy
bGluZS5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lLmRlY29yYXRp
b25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3Jh
dGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAgICAg
ICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6Okxp
bmVUaHJvdWdoKTsKLSAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7
Ci0gICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsK
KyAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAgICAg
ICAgcmVzdWx0LmxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsK
ICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA5ZGEzZDRiMDQyYjQuLmZmNzNjZjg2ZjUyOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaApA
QCAtNTMsMTIgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0
IFN0eWxlcyYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVzJiBv
dGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgICAgICBDb2xv
ciB1bmRlcmxpbmVDb2xvcjsKLSAgICAgICAgQ29sb3Igb3ZlcmxpbmVDb2xvcjsKLSAgICAgICAg
Q29sb3IgbGluZXRocm91Z2hDb2xvcjsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRl
cmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBvdmVybGluZVN0eWxlOwot
ICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGxpbmV0aHJvdWdoU3R5bGU7CisgICAgICAgIHN0
cnVjdCBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB7CisgICAgICAgICAgICBDb2xvciBjb2xvcjsK
KyAgICAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlOworICAgICAg
ICB9OworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB1bmRlcmxpbmU7CisgICAgICAg
IERlY29yYXRpb25TdHlsZUFuZENvbG9yIG92ZXJsaW5lOworICAgICAgICBEZWNvcmF0aW9uU3R5
bGVBbmRDb2xvciBsaW5ldGhyb3VnaDsKICAgICB9OwogICAgIHN0YXRpYyBDb2xvciBkZWNvcmF0
aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0Zv
clJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxp
bmU+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBz
ZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRl
eHRCb3hTdHlsZS5jcHAKaW5kZXggMGY5NzY0ZjE0MjQ3Li5lZjRmYmQxMjhhMGEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtNTUsNyArNTUsNyBA
QCBzdGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soY29uc3QgUmVuZGVySW5saW5l
JiBhbmNlc3RvciwgY29uc3QgUmVuZGVyTwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGlj
IGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxUb3As
IGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlcikKK3N0YXRpYyBmbG9hdCBt
aW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpM
aW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2FsVG9wLCBjb25zdCBS
ZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIpCiB7CiAgICAgYXV0byBtaW5Mb2dp
Y2FsVG9wID0gdGV4dFJ1bkxvZ2ljYWxUb3A7CiAgICAgZm9yIChhdXRvIHJ1biA9IGxpbmVCb3gt
PmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewpAQCAtNjMs
OSArNjMsOSBAQCBzdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGlu
ZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZQogICAgICAgICAgICAgY29udGludWU7
IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAK
ICAgICAgICAgaWYgKCFydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5jb250
YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICBjb250aW51
ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxk
LCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdzIGhpZXJh
cmNoeS4KKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlz
bid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxk
ZWNvcmF0aW5nQm94UmVuZGVyZXJ8J3MgaGllcmFyY2h5LgogCi0gICAgICAgIGlmIChkZWNvcmF0
aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYmICFp
c0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3JhdGlv
blJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAgICAgIGlmIChkZWNvcmF0aW5nQm94
UmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRv
d25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGluZ0JveFJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVy
ZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAocnVuLT5pc1RleHQo
KSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERlY29yYXRp
b25Ta2lwSW5rOjpOb25lKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgZmxvYXQgbWluTG9naWNh
bFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0
ZQogICAgIHJldHVybiBtaW5Mb2dpY2FsVG9wOwogfQogCi1zdGF0aWMgZmxvYXQgbWF4TG9naWNh
bEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNhbEJvdHRvbSwgY29uc3QgUmVu
ZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyKQorc3RhdGljIGZsb2F0IG1heExvZ2ljYWxC
b3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJ
dGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxCb3R0b20sIGNvbnN0IFJlbmRl
ckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlcikKIHsKICAgICBhdXRvIG1heExvZ2ljYWxC
b3R0b20gPSB0ZXh0UnVuTG9naWNhbEJvdHRvbTsKICAgICBmb3IgKGF1dG8gcnVuID0gbGluZUJv
eC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CkBAIC04
Miw5ICs4Miw5IEBAIHN0YXRpYyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRp
b25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94CiAgICAgICAgICAgICBjb250aW51
ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4K
IAogICAgICAgICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNv
bnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgIGNvbnRp
bnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hp
bGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW9uUmVuZGVyZXJ8J3MgaGll
cmFyY2h5LgorICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24g
aXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2Yg
fGRlY29yYXRpbmdCb3hSZW5kZXJlcnwncyBoaWVyYXJjaHkuCiAKLSAgICAgICAgaWYgKGRlY29y
YXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkgJiYg
IWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpkZWNvcmF0
aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKGRlY29yYXRpbmdC
b3hSZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2so
ZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW5nQm94UmVuZGVyZXIpLCAmcnVuLT5yZW5k
ZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChydW4tPmlzVGV4
dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9PSBUZXh0RGVjb3Jh
dGlvblNraXBJbms6Ok5vbmUpCkBAIC0xMTEsMTggKzExMSwxOSBAQCBzdGF0aWMgY29uc3QgUmVu
ZGVyRWxlbWVudCogZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVu
ZGVyVGV4dAogICAgIHJldHVybiBjdXJyZW50OwogfQogCitzdGF0aWMgZmxvYXQgdGV4dFJ1bk9m
ZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBjb25zdCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0
aW5nQm94UmVuZGVyZXIsIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSwgZmxvYXQgdGV4
dEJveExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKQoreworICAgIGlmIChp
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKQorICAgICAgICByZXR1cm4gdGV4dEJveExvZ2ljYWxU
b3AgLSBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hM
b2dpY2FsVG9wLCBkZWNvcmF0aW5nQm94UmVuZGVyZXIpOworICAgIHJldHVybiBtYXhMb2dpY2Fs
Qm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsQm90dG9t
LCBkZWNvcmF0aW5nQm94UmVuZGVyZXIpIC0gdGV4dEJveExvZ2ljYWxCb3R0b207Cit9CisKIHN0
YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QoY29uc3QgSW5saW5lSXRlcmF0
b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIs
IGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSkKIHsK
LSAgICBmbG9hdCBvZmZzZXQgPSAwLmY7Ci0gICAgYXV0byogZGVjb3JhdGlvblJlbmRlcmVyID0g
ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24ocmVuZGVyZXIsIGxpbmVCb3gtPmlz
Rmlyc3QoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuaXNGbGlwcGVkTGluZXNXcml0aW5n
TW9kZSgpKSB7Ci0gICAgICAgIGF1dG8gbWluTG9naWNhbFRvcCA9IG1pbkxvZ2ljYWxUb3BGb3JU
ZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJveExvZ2ljYWxUb3AsIGRlY29yYXRpb25S
ZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldCA9IHRleHRCb3hMb2dpY2FsVG9wIC0gbWluTG9naWNh
bFRvcDsKLSAgICB9IGVsc2UgewotICAgICAgICBvZmZzZXQgPSBtYXhMb2dpY2FsQm90dG9tRm9y
VGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0
aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZzZXQgLT0gdGV4dEJveExvZ2ljYWxCb3R0b207Ci0g
ICAgfQotICAgIHJldHVybiBvZmZzZXQ7CisgICAgYXV0byogZGVjb3JhdGluZ0JveFJlbmRlcmVy
ID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24ocmVuZGVyZXIsIGxpbmVCb3gt
PmlzRmlyc3QoKSk7CisgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXIpCisgICAgICAgIHJl
dHVybiAwLmY7CisgICAgcmV0dXJuIHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdFdpdGhpbkRl
Y29yYXRpbmdCb3gobGluZUJveCwgKmRlY29yYXRpbmdCb3hSZW5kZXJlciwgZGVjb3JhdGluZ0Jv
eFJlbmRlcmVyLT5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSwgdGV4dEJveExv
Z2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIH0KIAogc3RhdGljIGlubGluZSBmbG9h
dCBkZWZhdWx0R2FwKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKQEAgLTI5MCwxOCArMjkxLDMx
IEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlzdWFsT3ZlcmZsb3dGb3JEZWNv
cmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAotZmxvYXQgdW5kZXJsaW5lT2Zm
c2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwgY29uc3QgSW5s
aW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKK1VuZGVybGluZU9mZnNldEFu
ZERlY29yYXRpbmdCb3ggdW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQ
YWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpU
ZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCiB7CisgICAgLy8gMS4gRmluZCB0aGUgZGVjb3JhdGlu
ZyBib3ggZm9yIHRoaXMgdGV4dCBydW4gKGZvciByb290IGlubGluZSBib3ggY29udGVudCwgaXQn
cyB0aGUgY29udGFpbmluZyBibG9jaywgZm9yIHRleHQgaW5zaWRlIGFuIGlubGluZSBib3gsIGl0
J3MgbW9zdGx5IHRoZSBwYXJlbnQgaW5saW5lIGJveCBpdHNlbGYpCisgICAgLy8gMi4gY29tcHV0
ZSB0aGUgdW5kZXJsaW5lIG9mZnNldC4KKyAgICBhdXRvJiB0ZXh0Qm94UmVuZGVyZXIgPSB0ZXh0
Qm94LT5yZW5kZXJlcigpOwogICAgIGF1dG8gbGluZUJveCA9IHRleHRCb3gtPmxpbmVCb3goKTsK
KyAgICBhdXRvIGlzRmlyc3RMaW5lID0gbGluZUJveC0+aXNGaXJzdCgpOworICAgIGF1dG8qIGRl
Y29yYXRpbmdCb3hSZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRleHREZWNvcmF0aW9u
KHRleHRCb3hSZW5kZXJlciwgaXNGaXJzdExpbmUpOworICAgIGlmICghZGVjb3JhdGluZ0JveFJl
bmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICByZXR1cm4g
eyAwLmYsICp0ZXh0Qm94UmVuZGVyZXIucGFyZW50KCkgfTsKKyAgICB9CisKICAgICBhdXRvIHRl
eHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25hbDxUZXh0VW5kZXJsaW5lUG9z
aXRpb25VbmRlcj4geyB9OwogICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29s
dmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIGxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpKTsKIAog
ICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6
VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZyb21C
b3R0b21Nb3N0KGxpbmVCb3gsIHRleHRCb3gtPnJlbmRlcmVyKCksIHRleHRCb3gtPmxvZ2ljYWxU
b3AoKSwgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuT2Zm
c2V0ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGxpbmVCb3gsIHRleHRCb3hSZW5kZXJl
ciwgdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwogICAg
ICAgICB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVu
ZGVyIHsgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0
ZXh0UnVuT2Zmc2V0IH07CiAgICAgfQogCi0gICAgcmV0dXJuIGNvbXB1dGVkVW5kZXJsaW5lT2Zm
c2V0KHsgc3R5bGUsIHVuZGVybGluZVBvc2l0aW9uVmFsdWUsIGRlZmF1bHRHYXAoc3R5bGUpLCB0
ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB9KTsKKyAgICByZXR1cm4geworICAgICAgICBjb21w
dXRlZFVuZGVybGluZU9mZnNldCh7IHN0eWxlLCB1bmRlcmxpbmVQb3NpdGlvblZhbHVlLCBkZWZh
dWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgfSksCisgICAgICAgICpk
ZWNvcmF0aW5nQm94UmVuZGVyZXIKKyAgICB9OwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IDM4NDMyMDlkNjI2Yi4uZWQ4ODlkZjViMjUzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMzMsMzcgKzMz
LDQyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBMZWdhY3lJbmxpbmVUZXh0
Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVGV4
dFVuZGVybGluZU9mZnNldDsKIAogaW5saW5lIGZsb2F0IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlv
bigpCiB7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDEuZjsKIH0KIAogc3RydWN0IFdhdnlT
dHJva2VQYXJhbWV0ZXJzIHsKICAgICAvLyBEaXN0YW5jZSBiZXR3ZWVuIGRlY29yYXRpb24ncyBh
eGlzIGFuZCBCZXppZXIgY3VydmUncyBjb250cm9sIHBvaW50cy4KICAgICAvLyBUaGUgaGVpZ2h0
IG9mIHRoZSBjdXJ2ZSBpcyBiYXNlZCBvbiB0aGlzIGRpc3RhbmNlLiBJbmNyZWFzZXMgdGhlIGN1
cnZlJ3MgaGVpZ2h0CiAgICAgLy8gYXMgZm9udFNpemUgaW5jcmVhc2VzIHRvIG1ha2UgdGhlIGN1
cnZlIGxvb2sgYmV0dGVyLgotICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlIHsgMCB9Owor
ICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlIHsgMC5mIH07CiAKICAgICAvLyBJbmNyZW1l
bnQgdXNlZCB0byBmb3JtIHRoZSBkaWFtb25kIHNoYXBlIGJldHdlZW4gc3RhcnQgcG9pbnQgKHAx
KSwgY29udHJvbAogICAgIC8vIHBvaW50cyBhbmQgZW5kIHBvaW50IChwMikgYWxvbmcgdGhlIGF4
aXMgb2YgdGhlIGRlY29yYXRpb24uIFRoZSBjdXJ2ZSBnZXRzCiAgICAgLy8gd2lkZXIgYXMgZm9u
dCBzaXplIGluY3JlYXNlcy4KLSAgICBmbG9hdCBzdGVwIHsgMCB9OworICAgIGZsb2F0IHN0ZXAg
eyAwLmYgfTsKIH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVy
cyhmbG9hdCBmb250U2l6ZSk7CiAKIHN0cnVjdCBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7
Ci0gICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQgeyAwIH07CisgICAgZmxvYXQgdGV4dFJ1
bkxvZ2ljYWxIZWlnaHQgeyAwLmYgfTsKICAgICAvLyBUaGlzIG9mZnNldCB2YWx1ZSBpcyB0aGUg
ZGlzdGFuY2UgYmV0d2VlbiB0aGUgY3VycmVudCB0ZXh0IHJ1bidzIGxvZ2ljYWwgYm90dG9tIGFu
ZCB0aGUgbG93ZXN0IHBvc2l0aW9uIG9mIGFsbCB0aGUgdGV4dCBydW5zCiAgICAgLy8gb24gbGlu
ZSB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBkZWNvcmF0aW9uIGJveC4KLSAgICBmbG9hdCB0ZXh0
UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QgeyAwIH07CisgICAgZmxvYXQgdGV4dFJ1bk9mZnNldEZy
b21Cb3R0b21Nb3N0IHsgMC5mIH07CiB9OwogR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92
ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmLCBGb250QmFzZWxpbmUsIFRl
eHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyKTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiwgY29u
c3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9n
aWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3Im
KTsKK3N0cnVjdCBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94IHsKKyAgICBmbG9hdCB1
bmRlcmxpbmVPZmZzZXQgeyAwLmYgfTsKKyAgICBjb25zdCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0
aW5nQm94OworfTsKK1VuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3ggdW5kZXJsaW5lT2Zm
c2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYs
IGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImKTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0
aW9uLWluLXNlY29uZC1vcmRlci1kZXNjZW5kYW50cy1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9uLWluLXNlY29uZC1vcmRlci1kZXNjZW5kYW50cy1l
eHBlY3RlZC5odG1sCmluZGV4IDBlMmYxN2Q1MzMzMi4uYjgyYjFhZWY5M2M5IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy90ZXh0LWRlY29yYXRpb24taW4tc2Vjb25kLW9yZGVyLWRl
c2NlbmRhbnRzLWV4cGVjdGVkLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvdGV4dC1k
ZWNvcmF0aW9uLWluLXNlY29uZC1vcmRlci1kZXNjZW5kYW50cy1leHBlY3RlZC5odG1sCkBAIC00
LDQgKzQsNCBAQAogICA8cD4KICAgPGEgaHJlZj0id3d3LmV4YW1wbGUuY29tIiBzdHlsZT0idGV4
dC1kZWNvcmF0aW9uOiBub25lOyI+QXMgdGhlIGNoaWxkIG9mIGFuIGFic29sdXRlbHkgcG9zaXRp
b25lZCBibG9jaywgdGhpcyBsaW5rIHNob3VsZCBub3QgYmUgdW5kZXJsaW5lZDwvYT4KIDwvZGl2
PgotPGEgaHJlZj0id3d3LmV4YW1wbGUuY29tIj5BcyB0aGUgY2hpbGQgb2YgYSBzdGF0aWNhbGx5
IHBvc2l0aW9uZWQgYmxvY2ssIHRoaXMgbGluayBzaG91bGQgYmUgdW5kZXJsaW5lZDwvYT4KKzxh
IGhyZWY9Ind3dy5leGFtcGxlLmNvbSIgc3R5bGU9InRleHQtZGVjb3JhdGlvbi1jb2xvcjogYmxh
Y2siPkFzIHRoZSBjaGlsZCBvZiBhIHN0YXRpY2FsbHkgcG9zaXRpb25lZCBibG9jaywgdGhpcyBs
aW5rIHNob3VsZCBiZSB1bmRlcmxpbmVkPC9hPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461454</attachid>
            <date>2022-08-06 18:42:11 -0700</date>
            <delta_ts>2022-08-06 21:19:52 -0700</delta_ts>
            <desc>patch for EWS (including patch from bug 243632)</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>31157</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbi1pbi1zZWNv
bmQtb3JkZXItZGVzY2VuZGFudHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3RleHQtZGVjb3JhdGlvbi1pbi1zZWNvbmQtb3JkZXItZGVzY2VuZGFudHMtZXhwZWN0ZWQuaHRt
bAppbmRleCAwZTJmMTdkNTMzMzIuLmI4MmIxYWVmOTNjOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvZmFzdC9jc3MvdGV4dC1kZWNvcmF0aW9uLWluLXNlY29uZC1vcmRlci1kZXNjZW5kYW50cy1l
eHBlY3RlZC5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3RleHQtZGVjb3JhdGlvbi1p
bi1zZWNvbmQtb3JkZXItZGVzY2VuZGFudHMtZXhwZWN0ZWQuaHRtbApAQCAtNCw0ICs0LDQgQEAK
ICAgPHA+CiAgIDxhIGhyZWY9Ind3dy5leGFtcGxlLmNvbSIgc3R5bGU9InRleHQtZGVjb3JhdGlv
bjogbm9uZTsiPkFzIHRoZSBjaGlsZCBvZiBhbiBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgYmxvY2ss
IHRoaXMgbGluayBzaG91bGQgbm90IGJlIHVuZGVybGluZWQ8L2E+CiA8L2Rpdj4KLTxhIGhyZWY9
Ind3dy5leGFtcGxlLmNvbSI+QXMgdGhlIGNoaWxkIG9mIGEgc3RhdGljYWxseSBwb3NpdGlvbmVk
IGJsb2NrLCB0aGlzIGxpbmsgc2hvdWxkIGJlIHVuZGVybGluZWQ8L2E+Cis8YSBocmVmPSJ3d3cu
ZXhhbXBsZS5jb20iIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb24tY29sb3I6IGJsYWNrIj5BcyB0aGUg
Y2hpbGQgb2YgYSBzdGF0aWNhbGx5IHBvc2l0aW9uZWQgYmxvY2ssIHRoaXMgbGluayBzaG91bGQg
YmUgdW5kZXJsaW5lZDwvYT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxp
dHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
aW5kZXggNmZiMzVhNzkyNzNjLi4zMDdjOWQ4MzQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlP
YmplY3RXcmFwcGVyTWFjLm1tCkBAIC04NDMsMTIgKzg0MywxMiBAQCBzdGF0aWMgdm9pZCBBWEF0
dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJp
bmcsIFJlbgogCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5n
LCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0g
ICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNz
aWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9u
U3R5bGVzLnVuZGVybGluZUNvbG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRy
aWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVD
b2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUu
Y29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGVjb3IgJiBU
ZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0
ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdo
VGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJp
bmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JU
ZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xv
cikuZ2V0KCksIHJhbmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3Io
YXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0
ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yKS5nZXQoKSwg
cmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCmluZGV4IDRmZmU2NzIxNjU0My4uZjU2OTlkOGFkZGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCkBA
IC01OCwxNiArNTgsMTYgQEAgc3RhdGljIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxlRm9y
TWFya2VkVGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LAogICAgICAgICAgICAgYXV0
byBkZWNvcmF0aW9ucyA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwog
CiAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHls
ZXMudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVj
b3JhdGlvblN0eWxlcy51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAg
ICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IgPSBjb2xv
cjsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUu
ZGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3Zlcmxp
bmUpKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3Zlcmxp
bmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5
bGVzLm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgc3R5
bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAg
ICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKLSAg
ICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9y
ID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGlu
ZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHlsZS50
ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAgICAg
ICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmRlY29yYXRpb25T
dHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAg
ICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFp
bnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmlu
ZGV4IGQ3NGU3YTk1ODEwNS4uYTM0ZGNlY2U4ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0Qm94UGFpbnRlci5jcHAKQEAgLTQzMywxMSArNDMzLDkgQEAgVGV4dERlY29yYXRp
b25QYWludGVyIFRleHRCb3hQYWludGVyPFRleHRCb3hQYXRoPjo6Y3JlYXRlRGVjb3JhdGlvblBh
aW50ZXIoY29uc3QKICAgICB9CiAKICAgICAvLyBDcmVhdGUgcGFpbnRlcgotICAgIGF1dG8gdGV4
dERlY29yYXRpb25zID0gbV9zdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIHRl
eHREZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdEZvclN0eWxlKG1hcmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMpKTsK
ICAgICBhdXRvKiBzaGFkb3cgPSBtYXJrZWRUZXh0LnN0eWxlLnRleHRTaGFkb3cgPyAmbWFya2Vk
VGV4dC5zdHlsZS50ZXh0U2hhZG93LnZhbHVlKCkgOiBudWxscHRyOwogICAgIGF1dG8qIGNvbG9y
RmlsdGVyID0gbWFya2VkVGV4dC5zdHlsZS50ZXh0U2hhZG93ICYmIG1fc3R5bGUuaGFzQXBwbGVD
b2xvckZpbHRlcigpID8gJm1fc3R5bGUuYXBwbGVDb2xvckZpbHRlcigpIDogbnVsbHB0cjsKLSAg
ICByZXR1cm4geyBjb250ZXh0LCB0ZXh0RGVjb3JhdGlvbnMsIG1faXNGaXJzdExpbmUsIGZvbnRD
YXNjYWRlKCksIG1ha2VJdGVyYXRvcigpLCBzbmFwcGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpLCBz
aGFkb3csIGNvbG9yRmlsdGVyLCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVz
IH07CisgICAgcmV0dXJuIHsgY29udGV4dCwgZm9udENhc2NhZGUoKSwgbWFrZUl0ZXJhdG9yKCks
IHNuYXBwZWRTZWxlY3Rpb25SZWN0LndpZHRoKCksIHNoYWRvdywgY29sb3JGaWx0ZXIsIG1hcmtl
ZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVGV4dEJveFBhdGg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4
dERlY29yYXRpb25QYWludGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuY3BwCmluZGV4IGQ2NGY1MzNmYmZkNi4uOTRmMjc5MTAxZDU2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNw
cApAQCAtMTg1LDE1ICsxODUsMjYgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9u
U3R5bGVUb1N0cm9rZVN0eWxlKFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKICAgICByZXR1
cm4gc3Ryb2tlU3R5bGU7CiB9CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3Jh
dGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCit7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0
aW9uTGluZT4gZGVjb3JhdGlvbnM7CisgICAgaWYgKHN0eWxlLnVuZGVybGluZS5jb2xvci5pc1Zh
bGlkKCkpCisgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVy
bGluZSk7CisgICAgaWYgKHN0eWxlLm92ZXJsaW5lLmNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAg
ZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOworICAgIGlmIChz
dHlsZS5saW5ldGhyb3VnaC5jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRlY29yYXRpb25zLmFk
ZChUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKTsKKyAgICByZXR1cm4gZGVjb3JhdGlv
bnM7Cit9CisKIGJvb2wgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0o
Y29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QKIHsKLSAgICByZXR1cm4gdW5kZXJsaW5lQ29sb3Ig
PT0gb3RoZXIudW5kZXJsaW5lQ29sb3IgJiYgb3ZlcmxpbmVDb2xvciA9PSBvdGhlci5vdmVybGlu
ZUNvbG9yICYmIGxpbmV0aHJvdWdoQ29sb3IgPT0gb3RoZXIubGluZXRocm91Z2hDb2xvcgotICAg
ICAgICAmJiB1bmRlcmxpbmVTdHlsZSA9PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGlu
ZVN0eWxlID09IG90aGVyLm92ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhl
ci5saW5ldGhyb3VnaFN0eWxlOworICAgIHJldHVybiB1bmRlcmxpbmUuY29sb3IgPT0gb3RoZXIu
dW5kZXJsaW5lLmNvbG9yICYmIG92ZXJsaW5lLmNvbG9yID09IG90aGVyLm92ZXJsaW5lLmNvbG9y
ICYmIGxpbmV0aHJvdWdoLmNvbG9yID09IG90aGVyLmxpbmV0aHJvdWdoLmNvbG9yCisgICAgICAg
ICYmIHVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5lLmRlY29yYXRp
b25TdHlsZSAmJiBvdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmUuZGVj
b3JhdGlvblN0eWxlICYmIGxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9PSBvdGhlci5saW5l
dGhyb3VnaC5kZWNvcmF0aW9uU3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4
dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnMsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZv
bnRDYXNjYWRlJiBmb250LCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gs
IGZsb2F0IHdpZHRoLCBjb25zdCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMqIGNvbG9yRmlsdGVyLCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERl
Y29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJ
dGVyYXRvciB0ZXh0Qm94LCBmbG9hdCB3aWR0aCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zKiBjb2xvckZpbHRlciwgU3R5bGVzIHN0eWxlT3ZlcnJpZGUp
CiAgICAgOiBtX2NvbnRleHQgeyBjb250ZXh0IH0KLSAgICAsIG1fZGVjb3JhdGlvbnMgeyBkZWNv
cmF0aW9ucyB9CiAgICAgLCBtX3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24o
KSB9CiAgICAgLCBtX3dpZHRoKHdpZHRoKQogICAgICwgbV9pc1ByaW50aW5nIHsgdGV4dEJveC0+
cmVuZGVyZXIoKS5kb2N1bWVudCgpLnByaW50aW5nKCkgfQpAQCAtMjAzLDE2ICsyMTQsMTggQEAg
VGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250
ZXh0JiBjb250ZXh0LCBPcHRpb25TZXQKICAgICAsIG1fdGV4dEJveCh0ZXh0Qm94KQogICAgICwg
bV9mb250IHsgZm9udCB9CiAgICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKHRleHRCb3gtPnJlbmRl
cmVyKCkuZG9jdW1lbnQoKS5kZXZpY2VTY2FsZUZhY3RvcigpKQotICAgICwgbV9zdHlsZXMgeyBz
dHlsZXMgPyAqV1RGTW92ZShzdHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIodGV4dEJveC0+cmVu
ZGVyZXIoKSwgZGVjb3JhdGlvbnMsIGlzRmlyc3RMaW5lLCBQc2V1ZG9JZDo6Tm9uZSkgfQotICAg
ICwgbV9saW5lU3R5bGUgeyBpc0ZpcnN0TGluZSA/IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RM
aW5lU3R5bGUoKSA6IHRleHRCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKSB9CisgICAgLCBtX3N0eWxl
cyB7IHN0eWxlT3ZlcnJpZGUgfQorICAgICwgbV90ZXh0Qm94U3R5bGUgeyB0ZXh0Qm94LT5saW5l
Qm94KCktPmlzRmlyc3QoKSA/IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6
IHRleHRCb3gtPnJlbmRlcmVyKCkuc3R5bGUoKSB9CiB7CisgICAgbV90ZXh0Qm94RGVjb3JhdGlv
bnMgPSBtX3RleHRCb3hTdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgIG1fdGV4
dEJveERlY29yYXRpb25zLmFkZCh0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHN0eWxl
T3ZlcnJpZGUpKTsKIH0KIAogLy8gUGFpbnQgdGV4dC1zaGFkb3csIHVuZGVybGluZSwgb3Zlcmxp
bmUKIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9u
cyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBj
b25zdCBGbG9hdFBvaW50JiBib3hPcmlnaW4pCiB7Ci0gICAgY29uc3QgYXV0byYgZm9udE1ldHJp
Y3MgPSBtX2xpbmVTdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIGF1dG8gdGV4dERl
Y29yYXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChtX2xpbmVTdHlsZS50ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgp
LCBmb250TWV0cmljcyksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGNvbnN0IGF1dG8mIGZv
bnRNZXRyaWNzID0gbV90ZXh0Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKKyAgICBh
dXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0Qm94
U3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAg
ICBGbG9hdFBvaW50IGxvY2FsT3JpZ2luID0gYm94T3JpZ2luOwogCiAgICAgYXV0byBwYWludERl
Y29yYXRpb24gPSBbJl0gKFRleHREZWNvcmF0aW9uTGluZSBkZWNvcmF0aW9uLCBUZXh0RGVjb3Jh
dGlvblN0eWxlIHN0eWxlLCBjb25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVj
dCkgewpAQCAtMjIxLDkgKzIzNCw5IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWlu
dEJhY2tncm91bmREZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAgICAgICAg
IGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHls
ZSk7CiAKICAgICAgICAgaWYgKHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpCi0g
ICAgICAgICAgICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX2xp
bmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgICAgICAgICBzdHJva2VXYXZ5
VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX3RleHRCb3hTdHlsZS5jb21wdXRlZEZv
bnRQaXhlbFNpemUoKSk7CiAgICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29y
YXRpb25MaW5lOjpVbmRlcmxpbmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6
Ok92ZXJsaW5lKSB7Ci0gICAgICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9u
U2tpcEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6QXV0byB8fCBtX2xpbmVTdHlsZS50
ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6OkFsbCkgJiYg
bV9pc0hvcml6b250YWwpIHsKKyAgICAgICAgICAgIGlmICgobV90ZXh0Qm94U3R5bGUudGV4dERl
Y29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBdXRvIHx8IG1fdGV4
dEJveFN0eWxlLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcElu
azo6QWxsKSAmJiBtX2lzSG9yaXpvbnRhbCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250
ZXh0LnBhaW50aW5nRGlzYWJsZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3Qg
dW5kZXJsaW5lQm91bmRpbmdCb3ggPSBtX2NvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0Zv
clRleHQocmVjdCwgbV9pc1ByaW50aW5nKTsKICAgICAgICAgICAgICAgICAgICAgRGFzaEFycmF5
IGludGVyc2VjdGlvbnMgPSBtX2ZvbnQuZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KHRl
eHRSdW4sIHRleHRPcmlnaW4sIHVuZGVybGluZUJvdW5kaW5nQm94KTsKQEAgLTI0MCw5ICsyNTMs
OSBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlv
bnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CiAgICAgfTsKIAotICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5n
ICYmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGlu
ZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFt
X2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHx8IG1f
c3R5bGVzLm92ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVz
LmxpbmV0aHJvdWdoQ29sb3IuaXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9
ICFtX2lzUHJpbnRpbmcgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVj
b3JhdGlvbkxpbmU6OlVuZGVybGluZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLmlzT3Bh
cXVlKCkpCisgICAgICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERl
Y29yYXRpb25MaW5lOjpPdmVybGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IuaXNPcGFx
dWUoKSkKKyAgICAgICAgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVj
b3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvci5p
c09wYXF1ZSgpKTsKIAogICAgIGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBw
aW5nID0gIWFyZUxpbmVzT3BhcXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBA
IC0yODMsMjQgKzI5NiwzMiBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNr
Z3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gVGhlc2UgZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3Zl
cmZsb3dzIGNvbXB1dGVkIGluIHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KLSAgICAg
ICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpKSB7Ci0gICAgICAgICAgICBhdXRvIG9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRC
b3hQYWludGluZyhtX2xpbmVTdHlsZSwgbV90ZXh0Qm94KTsKLSAgICAgICAgICAgIGZsb2F0IHdh
dnlPZmZzZXQgPSBtX3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKLSAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxv
Y2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsK
LSAgICAgICAgICAgIHJlY3QubW92ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKLSAgICAgICAg
ICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHls
ZXMudW5kZXJsaW5lU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAg
ICAgaWYgKG1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6
VW5kZXJsaW5lKSkgeworICAgICAgICAgICAgYXV0byBvZmZzZXRBbmREZWNvcmF0aW5nQm94ID0g
dW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhtX3RleHRC
b3hTdHlsZSwgbV90ZXh0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gc3R5bGVUb1VzZSA9IFsmXSB7
CisgICAgICAgICAgICAgICAgaWYgKCZvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdC
b3ggPT0gbV90ZXh0Qm94LT5yZW5kZXJlcigpLnBhcmVudCgpKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gbV9zdHlsZXMudW5kZXJsaW5lOworICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBt
YWtlIHRoaWNrbmVzcyBwYXJ0IG9mIHRoZSBkZWNvcmF0aW9uIHN0eWxlLgorICAgICAgICAgICAg
ICAgIGF1dG8gaXNGaXJzdExpbmUgPSBtX3RleHRCb3gtPmxpbmVCb3goKS0+aXNGaXJzdCgpOwor
ICAgICAgICAgICAgICAgIGF1dG8mIGRlY29yYXRpbmdCb3hTdHlsZSA9IGlzRmlyc3RMaW5lID8g
b2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0aW5nQm94LmZpcnN0TGluZVN0eWxlKCkgOiBv
ZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdCb3guc3R5bGUoKTsKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3R5bGVzRm9yUmVuZGVyZXIob2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNv
cmF0aW5nQm94LCBkZWNvcmF0aW5nQm94U3R5bGUudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwg
aXNGaXJzdExpbmUpLnVuZGVybGluZTsKKyAgICAgICAgICAgIH0oKTsKKyAgICAgICAgICAgIGF1
dG8gd2F2eU9mZnNldCA9IHN0eWxlVG9Vc2UuZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0
aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwLmY7CisgICAgICAgICAgICBhdXRvIHVu
ZGVybGluZVJlY3QgPSBGbG9hdFJlY3QgeyBsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgs
IHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSB9OworICAgICAgICAgICAgdW5kZXJsaW5lUmVjdC5t
b3ZlKDAuZiwgb2Zmc2V0QW5kRGVjb3JhdGluZ0JveC51bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zm
c2V0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVu
ZGVybGluZSwgc3R5bGVUb1VzZS5kZWNvcmF0aW9uU3R5bGUsIHN0eWxlVG9Vc2UuY29sb3IsIHVu
ZGVybGluZVJlY3QpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtX2RlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7Ci0gICAgICAgICAgICBmbG9hdCB3
YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxl
OjpXYXZ5ID8gbV93YXZ5T2Zmc2V0IDogMDsKKyAgICAgICAgaWYgKG1fdGV4dEJveERlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CisgICAgICAgICAg
ICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09
IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwOwogICAgICAgICAg
ICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcykpOwotICAgICAgICAgICAgZmxvYXQgYXV0b1RleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNy
ZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZv
bnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgICAgICAgICBmbG9hdCBhdXRv
VGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChUZXh0RGVjb3JhdGlv
blRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNvbXB1
dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICAg
ICAgICAgIHJlY3QubW92ZSgwLCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLSB0ZXh0RGVj
b3JhdGlvblRoaWNrbmVzcyAtIHdhdnlPZmZzZXQpOwotICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUsIG1fc3R5bGVzLm92ZXJsaW5lU3R5bGUs
IG1fc3R5bGVzLm92ZXJsaW5lQ29sb3IsIHJlY3QpOworICAgICAgICAgICAgcGFpbnREZWNvcmF0
aW9uKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUsIG1fc3R5bGVzLm92ZXJsaW5lLmRlY29y
YXRpb25TdHlsZSwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IsIHJlY3QpOwogICAgICAgICB9CiAK
ICAgICAgICAgLy8gV2Ugb25seSB3YW50IHRvIHBhaW50IHRoZSBzaGFkb3csIGhlbmNlIHRoZSB0
cmFuc3BhcmVudCBjb2xvciwgbm90IHRoZSBhY3R1YWwgbGluZS10aHJvdWdoLAogICAgICAgICAv
LyB3aGljaCB3aWxsIGJlIHBhaW50ZWQgaW4gcGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoKS4K
LSAgICAgICAgaWYgKHNoYWRvdyAmJiBtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0
aW9uTGluZTo6TGluZVRocm91Z2gpKQorICAgICAgICBpZiAoc2hhZG93ICYmIG1fdGV4dEJveERl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKQogICAg
ICAgICAgICAgcGFpbnRMaW5lVGhyb3VnaChDb2xvcjo6dHJhbnNwYXJlbnRCbGFjaywgdGV4dERl
Y29yYXRpb25UaGlja25lc3MsIGxvY2FsT3JpZ2luKTsKICAgICB9IHdoaWxlIChzaGFkb3cpOwog
CkBAIC0zMTIsMjggKzMzMywyOCBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRC
YWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogCiB2b2lkIFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgRmxv
YXRQb2ludCYgYm94T3JpZ2luKQogewotICAgIGlmICghbV9kZWNvcmF0aW9ucy5jb250YWlucyhU
ZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkKKyAgICBpZiAoIW1fdGV4dEJveERlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2
aWNlUGl4ZWwobV9saW5lU3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1f
bGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV9saW5lU3R5bGUubWV0cmljc09mUHJpbWFy
eUZvbnQoKSksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50TGluZVRocm91Z2gobV9z
dHlsZXMubGluZXRocm91Z2hDb2xvciwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGJveE9yaWdp
bik7CisgICAgYXV0byB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVs
KG1fdGV4dEJveFN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2ZShtX3RleHRC
b3hTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIG1fdGV4dEJveFN0eWxlLm1ldHJpY3NPZlByaW1h
cnlGb250KCkpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICBwYWludExpbmVUaHJvdWdoKG1f
c3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3Jp
Z2luKTsKIH0KIAogdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2go
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0UG9pbnQmIGxv
Y2FsT3JpZ2luKQogewotICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV9saW5lU3R5bGUu
bWV0cmljc09mUHJpbWFyeUZvbnQoKTsKKyAgICBjb25zdCBhdXRvJiBmb250TWV0cmljcyA9IG1f
dGV4dEJveFN0eWxlLm1ldHJpY3NPZlByaW1hcnlGb250KCk7CiAgICAgRmxvYXRSZWN0IHJlY3Qo
bG9jYWxPcmlnaW4sIEZsb2F0U2l6ZShtX3dpZHRoLCB0aGlja25lc3MpKTsKLSAgICBhdXRvIGF1
dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVsKFRleHREZWNvcmF0
aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGF1
dG8gYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERl
Y29yYXRpb25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX3RleHRCb3hTdHls
ZS5jb21wdXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7
CiAgICAgYXV0byBjZW50ZXIgPSAyICogZm9udE1ldHJpY3MuZmxvYXRBc2NlbnQoKSAvIDMgKyBh
dXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgLyAyOwogICAgIHJlY3QubW92ZSgwLCBjZW50ZXIg
LSB0aGlja25lc3MgLyAyKTsKIAogICAgIG1fY29udGV4dC5zZXRTdHJva2VDb2xvcihjb2xvcik7
CiAKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0gbV9zdHlsZXMubGluZXRocm91Z2hT
dHlsZTsKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0gbV9zdHlsZXMubGluZXRocm91
Z2guZGVjb3JhdGlvblN0eWxlOwogICAgIGF1dG8gc3Ryb2tlU3R5bGUgPSB0ZXh0RGVjb3JhdGlv
blN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICBpZiAoc3R5bGUgPT0gVGV4dERlY29y
YXRpb25TdHlsZTo6V2F2eSkKLSAgICAgICAgc3Ryb2tlV2F2eVRleHREZWNvcmF0aW9uKG1fY29u
dGV4dCwgcmVjdCwgbV9saW5lU3R5bGUuY29tcHV0ZWRGb250UGl4ZWxTaXplKCkpOworICAgICAg
ICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX3RleHRCb3hTdHls
ZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CiAgICAgZWxzZQogICAgICAgICBtX2NvbnRleHQu
ZHJhd0xpbmVGb3JUZXh0KHJlY3QsIG1faXNQcmludGluZywgc3R5bGUgPT0gVGV4dERlY29yYXRp
b25TdHlsZTo6RG91YmxlLCBzdHJva2VTdHlsZSk7CiB9CkBAIC0zNDksMTggKzM3MCwxOCBAQCBz
dGF0aWMgdm9pZCBjb2xsZWN0U3R5bGVzRm9yUmVuZGVyZXIoVGV4dERlY29yYXRpb25QYWludGVy
OjpTdHlsZXMmIHJlc3VsdCwgY29ucwogCiAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpIHsKICAgICAgICAgICAgIHJlbWFpbmlu
Z0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7Ci0gICAg
ICAgICAgICByZXN1bHQudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIHJlc3Vs
dC51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgIHJlc3VsdC51
bmRlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3VsdC51bmRlcmxpbmUuZGVj
b3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgICAgIGlmIChk
ZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSkgewogICAg
ICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6
T3ZlcmxpbmUpOwotICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lQ29sb3IgPSBjb2xvcjsKLSAg
ICAgICAgICAgIHJlc3VsdC5vdmVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAg
ICAgICAgcmVzdWx0Lm92ZXJsaW5lLmNvbG9yID0gY29sb3I7CisgICAgICAgICAgICByZXN1bHQu
b3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAg
ICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSkgewogICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpOwotICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJv
dWdoQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaFN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoLmNvbG9yID0g
Y29sb3I7CisgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2guZGVjb3JhdGlvblN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICB9CiAgICAgfTsKIApAQCAtNDAwLDE4ICs0MjEsNiBA
QCBDb2xvciBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OmRlY29yYXRpb25Db2xvcihjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIHN0eWxlLnZpc2l0ZWREZXBlbmRlbnRDb2xvcldp
dGhDb2xvckZpbHRlcihDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uQ29sb3IpOwogfQogCi1PcHRp
b25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnRleHREZWNv
cmF0aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHls
ZXMmIHN0eWxlKQotewotICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRp
b25zOwotICAgIGlmIChzdHlsZS51bmRlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRl
Y29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7Ci0gICAgaWYgKHN0
eWxlLm92ZXJsaW5lQ29sb3IuaXNWYWxpZCgpKQotICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4
dERlY29yYXRpb25MaW5lOjpPdmVybGluZSk7Ci0gICAgaWYgKHN0eWxlLmxpbmV0aHJvdWdoQ29s
b3IuaXNWYWxpZCgpKQotICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5l
OjpMaW5lVGhyb3VnaCk7Ci0gICAgcmV0dXJuIGRlY29yYXRpb25zOwotfTsKLQogYXV0byBUZXh0
RGVjb3JhdGlvblBhaW50ZXI6OnN0eWxlc0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYg
cmVuZGVyZXIsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHJlcXVlc3RlZERlY29yYXRp
b25zLCBib29sIGZpcnN0TGluZVN0eWxlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkgLT4gU3R5bGVzCiB7
CiAgICAgaWYgKHJlcXVlc3RlZERlY29yYXRpb25zLmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA0ZGEyZTQ2Mzgx
YTUuLmZmNzNjZjg2ZjUyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Rl
eHREZWNvcmF0aW9uUGFpbnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaApAQCAtNDQsNyArNDQsNyBAQCBjbGFzcyBUZXh0UnVuOwogY2xh
c3MgVGV4dERlY29yYXRpb25QYWludGVyIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3R5bGVzOwot
ICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFwaGljc0NvbnRleHQmLCBPcHRpb25TZXQ8VGV4
dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9ucywgYm9vbCBpc0ZpcnN0TGluZSwgY29uc3QgRm9u
dENhc2NhZGUmLCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yLCBmbG9hdCB3aWR0aCwg
Y29uc3QgU2hhZG93RGF0YSosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqLCBzdGQ6Om9wdGlvbmFs
PFN0eWxlcz4gPSBzdGQ6Om51bGxvcHQpOworICAgIFRleHREZWNvcmF0aW9uUGFpbnRlcihHcmFw
aGljc0NvbnRleHQmLCBjb25zdCBGb250Q2FzY2FkZSYsIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94
SXRlcmF0b3IsIGZsb2F0IHdpZHRoLCBjb25zdCBTaGFkb3dEYXRhKiwgY29uc3QgRmlsdGVyT3Bl
cmF0aW9ucyosIFN0eWxlcyk7CiAKICAgICB2b2lkIHBhaW50QmFja2dyb3VuZERlY29yYXRpb25z
KGNvbnN0IFRleHRSdW4mLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9h
dFBvaW50JiBib3hPcmlnaW4pOwogICAgIHZvaWQgcGFpbnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMo
Y29uc3QgRmxvYXRQb2ludCYgYm94T3JpZ2luKTsKQEAgLTUzLDIyICs1MywyMiBAQCBwdWJsaWM6
CiAgICAgICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZXMmKSBjb25zdDsKICAgICAgICAg
Ym9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOyB9CiAKLSAgICAgICAgQ29sb3IgdW5kZXJsaW5lQ29sb3I7Ci0gICAgICAg
IENvbG9yIG92ZXJsaW5lQ29sb3I7Ci0gICAgICAgIENvbG9yIGxpbmV0aHJvdWdoQ29sb3I7Ci0g
ICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgdW5kZXJsaW5lU3R5bGU7Ci0gICAgICAgIFRleHRE
ZWNvcmF0aW9uU3R5bGUgb3ZlcmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHls
ZSBsaW5ldGhyb3VnaFN0eWxlOworICAgICAgICBzdHJ1Y3QgRGVjb3JhdGlvblN0eWxlQW5kQ29s
b3IgeworICAgICAgICAgICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBUZXh0RGVjb3JhdGlv
blN0eWxlIGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgfTsKKyAgICAgICAgRGVjb3JhdGlvblN0
eWxlQW5kQ29sb3IgdW5kZXJsaW5lOworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciBv
dmVybGluZTsKKyAgICAgICAgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3IgbGluZXRocm91Z2g7CiAg
ICAgfTsKICAgICBzdGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxl
Jik7Ci0gICAgc3RhdGljIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0
aW9uc0luRWZmZWN0Rm9yU3R5bGUoY29uc3QgU3R5bGVzJik7CiAgICAgc3RhdGljIFN0eWxlcyBz
dHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25MaW5lPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExpbmVTdHlsZSA9IGZh
bHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHBh
aW50TGluZVRocm91Z2goY29uc3QgQ29sb3ImLCBmbG9hdCB0aGlja25lc3MsIGNvbnN0IEZsb2F0
UG9pbnQmIGxvY2FsT3JpZ2luKTsKIAogICAgIEdyYXBoaWNzQ29udGV4dCYgbV9jb250ZXh0Owot
ICAgIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IG1fZGVjb3JhdGlvbnM7CisgICAgT3B0
aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gbV90ZXh0Qm94RGVjb3JhdGlvbnM7CiAgICAgZmxv
YXQgbV93YXZ5T2Zmc2V0IHsgMCB9OwogICAgIGZsb2F0IG1fd2lkdGggeyAwIH07CiAgICAgRmxv
YXRQb2ludCBtX2JveE9yaWdpbjsKQEAgLTgxLDcgKzgxLDcgQEAgcHJpdmF0ZToKICAgICBmbG9h
dCBtX2RldmljZVNjYWxlRmFjdG9yIHsgMCB9OwogCiAgICAgU3R5bGVzIG1fc3R5bGVzOwotICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBtX2xpbmVTdHlsZTsKKyAgICBjb25zdCBSZW5kZXJTdHlsZSYg
bV90ZXh0Qm94U3R5bGU7CiB9OwogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMGY5NzY0ZjE0MjQ3
Li5lZjRmYmQxMjhhMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRl
eHRCb3hTdHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGlu
QmxvY2soY29uc3QgUmVuZGVySW5saW5lJiBhbmNlc3RvciwgY29uc3QgUmVuZGVyTwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotc3RhdGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3Jh
dGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwg
ZmxvYXQgdGV4dFJ1bkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25S
ZW5kZXJlcikKK3N0YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5l
KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRl
eHRSdW5Mb2dpY2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVy
ZXIpCiB7CiAgICAgYXV0byBtaW5Mb2dpY2FsVG9wID0gdGV4dFJ1bkxvZ2ljYWxUb3A7CiAgICAg
Zm9yIChhdXRvIHJ1biA9IGxpbmVCb3gtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJz
ZU5leHRPbkxpbmUoKSkgewpAQCAtNjMsOSArNjMsOSBAQCBzdGF0aWMgZmxvYXQgbWluTG9naWNh
bFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0
ZQogICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0
IGFmZmVjdCBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgaWYgKCFydW4tPnN0eWxlKCkudGV4dERl
Y29yYXRpb25zSW5FZmZlY3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGlu
ZSkpCi0gICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24n
dCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVj
b3JhdGlvblJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJ
ZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4g
aXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW5nQm94UmVuZGVyZXJ8J3MgaGllcmFyY2h5
LgogCi0gICAgICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVy
LT5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8
UmVuZGVySW5saW5lPigqZGVjb3JhdGlvblJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisg
ICAgICAgIGlmIChkZWNvcmF0aW5nQm94UmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNB
bmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGluZ0Jv
eFJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAog
ICAgICAgICBpZiAocnVuLT5pc1RleHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25T
a2lwSW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpOb25lKQpAQCAtNzQsNyArNzQsNyBA
QCBzdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZQogICAgIHJldHVybiBtaW5Mb2dpY2FsVG9wOwogfQog
Ci1zdGF0aWMgZmxvYXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25z
dCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVu
TG9naWNhbEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyKQor
c3RhdGljIGZsb2F0IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3Qg
SW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxv
Z2ljYWxCb3R0b20sIGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlcikK
IHsKICAgICBhdXRvIG1heExvZ2ljYWxCb3R0b20gPSB0ZXh0UnVuTG9naWNhbEJvdHRvbTsKICAg
ICBmb3IgKGF1dG8gcnVuID0gbGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZl
cnNlTmV4dE9uTGluZSgpKSB7CkBAIC04Miw5ICs4Miw5IEBAIHN0YXRpYyBmbG9hdCBtYXhMb2dp
Y2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5l
Qm94CiAgICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9u
J3QgYWZmZWN0IGNhbGN1bGF0aW9ucy4KIAogICAgICAgICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlz
bid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxk
ZWNvcmF0aW9uUmVuZGVyZXJ8J3MgaGllcmFyY2h5LgorICAgICAgICAgICAgY29udGludWU7IC8v
IElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhl
biBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpbmdCb3hSZW5kZXJlcnwncyBoaWVyYXJj
aHkuCiAKLSAgICAgICAgaWYgKGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVy
ZXItPmlzUmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2Fz
dDxSZW5kZXJJbmxpbmU+KCpkZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkK
KyAgICAgICAgaWYgKGRlY29yYXRpbmdCb3hSZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFp
c0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW5n
Qm94UmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CiAgICAgICAgIGlmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlv
blNraXBJbmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6Ok5vbmUpCkBAIC0xMTEsMTggKzEx
MSwxOSBAQCBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVudCogZW5jbG9zaW5nUmVuZGVyZXJXaXRo
VGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dAogICAgIHJldHVybiBjdXJyZW50OwogfQog
CitzdGF0aWMgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGlu
Z0JveChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBjb25z
dCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIsIGJvb2wgaXNGbGlwcGVkTGlu
ZXNXcml0aW5nTW9kZSwgZmxvYXQgdGV4dEJveExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dp
Y2FsQm90dG9tKQoreworICAgIGlmIChpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKQorICAgICAg
ICByZXR1cm4gdGV4dEJveExvZ2ljYWxUb3AgLSBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRp
b25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsVG9wLCBkZWNvcmF0aW5nQm94UmVuZGVyZXIp
OworICAgIHJldHVybiBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVC
b3gsIHRleHRCb3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW5nQm94UmVuZGVyZXIpIC0gdGV4dEJv
eExvZ2ljYWxCb3R0b207Cit9CisKIHN0YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRv
bU1vc3QoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29u
c3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0
ZXh0Qm94TG9naWNhbEJvdHRvbSkKIHsKLSAgICBmbG9hdCBvZmZzZXQgPSAwLmY7Ci0gICAgYXV0
byogZGVjb3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRp
b24ocmVuZGVyZXIsIGxpbmVCb3gtPmlzRmlyc3QoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxl
KCkuaXNGbGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGF1dG8gbWluTG9naWNh
bFRvcCA9IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJv
eExvZ2ljYWxUb3AsIGRlY29yYXRpb25SZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldCA9IHRleHRC
b3hMb2dpY2FsVG9wIC0gbWluTG9naWNhbFRvcDsKLSAgICB9IGVsc2UgewotICAgICAgICBvZmZz
ZXQgPSBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRC
b3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZzZXQgLT0g
dGV4dEJveExvZ2ljYWxCb3R0b207Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXQ7CisgICAgYXV0
byogZGVjb3JhdGluZ0JveFJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29y
YXRpb24ocmVuZGVyZXIsIGxpbmVCb3gtPmlzRmlyc3QoKSk7CisgICAgaWYgKCFkZWNvcmF0aW5n
Qm94UmVuZGVyZXIpCisgICAgICAgIHJldHVybiAwLmY7CisgICAgcmV0dXJuIHRleHRSdW5PZmZz
ZXRGcm9tQm90dG9tTW9zdFdpdGhpbkRlY29yYXRpbmdCb3gobGluZUJveCwgKmRlY29yYXRpbmdC
b3hSZW5kZXJlciwgZGVjb3JhdGluZ0JveFJlbmRlcmVyLT5zdHlsZSgpLmlzRmxpcHBlZExpbmVz
V3JpdGluZ01vZGUoKSwgdGV4dEJveExvZ2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsK
IH0KIAogc3RhdGljIGlubGluZSBmbG9hdCBkZWZhdWx0R2FwKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSkKQEAgLTI5MCwxOCArMjkxLDMxIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dG
b3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1
dGVkVmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsK
IH0KIAotZmxvYXQgdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRl
clN0eWxlJiBzdHlsZSwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4
dEJveCkKK1VuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3ggdW5kZXJsaW5lT2Zmc2V0QW5k
RGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUs
IGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCiB7CisgICAg
Ly8gMS4gRmluZCB0aGUgZGVjb3JhdGluZyBib3ggZm9yIHRoaXMgdGV4dCBydW4gKGZvciByb290
IGlubGluZSBib3ggY29udGVudCwgaXQncyB0aGUgY29udGFpbmluZyBibG9jaywgZm9yIHRleHQg
aW5zaWRlIGFuIGlubGluZSBib3gsIGl0J3MgbW9zdGx5IHRoZSBwYXJlbnQgaW5saW5lIGJveCBp
dHNlbGYpCisgICAgLy8gMi4gY29tcHV0ZSB0aGUgdW5kZXJsaW5lIG9mZnNldC4KKyAgICBhdXRv
JiB0ZXh0Qm94UmVuZGVyZXIgPSB0ZXh0Qm94LT5yZW5kZXJlcigpOwogICAgIGF1dG8gbGluZUJv
eCA9IHRleHRCb3gtPmxpbmVCb3goKTsKKyAgICBhdXRvIGlzRmlyc3RMaW5lID0gbGluZUJveC0+
aXNGaXJzdCgpOworICAgIGF1dG8qIGRlY29yYXRpbmdCb3hSZW5kZXJlciA9IGVuY2xvc2luZ1Jl
bmRlcmVyV2l0aFRleHREZWNvcmF0aW9uKHRleHRCb3hSZW5kZXJlciwgaXNGaXJzdExpbmUpOwor
ICAgIGlmICghZGVjb3JhdGluZ0JveFJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOworICAgICAgICByZXR1cm4geyAwLmYsICp0ZXh0Qm94UmVuZGVyZXIucGFyZW50KCkg
fTsKKyAgICB9CisKICAgICBhdXRvIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpv
cHRpb25hbDxUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlcj4geyB9OwogICAgIGF1dG8gdW5kZXJs
aW5lUG9zaXRpb25WYWx1ZSA9IHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIGxpbmVC
b3gtPmJhc2VsaW5lVHlwZSgpKTsKIAogICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09
IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zm
c2V0ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGxpbmVCb3gsIHRleHRCb3gtPnJlbmRl
cmVyKCksIHRleHRCb3gtPmxvZ2ljYWxUb3AoKSwgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpKTsK
KyAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0
KGxpbmVCb3gsIHRleHRCb3hSZW5kZXJlciwgdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94
LT5sb2dpY2FsQm90dG9tKCkpOwogICAgICAgICB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9
IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIHsgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0g
dGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0UnVuT2Zmc2V0IH07CiAgICAgfQogCi0gICAgcmV0
dXJuIGNvbXB1dGVkVW5kZXJsaW5lT2Zmc2V0KHsgc3R5bGUsIHVuZGVybGluZVBvc2l0aW9uVmFs
dWUsIGRlZmF1bHRHYXAoc3R5bGUpLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB9KTsKKyAg
ICByZXR1cm4geworICAgICAgICBjb21wdXRlZFVuZGVybGluZU9mZnNldCh7IHN0eWxlLCB1bmRl
cmxpbmVQb3NpdGlvblZhbHVlLCBkZWZhdWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0
aW9uVW5kZXIgfSksCisgICAgICAgICpkZWNvcmF0aW5nQm94UmVuZGVyZXIKKyAgICB9OwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IDM4NDMy
MDlkNjI2Yi4uZWQ4ODlkZjViMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0
Qm94U3R5bGUuaApAQCAtMzMsMzcgKzMzLDQyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
CiBjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNz
IFJlbmRlclN0eWxlOwogY2xhc3MgVGV4dFVuZGVybGluZU9mZnNldDsKIAogaW5saW5lIGZsb2F0
IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpCiB7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJu
IDEuZjsKIH0KIAogc3RydWN0IFdhdnlTdHJva2VQYXJhbWV0ZXJzIHsKICAgICAvLyBEaXN0YW5j
ZSBiZXR3ZWVuIGRlY29yYXRpb24ncyBheGlzIGFuZCBCZXppZXIgY3VydmUncyBjb250cm9sIHBv
aW50cy4KICAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBjdXJ2ZSBpcyBiYXNlZCBvbiB0aGlzIGRp
c3RhbmNlLiBJbmNyZWFzZXMgdGhlIGN1cnZlJ3MgaGVpZ2h0CiAgICAgLy8gYXMgZm9udFNpemUg
aW5jcmVhc2VzIHRvIG1ha2UgdGhlIGN1cnZlIGxvb2sgYmV0dGVyLgotICAgIGZsb2F0IGNvbnRy
b2xQb2ludERpc3RhbmNlIHsgMCB9OworICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlIHsg
MC5mIH07CiAKICAgICAvLyBJbmNyZW1lbnQgdXNlZCB0byBmb3JtIHRoZSBkaWFtb25kIHNoYXBl
IGJldHdlZW4gc3RhcnQgcG9pbnQgKHAxKSwgY29udHJvbAogICAgIC8vIHBvaW50cyBhbmQgZW5k
IHBvaW50IChwMikgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIGRlY29yYXRpb24uIFRoZSBjdXJ2ZSBn
ZXRzCiAgICAgLy8gd2lkZXIgYXMgZm9udCBzaXplIGluY3JlYXNlcy4KLSAgICBmbG9hdCBzdGVw
IHsgMCB9OworICAgIGZsb2F0IHN0ZXAgeyAwLmYgfTsKIH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVy
cyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBmb250U2l6ZSk7CiAKIHN0cnVjdCBUZXh0
VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7Ci0gICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQg
eyAwIH07CisgICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQgeyAwLmYgfTsKICAgICAvLyBU
aGlzIG9mZnNldCB2YWx1ZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY3VycmVudCB0ZXh0
IHJ1bidzIGxvZ2ljYWwgYm90dG9tIGFuZCB0aGUgbG93ZXN0IHBvc2l0aW9uIG9mIGFsbCB0aGUg
dGV4dCBydW5zCiAgICAgLy8gb24gbGluZSB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBkZWNvcmF0
aW9uIGJveC4KLSAgICBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QgeyAwIH07Cisg
ICAgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0IHsgMC5mIH07CiB9OwogR2x5cGhP
dmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJik7
CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVy
U3R5bGUmLCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyKTsKIEdseXBo
T3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxpbmVJdGVyYXRv
cjo6TGluZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRleHRCb3hMb2dp
Y2FsVG9wLCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVuZGVybGluZU9m
ZnNldEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0
ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImKTsKK3N0cnVjdCBVbmRlcmxpbmVPZmZzZXRBbmREZWNv
cmF0aW5nQm94IHsKKyAgICBmbG9hdCB1bmRlcmxpbmVPZmZzZXQgeyAwLmYgfTsKKyAgICBjb25z
dCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94OworfTsKK1VuZGVybGluZU9mZnNldEFuZERl
Y29yYXRpbmdCb3ggdW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWlu
dGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRl
cmF0b3ImKTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461457</attachid>
            <date>2022-08-06 21:19:55 -0700</date>
            <delta_ts>2022-08-06 22:04:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243619-20220806211954.patch</filename>
            <type>text/plain</type>
            <size>25679</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSA4MjI3MTA2MjJiZDM5NjIzZWFmZTg0YTBkMzQ0NGE4Y2I5NTZjOGNmIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBT
YXQsIDYgQXVnIDIwMjIgMTg6MDQ6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IEludHJvZHVjZSBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94CiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNjE5CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KCkxldCdzIGdyYWIgdGhlIHVuZGVybGluZSBzdHlsZSAoYW5kIHRoZSBvZmZzZXQpIGZy
b20gdGhlIGRlY29yYXRpbmcgYm94IGFuZCBub3QgZnJvbSB0aGUgUmVuZGVyVGV4dCBpdHNlbGYu
ClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGNhc2VzIHdoZW4gd2Ugc3RhcnQgZHJhd2luZyBt
dWx0aXBsZSBsaW5lcyBmb3IgYSB0ZXh0IHJ1biB3aXRoIChwb3NzaWJseSkgZGlmZmVyZW50IHN0
eWxlLgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5
T2JqZWN0V3JhcHBlck1hYy5tbToKKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgoqIFNvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcDoKKFdlYkNvcmU6OnJlc29s
dmVTdHlsZUZvck1hcmtlZFRleHQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuY3BwOgooV2ViQ29yZTo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JT
dHlsZSk6CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9
PSBjb25zdCk6CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3Vu
ZERlY29yYXRpb25zKToKKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3Jl
Z3JvdW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVyOjpwYWlu
dExpbmVUaHJvdWdoKToKKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6CiogU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgoqIFNvdXJjZS9X
ZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CihXZWJDb3JlOjptaW5Mb2dpY2Fs
VG9wRm9yVGV4dERlY29yYXRpb25MaW5lKToKKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0b21Gb3JU
ZXh0RGVjb3JhdGlvbkxpbmUpOgooV2ViQ29yZTo6dGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0
V2l0aGluRGVjb3JhdGluZ0JveCk6CihXZWJDb3JlOjp0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1v
c3QpOgooV2ViQ29yZTo6dW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQ
YWludGluZyk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcpOiBE
ZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oOgotLS0K
IC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA0ICstCiBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAgfCAxMiArLS0KIC4u
Li9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCAgICAgICB8IDU3ICsrKysrKyst
LS0tLS0KIC4uLi9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCB8IDEz
ICstLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAgIHwgODIg
KysrKysrKysrKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0
eWxlLmggICAgIHwgMTcgKystLQogNiBmaWxlcyBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwg
NzMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbQpp
bmRleCA2ZmIzNWE3OTI3M2MuLjMwN2M5ZDgzNDE5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJNYWMubW0KQEAgLTg0MywxMiArODQzLDEyIEBAIHN0YXRpYyB2b2lkIEFYQXR0
cmlidXRlU3RyaW5nU2V0U3R5bGUoTlNNdXRhYmxlQXR0cmlidXRlZFN0cmluZyogYXR0clN0cmlu
ZywgUmVuCiAKICAgICAgICAgaWYgKGRlY29yICYgVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUpIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcs
IE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZVRleHRBdHRyaWJ1dGUsIEBZRVMsIHJhbmdlKTsKLSAg
ICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nlc3Np
YmlsaXR5VW5kZXJsaW5lQ29sb3JUZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRlY29yYXRpb25T
dHlsZXMudW5kZXJsaW5lQ29sb3IpLmdldCgpLCByYW5nZSk7CisgICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNv
bG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5j
b2xvcikuZ2V0KCksIHJhbmdlKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChkZWNvciAmIFRl
eHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHsKICAgICAgICAgICAgIEFYQXR0cmlidXRl
U3RyaW5nU2V0TnVtYmVyKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hU
ZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmlu
Z1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVN0cmlrZXRocm91Z2hDb2xvclRl
eHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9y
KS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRl
LCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2guY29sb3IpLmdldCgpLCBy
YW5nZSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKaW5kZXggNGZmZTY3MjE2NTQzLi5mNTY5OWQ4YWRkY2Ug
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKQEAg
LTU4LDE2ICs1OCwxNiBAQCBzdGF0aWMgU3R5bGVkTWFya2VkVGV4dCByZXNvbHZlU3R5bGVGb3JN
YXJrZWRUZXh0KGNvbnN0IE1hcmtlZFRleHQmIG1hcmtlZFRleHQsCiAgICAgICAgICAgICBhdXRv
IGRlY29yYXRpb25zID0gcmVuZGVyU3R5bGUtPnRleHREZWNvcmF0aW9uc0luRWZmZWN0KCk7CiAK
ICAgICAgICAgICAgIGlmIChkZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6
OlVuZGVybGluZSkpIHsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxl
cy51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNv
cmF0aW9uU3R5bGVzLnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAg
ICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5jb2xvciA9IGNvbG9y
OworICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZS5k
ZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGlu
ZSkpIHsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGlu
ZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHls
ZXMub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHls
ZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5jb2xvciA9IGNvbG9yOworICAgICAgICAg
ICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lLmRlY29yYXRpb25TdHls
ZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChkZWNv
cmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSkgewotICAg
ICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoQ29sb3Ig
PSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5l
dGhyb3VnaFN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgICAgIHN0eWxlLnRl
eHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yID0gY29sb3I7CisgICAgICAgICAg
ICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2guZGVjb3JhdGlvblN0
eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAg
IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25Q
YWludGVyLmNwcAppbmRleCBmNWU3Mzk3MjM5ZDEuLmU2ZGYwZTgwZjY0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5jcHAKQEAgLTE4
OCwxOSArMTg4LDE5IEBAIHN0YXRpYyBTdHJva2VTdHlsZSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9T
dHJva2VTdHlsZShUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29yYXRpCiBzdGF0aWMgaW5saW5lIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHRleHREZWNvcmF0aW9uc0luRWZmZWN0Rm9yU3R5
bGUoY29uc3QgVGV4dERlY29yYXRpb25QYWludGVyOjpTdHlsZXMmIHN0eWxlKQogewogICAgIE9w
dGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IGRlY29yYXRpb25zOwotICAgIGlmIChzdHlsZS51
bmRlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCisgICAgaWYgKHN0eWxlLnVuZGVybGluZS5jb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OlVu
ZGVybGluZSk7Ci0gICAgaWYgKHN0eWxlLm92ZXJsaW5lQ29sb3IuaXNWYWxpZCgpKQorICAgIGlm
IChzdHlsZS5vdmVybGluZS5jb2xvci5pc1ZhbGlkKCkpCiAgICAgICAgIGRlY29yYXRpb25zLmFk
ZChUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUubGluZXRocm91
Z2hDb2xvci5pc1ZhbGlkKCkpCisgICAgaWYgKHN0eWxlLmxpbmV0aHJvdWdoLmNvbG9yLmlzVmFs
aWQoKSkKICAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRo
cm91Z2gpOwogICAgIHJldHVybiBkZWNvcmF0aW9uczsKIH0KIAogYm9vbCBUZXh0RGVjb3JhdGlv
blBhaW50ZXI6OlN0eWxlczo6b3BlcmF0b3I9PShjb25zdCBTdHlsZXMmIG90aGVyKSBjb25zdAog
ewotICAgIHJldHVybiB1bmRlcmxpbmVDb2xvciA9PSBvdGhlci51bmRlcmxpbmVDb2xvciAmJiBv
dmVybGluZUNvbG9yID09IG90aGVyLm92ZXJsaW5lQ29sb3IgJiYgbGluZXRocm91Z2hDb2xvciA9
PSBvdGhlci5saW5ldGhyb3VnaENvbG9yCi0gICAgICAgICYmIHVuZGVybGluZVN0eWxlID09IG90
aGVyLnVuZGVybGluZVN0eWxlICYmIG92ZXJsaW5lU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmVTdHls
ZSAmJiBsaW5ldGhyb3VnaFN0eWxlID09IG90aGVyLmxpbmV0aHJvdWdoU3R5bGU7CisgICAgcmV0
dXJuIHVuZGVybGluZS5jb2xvciA9PSBvdGhlci51bmRlcmxpbmUuY29sb3IgJiYgb3ZlcmxpbmUu
Y29sb3IgPT0gb3RoZXIub3ZlcmxpbmUuY29sb3IgJiYgbGluZXRocm91Z2guY29sb3IgPT0gb3Ro
ZXIubGluZXRocm91Z2guY29sb3IKKyAgICAgICAgJiYgdW5kZXJsaW5lLmRlY29yYXRpb25TdHls
ZSA9PSBvdGhlci51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlICYmIG92ZXJsaW5lLmRlY29yYXRp
b25TdHlsZSA9PSBvdGhlci5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgJiYgbGluZXRocm91Z2gu
ZGVjb3JhdGlvblN0eWxlID09IG90aGVyLmxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZTsKIH0K
IAogVGV4dERlY29yYXRpb25QYWludGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250Q2FzY2FkZSYgZm9udCwgSW5saW5lSXRlcmF0b3I6
OlRleHRCb3hJdGVyYXRvciB0ZXh0Qm94LCBmbG9hdCB3aWR0aCwgY29uc3QgU2hhZG93RGF0YSog
c2hhZG93LCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiBjb2xvckZpbHRlciwgU3R5bGVzIHN0eWxl
T3ZlcnJpZGUpCkBAIC0yNTMsOSArMjUzLDkgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6
OnBhaW50QmFja2dyb3VuZERlY29yYXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIH07CiAKLSAgICBib29sIGFyZUxp
bmVzT3BhcXVlID0gIW1faXNQcmludGluZyAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmVD
b2xvci5pc09wYXF1ZSgpKQotICAgICAgICAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHx8IG1fc3R5bGVzLm92ZXJsaW5lQ29s
b3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlu
cyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3Vn
aENvbG9yLmlzT3BhcXVlKCkpOworICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50
aW5nICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpIHx8IG1fc3R5bGVzLnVuZGVybGluZS5jb2xvci5pc09wYXF1ZSgpKQorICAg
ICAgICAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGlu
ZTo6T3ZlcmxpbmUpIHx8IG1fc3R5bGVzLm92ZXJsaW5lLmNvbG9yLmlzT3BhcXVlKCkpCisgICAg
ICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5l
OjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRocm91Z2guY29sb3IuaXNPcGFxdWUoKSk7
CiAKICAgICBmbG9hdCBleHRyYU9mZnNldCA9IDA7CiAgICAgYm9vbCBjbGlwcGluZyA9ICFhcmVM
aW5lc09wYXF1ZSAmJiBtX3NoYWRvdyAmJiBtX3NoYWRvdy0+bmV4dCgpOwpAQCAtMjk3LDE4ICsy
OTcsMjkgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFja2dyb3VuZERlY29y
YXRpb25zKGNvbnN0IFRleHRSdW4mIHRleHRSdW4sIGMKIAogICAgICAgICAvLyBUaGVzZSBkZWNv
cmF0aW9ucyBzaG91bGQgbWF0Y2ggdGhlIHZpc3VhbCBvdmVyZmxvd3MgY29tcHV0ZWQgaW4gdmlz
dWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucygpLgogICAgICAgICBpZiAobV90ZXh0Qm94RGVjb3Jh
dGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAg
ICAgICBhdXRvIG9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhtX3Rl
eHRCb3hTdHlsZSwgbV90ZXh0Qm94KTsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBt
X3N0eWxlcy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93
YXZ5T2Zmc2V0IDogMDsKLSAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBG
bG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKLSAgICAgICAgICAg
IHJlY3QubW92ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVj
b3JhdGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5l
U3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIGF1dG8g
b2Zmc2V0QW5kRGVjb3JhdGluZ0JveCA9IHVuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3hG
b3JUZXh0Qm94UGFpbnRpbmcobV90ZXh0Qm94U3R5bGUsIG1fdGV4dEJveCk7CisgICAgICAgICAg
ICBhdXRvIHN0eWxlVG9Vc2UgPSBbJl0geworICAgICAgICAgICAgICAgIGF1dG8qIGRlY29yYXRp
bmdCb3hFbGVtZW50ID0gb2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0aW5nQm94LmVsZW1l
bnQoKTsKKyAgICAgICAgICAgICAgICBhdXRvIGlzU3BlY2lhbElubGluZUJveCA9ICFkZWNvcmF0
aW5nQm94RWxlbWVudCB8fCBpczxIVE1MQW5jaG9yRWxlbWVudD4oZGVjb3JhdGluZ0JveEVsZW1l
bnQpIHx8IGRlY29yYXRpbmdCb3hFbGVtZW50LT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9udFRh
Zyk7CisgICAgICAgICAgICAgICAgaWYgKGlzU3BlY2lhbElubGluZUJveCB8fCAmb2Zmc2V0QW5k
RGVjb3JhdGluZ0JveC5kZWNvcmF0aW5nQm94ID09IG1fdGV4dEJveC0+cmVuZGVyZXIoKS5wYXJl
bnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1fc3R5bGVzLnVuZGVybGluZTsKKwor
ICAgICAgICAgICAgICAgIC8vIEZJWE1FOiBtYWtlIHRoaWNrbmVzcyBwYXJ0IG9mIHRoZSBkZWNv
cmF0aW9uIHN0eWxlLgorICAgICAgICAgICAgICAgIGF1dG8gaXNGaXJzdExpbmUgPSBtX3RleHRC
b3gtPmxpbmVCb3goKS0+aXNGaXJzdCgpOworICAgICAgICAgICAgICAgIGF1dG8mIGRlY29yYXRp
bmdCb3hTdHlsZSA9IGlzRmlyc3RMaW5lID8gb2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0
aW5nQm94LmZpcnN0TGluZVN0eWxlKCkgOiBvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRp
bmdCb3guc3R5bGUoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3R5bGVzRm9yUmVuZGVyZXIo
b2Zmc2V0QW5kRGVjb3JhdGluZ0JveC5kZWNvcmF0aW5nQm94LCBkZWNvcmF0aW5nQm94U3R5bGUu
dGV4dERlY29yYXRpb25zSW5FZmZlY3QoKSwgaXNGaXJzdExpbmUpLnVuZGVybGluZTsKKyAgICAg
ICAgICAgIH0oKTsKKyAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9IHN0eWxlVG9Vc2UuZGVj
b3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQg
OiAwLmY7CisgICAgICAgICAgICBhdXRvIHVuZGVybGluZVJlY3QgPSBGbG9hdFJlY3QgeyBsb2Nh
bE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSB9Owor
ICAgICAgICAgICAgdW5kZXJsaW5lUmVjdC5tb3ZlKDAuZiwgb2Zmc2V0QW5kRGVjb3JhdGluZ0Jv
eC51bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3Jh
dGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgc3R5bGVUb1VzZS5kZWNvcmF0aW9u
U3R5bGUsIHN0eWxlVG9Vc2UuY29sb3IsIHVuZGVybGluZVJlY3QpOwogICAgICAgICB9CiAgICAg
ICAgIGlmIChtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6
Ok92ZXJsaW5lKSkgewotICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5bGVzLm92
ZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6
IDA7CisgICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0ID0gbV9zdHlsZXMub3ZlcmxpbmUuZGVj
b3JhdGlvblN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQg
OiAwOwogICAgICAgICAgICAgRmxvYXRSZWN0IHJlY3QobG9jYWxPcmlnaW4sIEZsb2F0U2l6ZSht
X3dpZHRoLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcykpOwogICAgICAgICAgICAgZmxvYXQgYXV0
b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERlY29yYXRp
b25UaGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX3RleHRCb3hTdHlsZS5jb21w
dXRlZEZvbnRTaXplKCksIGZvbnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CiAgICAg
ICAgICAgICByZWN0Lm1vdmUoMCwgYXV0b1RleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gdGV4dERl
Y29yYXRpb25UaGlja25lc3MgLSB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3Jh
dGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZVN0eWxl
LCBtX3N0eWxlcy5vdmVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3Jh
dGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lLCBtX3N0eWxlcy5vdmVybGluZS5kZWNv
cmF0aW9uU3R5bGUsIG1fc3R5bGVzLm92ZXJsaW5lLmNvbG9yLCByZWN0KTsKICAgICAgICAgfQog
CiAgICAgICAgIC8vIFdlIG9ubHkgd2FudCB0byBwYWludCB0aGUgc2hhZG93LCBoZW5jZSB0aGUg
dHJhbnNwYXJlbnQgY29sb3IsIG5vdCB0aGUgYWN0dWFsIGxpbmUtdGhyb3VnaCwKQEAgLTMyOSw3
ICszNDAsNyBAQCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRGb3JlZ3JvdW5kRGVj
b3JhdGlvbnMoY29uc3QgRmxvYXRQb2ludCYgYm94T3JpZwogICAgICAgICByZXR1cm47CiAKICAg
ICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0
Qm94U3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxl
LmNvbXB1dGVkRm9udFNpemUoKSwgbV90ZXh0Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQo
KSksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwotICAgIHBhaW50TGluZVRocm91Z2gobV9zdHlsZXMu
bGluZXRocm91Z2hDb2xvciwgdGV4dERlY29yYXRpb25UaGlja25lc3MsIGJveE9yaWdpbik7Cisg
ICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvciwgdGV4dERlY29y
YXRpb25UaGlja25lc3MsIGJveE9yaWdpbik7CiB9CiAKIHZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludExpbmVUaHJvdWdoKGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgdGhpY2tuZXNz
LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhbE9yaWdpbikKQEAgLTM0Miw3ICszNTMsNyBAQCB2b2lk
IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29s
b3IsIGZsb2F0IHRoaWNrbmVzcwogCiAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9y
KTsKIAotICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3Vn
aFN0eWxlOworICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhy
b3VnaC5kZWNvcmF0aW9uU3R5bGU7CiAgICAgYXV0byBzdHJva2VTdHlsZSA9IHRleHREZWNvcmF0
aW9uU3R5bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAogICAgIGlmIChzdHlsZSA9PSBUZXh0RGVj
b3JhdGlvblN0eWxlOjpXYXZ5KQpAQCAtMzYyLDE4ICszNzMsMTggQEAgc3RhdGljIHZvaWQgY29s
bGVjdFN0eWxlc0ZvclJlbmRlcmVyKFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiByZXN1
bHQsIGNvbnMKIAogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lOjpVbmRlcmxpbmUpKSB7CiAgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5y
ZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOwotICAgICAgICAgICAgcmVzdWx0
LnVuZGVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lU3R5
bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lLmNvbG9y
ID0gY29sb3I7CisgICAgICAgICAgICByZXN1bHQudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9
IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKICAgICAgICAgICAgIHJlbWFp
bmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKLSAg
ICAgICAgICAgIHJlc3VsdC5vdmVybGluZUNvbG9yID0gY29sb3I7Ci0gICAgICAgICAgICByZXN1
bHQub3ZlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgIHJlc3VsdC5v
dmVybGluZS5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lLmRlY29y
YXRpb25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgfQogICAgICAgICBpZiAoZGVj
b3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKICAg
ICAgICAgICAgIHJlbWFpbmluZ0RlY29yYXRpb25zLnJlbW92ZShUZXh0RGVjb3JhdGlvbkxpbmU6
OkxpbmVUaHJvdWdoKTsKLSAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaENvbG9yID0gY29s
b3I7Ci0gICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHls
ZTsKKyAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAg
ICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9IGRlY29yYXRpb25TdHls
ZTsKICAgICAgICAgfQogICAgIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0RGVjb3JhdGlvblBhaW50ZXIuaAppbmRleCA5ZGEzZDRiMDQyYjQuLmZmNzNjZjg2ZjUyOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIu
aApAQCAtNTMsMTIgKzUzLDEzIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBvcGVyYXRvcj09KGNv
bnN0IFN0eWxlcyYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0oY29uc3QgU3R5bGVz
JiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0KIAotICAgICAgICBD
b2xvciB1bmRlcmxpbmVDb2xvcjsKLSAgICAgICAgQ29sb3Igb3ZlcmxpbmVDb2xvcjsKLSAgICAg
ICAgQ29sb3IgbGluZXRocm91Z2hDb2xvcjsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSB1
bmRlcmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBvdmVybGluZVN0eWxl
OwotICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGxpbmV0aHJvdWdoU3R5bGU7CisgICAgICAg
IHN0cnVjdCBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB7CisgICAgICAgICAgICBDb2xvciBjb2xv
cjsKKyAgICAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlvblN0eWxlOworICAg
ICAgICB9OworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB1bmRlcmxpbmU7CisgICAg
ICAgIERlY29yYXRpb25TdHlsZUFuZENvbG9yIG92ZXJsaW5lOworICAgICAgICBEZWNvcmF0aW9u
U3R5bGVBbmRDb2xvciBsaW5ldGhyb3VnaDsKICAgICB9OwogICAgIHN0YXRpYyBDb2xvciBkZWNv
cmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmKTsKICAgICBzdGF0aWMgU3R5bGVzIHN0eWxl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bkxpbmU+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2Us
IFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGlu
ZVRleHRCb3hTdHlsZS5jcHAKaW5kZXggMGY5NzY0ZjE0MjQ3Li5iYThlNWY2OWZhN2YgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcApAQCAtNTUsNyArNTUs
NyBAQCBzdGF0aWMgYm9vbCBpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soY29uc3QgUmVuZGVySW5s
aW5lJiBhbmNlc3RvciwgY29uc3QgUmVuZGVyTwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3Rh
dGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxU
b3AsIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlcikKK3N0YXRpYyBmbG9h
dCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2FsVG9wLCBjb25z
dCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIpCiB7CiAgICAgYXV0byBtaW5M
b2dpY2FsVG9wID0gdGV4dFJ1bkxvZ2ljYWxUb3A7CiAgICAgZm9yIChhdXRvIHJ1biA9IGxpbmVC
b3gtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5leHRPbkxpbmUoKSkgewpAQCAt
NjMsOSArNjMsOSBAQCBzdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9u
TGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZQogICAgICAgICAgICAgY29udGlu
dWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFmZmVjdCBjYWxjdWxhdGlvbnMu
CiAKICAgICAgICAgaWYgKCFydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25zSW5FZmZlY3QoKS5j
b250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkpCi0gICAgICAgICAgICBjb250
aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNo
aWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGlvblJlbmRlcmVyfCdzIGhp
ZXJhcmNoeS4KKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9u
IGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9m
IHxkZWNvcmF0aW5nQm94UmVuZGVyZXJ8J3MgaGllcmFyY2h5LgogCi0gICAgICAgIGlmIChkZWNv
cmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5pc1JlbmRlcklubGluZSgpICYm
ICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPigqZGVjb3Jh
dGlvblJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAgICAgIGlmIChkZWNvcmF0aW5n
Qm94UmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2Nr
KGRvd25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGluZ0JveFJlbmRlcmVyKSwgJnJ1bi0+cmVu
ZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICBpZiAocnVuLT5pc1Rl
eHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lwSW5rKCkgPT0gVGV4dERlY29y
YXRpb25Ta2lwSW5rOjpOb25lKQpAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgZmxvYXQgbWluTG9n
aWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJv
eEl0ZQogICAgIHJldHVybiBtaW5Mb2dpY2FsVG9wOwogfQogCi1zdGF0aWMgZmxvYXQgbWF4TG9n
aWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNhbEJvdHRvbSwgY29uc3Qg
UmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyKQorc3RhdGljIGZsb2F0IG1heExvZ2lj
YWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVC
b3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxCb3R0b20sIGNvbnN0IFJl
bmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlcikKIHsKICAgICBhdXRvIG1heExvZ2lj
YWxCb3R0b20gPSB0ZXh0UnVuTG9naWNhbEJvdHRvbTsKICAgICBmb3IgKGF1dG8gcnVuID0gbGlu
ZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7CkBA
IC04Miw5ICs4Miw5IEBAIHN0YXRpYyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29y
YXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94CiAgICAgICAgICAgICBjb250
aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0aW9u
cy4KIAogICAgICAgICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
LmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgIGNv
bnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUg
Y2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW9uUmVuZGVyZXJ8J3Mg
aGllcmFyY2h5LgorICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRp
b24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUg
b2YgfGRlY29yYXRpbmdCb3hSZW5kZXJlcnwncyBoaWVyYXJjaHkuCiAKLSAgICAgICAgaWYgKGRl
Y29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlzUmVuZGVySW5saW5lKCkg
JiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpkZWNv
cmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKGRlY29yYXRp
bmdCb3hSZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxv
Y2soZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW5nQm94UmVuZGVyZXIpLCAmcnVuLT5y
ZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChydW4tPmlz
VGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9PSBUZXh0RGVj
b3JhdGlvblNraXBJbms6Ok5vbmUpCkBAIC05NSwzNCArOTUsNDMgQEAgc3RhdGljIGZsb2F0IG1h
eExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6
OkxpbmVCb3gKIAogc3RhdGljIGNvbnN0IFJlbmRlckVsZW1lbnQqIGVuY2xvc2luZ1JlbmRlcmVy
V2l0aFRleHREZWNvcmF0aW9uKGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBib29sIGZpcnN0
TGluZSkKIHsKLSAgICBjb25zdCBSZW5kZXJFbGVtZW50KiBjdXJyZW50ID0gcmVuZGVyZXIucGFy
ZW50KCk7Ci0gICAgZG8gewotICAgICAgICBpZiAoY3VycmVudC0+aXNSZW5kZXJCbG9jaygpKQot
ICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgICAgIGlmICghY3VycmVudC0+aXNSZW5k
ZXJJbmxpbmUoKSB8fCBjdXJyZW50LT5pc1J1YnlUZXh0KCkpCisgICAgZm9yIChhdXRvKiBhbmNl
c3RvciA9IHJlbmRlcmVyLnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3IgPSBhbmNlc3Rvci0+
cGFyZW50KCkpIHsKKyAgICAgICAgaWYgKGFuY2VzdG9yLT5pc1JlbmRlckJsb2NrKCkpCisgICAg
ICAgICAgICByZXR1cm4gYW5jZXN0b3I7CisKKyAgICAgICAgaWYgKCFhbmNlc3Rvci0+aXNSZW5k
ZXJJbmxpbmUoKSkgeworICAgICAgICAgICAgLy8gV2Ugc2hvdWxkIGFsd2F5cyBmaW5kIGVpdGhl
ciB0aGUgYmxvY2sgY29udGFpbmVyIG9yIGFuIGlubGluZSBib3ggYW5jZXN0b3IgaW5iZXR3ZWVu
LgogICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAotICAgICAgICBjb25z
dCBSZW5kZXJTdHlsZSYgc3R5bGVUb1VzZSA9IGZpcnN0TGluZSA/IGN1cnJlbnQtPmZpcnN0TGlu
ZVN0eWxlKCkgOiBjdXJyZW50LT5zdHlsZSgpOwotICAgICAgICBpZiAoc3R5bGVUb1VzZS50ZXh0
RGVjb3JhdGlvbkxpbmUoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkp
Ci0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICAgICAgY3VycmVudCA9IGN1cnJlbnQt
PnBhcmVudCgpOwotICAgIH0gd2hpbGUgKGN1cnJlbnQgJiYgKCFjdXJyZW50LT5lbGVtZW50KCkg
fHwgKCFpczxIVE1MQW5jaG9yRWxlbWVudD4oKmN1cnJlbnQtPmVsZW1lbnQoKSkgJiYgIWN1cnJl
bnQtPmVsZW1lbnQoKS0+aGFzVGFnTmFtZShIVE1MTmFtZXM6OmZvbnRUYWcpKSkpOworICAgICAg
ICBhdXRvIGlzRGVjb3JhdGluZ0lubGluZUJveCA9IFsmXSB7CisgICAgICAgICAgICBpZiAoYW5j
ZXN0b3ItPmVsZW1lbnQoKSAmJiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNlc3Rvci0+ZWxl
bWVudCgpKSB8fCBhbmNlc3Rvci0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9u
dFRhZykpKSB7CisgICAgICAgICAgICAgICAgLy8gPGZvbnQ+IGFuZCA8YT4gYXJlIGFsd2F5cyBj
b25zaWRlcmVkIGRlY29yYXRpbmcgYm94ZXMuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhdXRvJiBzdHlsZVRvVXNlID0gZmlyc3RMaW5l
ID8gYW5jZXN0b3ItPmZpcnN0TGluZVN0eWxlKCkgOiBhbmNlc3Rvci0+c3R5bGUoKTsKKyAgICAg
ICAgICAgIHJldHVybiBzdHlsZVRvVXNlLnRleHREZWNvcmF0aW9uTGluZSgpLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKKyAgICAgICAgfTsKKyAgICAgICAgaWYgKGlz
RGVjb3JhdGluZ0lubGluZUJveCgpKQorICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworICAg
IH0KKworICAgIHJldHVybiBudWxscHRyOworfQogCi0gICAgcmV0dXJuIGN1cnJlbnQ7CitzdGF0
aWMgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChj
b25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBjb25zdCBSZW5k
ZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIsIGJvb2wgaXNGbGlwcGVkTGluZXNXcml0
aW5nTW9kZSwgZmxvYXQgdGV4dEJveExvZ2ljYWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90
dG9tKQoreworICAgIGlmIChpc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKQorICAgICAgICByZXR1
cm4gdGV4dEJveExvZ2ljYWxUb3AgLSBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5l
KGxpbmVCb3gsIHRleHRCb3hMb2dpY2FsVG9wLCBkZWNvcmF0aW5nQm94UmVuZGVyZXIpOworICAg
IHJldHVybiBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRl
eHRCb3hMb2dpY2FsQm90dG9tLCBkZWNvcmF0aW5nQm94UmVuZGVyZXIpIC0gdGV4dEJveExvZ2lj
YWxCb3R0b207CiB9CiAKIHN0YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3Qo
Y29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgY29uc3QgUmVu
ZGVyVGV4dCYgcmVuZGVyZXIsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0ZXh0Qm94
TG9naWNhbEJvdHRvbSkKIHsKLSAgICBmbG9hdCBvZmZzZXQgPSAwLmY7Ci0gICAgYXV0byogZGVj
b3JhdGlvblJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24ocmVu
ZGVyZXIsIGxpbmVCb3gtPmlzRmlyc3QoKSk7Ci0gICAgaWYgKHJlbmRlcmVyLnN0eWxlKCkuaXNG
bGlwcGVkTGluZXNXcml0aW5nTW9kZSgpKSB7Ci0gICAgICAgIGF1dG8gbWluTG9naWNhbFRvcCA9
IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJveExvZ2lj
YWxUb3AsIGRlY29yYXRpb25SZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldCA9IHRleHRCb3hMb2dp
Y2FsVG9wIC0gbWluTG9naWNhbFRvcDsKLSAgICB9IGVsc2UgewotICAgICAgICBvZmZzZXQgPSBt
YXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVCb3gsIHRleHRCb3hMb2dp
Y2FsQm90dG9tLCBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZzZXQgLT0gdGV4dEJv
eExvZ2ljYWxCb3R0b207Ci0gICAgfQotICAgIHJldHVybiBvZmZzZXQ7CisgICAgYXV0byogZGVj
b3JhdGluZ0JveFJlbmRlcmVyID0gZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24o
cmVuZGVyZXIsIGxpbmVCb3gtPmlzRmlyc3QoKSk7CisgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVu
ZGVyZXIpCisgICAgICAgIHJldHVybiAwLmY7CisgICAgcmV0dXJuIHRleHRSdW5PZmZzZXRGcm9t
Qm90dG9tTW9zdFdpdGhpbkRlY29yYXRpbmdCb3gobGluZUJveCwgKmRlY29yYXRpbmdCb3hSZW5k
ZXJlciwgZGVjb3JhdGluZ0JveFJlbmRlcmVyLT5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGlu
Z01vZGUoKSwgdGV4dEJveExvZ2ljYWxUb3AsIHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIH0KIAog
c3RhdGljIGlubGluZSBmbG9hdCBkZWZhdWx0R2FwKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
QEAgLTI5MCwxOCArMjk5LDMxIEBAIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNv
cmF0aW9ucyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAgICAgcmV0dXJuIGNvbXB1dGVkVmlz
dWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhzdHlsZSwgdW5kZXJsaW5lT2Zmc2V0KTsKIH0KIAot
ZmxvYXQgdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkK
K1VuZGVybGluZU9mZnNldEFuZERlY29yYXRpbmdCb3ggdW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3Jh
dGluZ0JveEZvclRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIGNvbnN0
IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3ImIHRleHRCb3gpCiB7CisgICAgLy8gMS4g
RmluZCB0aGUgZGVjb3JhdGluZyBib3ggZm9yIHRoaXMgdGV4dCBydW4gKGZvciByb290IGlubGlu
ZSBib3ggY29udGVudCwgaXQncyB0aGUgY29udGFpbmluZyBibG9jaywgZm9yIHRleHQgaW5zaWRl
IGFuIGlubGluZSBib3gsIGl0J3MgbW9zdGx5IHRoZSBwYXJlbnQgaW5saW5lIGJveCBpdHNlbGYp
CisgICAgLy8gMi4gY29tcHV0ZSB0aGUgdW5kZXJsaW5lIG9mZnNldC4KKyAgICBhdXRvJiB0ZXh0
Qm94UmVuZGVyZXIgPSB0ZXh0Qm94LT5yZW5kZXJlcigpOwogICAgIGF1dG8gbGluZUJveCA9IHRl
eHRCb3gtPmxpbmVCb3goKTsKKyAgICBhdXRvIGlzRmlyc3RMaW5lID0gbGluZUJveC0+aXNGaXJz
dCgpOworICAgIGF1dG8qIGRlY29yYXRpbmdCb3hSZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVy
V2l0aFRleHREZWNvcmF0aW9uKHRleHRCb3hSZW5kZXJlciwgaXNGaXJzdExpbmUpOworICAgIGlm
ICghZGVjb3JhdGluZ0JveFJlbmRlcmVyKSB7CisgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgICAgICByZXR1cm4geyAwLmYsICp0ZXh0Qm94UmVuZGVyZXIucGFyZW50KCkgfTsKKyAg
ICB9CisKICAgICBhdXRvIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25h
bDxUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlcj4geyB9OwogICAgIGF1dG8gdW5kZXJsaW5lUG9z
aXRpb25WYWx1ZSA9IHJlc29sdmVkVW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIGxpbmVCb3gtPmJh
c2VsaW5lVHlwZSgpKTsKIAogICAgIGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRV
bmRlcmxpbmVQb3NpdGlvbjo6VW5kZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0g
dGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGxpbmVCb3gsIHRleHRCb3gtPnJlbmRlcmVyKCks
IHRleHRCb3gtPmxvZ2ljYWxUb3AoKSwgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAg
ICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGxpbmVC
b3gsIHRleHRCb3hSZW5kZXJlciwgdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dp
Y2FsQm90dG9tKCkpOwogICAgICAgICB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyIHsgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJv
eC0+bG9naWNhbFRvcCgpLCB0ZXh0UnVuT2Zmc2V0IH07CiAgICAgfQogCi0gICAgcmV0dXJuIGNv
bXB1dGVkVW5kZXJsaW5lT2Zmc2V0KHsgc3R5bGUsIHVuZGVybGluZVBvc2l0aW9uVmFsdWUsIGRl
ZmF1bHRHYXAoc3R5bGUpLCB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB9KTsKKyAgICByZXR1
cm4geworICAgICAgICBjb21wdXRlZFVuZGVybGluZU9mZnNldCh7IHN0eWxlLCB1bmRlcmxpbmVQ
b3NpdGlvblZhbHVlLCBkZWZhdWx0R2FwKHN0eWxlKSwgdGV4dFVuZGVybGluZVBvc2l0aW9uVW5k
ZXIgfSksCisgICAgICAgICpkZWNvcmF0aW5nQm94UmVuZGVyZXIKKyAgICB9OwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaCBiL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5oCmluZGV4IDM4NDMyMDlkNjI2
Yi4uZWQ4ODlkZjViMjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVU
ZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5
bGUuaApAQCAtMzMsMzcgKzMzLDQyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgCiBjbGFz
cyBMZWdhY3lJbmxpbmVUZXh0Qm94OworY2xhc3MgUmVuZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRl
clN0eWxlOwogY2xhc3MgVGV4dFVuZGVybGluZU9mZnNldDsKIAogaW5saW5lIGZsb2F0IHdhdnlP
ZmZzZXRGcm9tRGVjb3JhdGlvbigpCiB7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIDEuZjsK
IH0KIAogc3RydWN0IFdhdnlTdHJva2VQYXJhbWV0ZXJzIHsKICAgICAvLyBEaXN0YW5jZSBiZXR3
ZWVuIGRlY29yYXRpb24ncyBheGlzIGFuZCBCZXppZXIgY3VydmUncyBjb250cm9sIHBvaW50cy4K
ICAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBjdXJ2ZSBpcyBiYXNlZCBvbiB0aGlzIGRpc3RhbmNl
LiBJbmNyZWFzZXMgdGhlIGN1cnZlJ3MgaGVpZ2h0CiAgICAgLy8gYXMgZm9udFNpemUgaW5jcmVh
c2VzIHRvIG1ha2UgdGhlIGN1cnZlIGxvb2sgYmV0dGVyLgotICAgIGZsb2F0IGNvbnRyb2xQb2lu
dERpc3RhbmNlIHsgMCB9OworICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlIHsgMC5mIH07
CiAKICAgICAvLyBJbmNyZW1lbnQgdXNlZCB0byBmb3JtIHRoZSBkaWFtb25kIHNoYXBlIGJldHdl
ZW4gc3RhcnQgcG9pbnQgKHAxKSwgY29udHJvbAogICAgIC8vIHBvaW50cyBhbmQgZW5kIHBvaW50
IChwMikgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIGRlY29yYXRpb24uIFRoZSBjdXJ2ZSBnZXRzCiAg
ICAgLy8gd2lkZXIgYXMgZm9udCBzaXplIGluY3JlYXNlcy4KLSAgICBmbG9hdCBzdGVwIHsgMCB9
OworICAgIGZsb2F0IHN0ZXAgeyAwLmYgfTsKIH07CiBXYXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRX
YXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBmb250U2l6ZSk7CiAKIHN0cnVjdCBUZXh0VW5kZXJs
aW5lUG9zaXRpb25VbmRlciB7Ci0gICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQgeyAwIH07
CisgICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQgeyAwLmYgfTsKICAgICAvLyBUaGlzIG9m
ZnNldCB2YWx1ZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgY3VycmVudCB0ZXh0IHJ1bidz
IGxvZ2ljYWwgYm90dG9tIGFuZCB0aGUgbG93ZXN0IHBvc2l0aW9uIG9mIGFsbCB0aGUgdGV4dCBy
dW5zCiAgICAgLy8gb24gbGluZSB0aGF0IGJlbG9uZyB0byB0aGUgc2FtZSBkZWNvcmF0aW9uIGJv
eC4KLSAgICBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QgeyAwIH07CisgICAgZmxv
YXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0IHsgMC5mIH07CiB9OwogR2x5cGhPdmVyZmxv
dyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJik7CiBHbHlw
aE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUm
LCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyKTsKIEdseXBoT3ZlcmZs
b3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGlu
ZUJveEl0ZXJhdG9yJiwgY29uc3QgUmVuZGVyVGV4dCYsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9w
LCBmbG9hdCB0ZXh0Qm94TG9naWNhbEJvdHRvbSk7CiAKLWZsb2F0IHVuZGVybGluZU9mZnNldEZv
clRleHRCb3hQYWludGluZyhjb25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9y
OjpUZXh0Qm94SXRlcmF0b3ImKTsKK3N0cnVjdCBVbmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5n
Qm94IHsKKyAgICBmbG9hdCB1bmRlcmxpbmVPZmZzZXQgeyAwLmYgfTsKKyAgICBjb25zdCBSZW5k
ZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94OworfTsKK1VuZGVybGluZU9mZnNldEFuZERlY29yYXRp
bmdCb3ggdW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhj
b25zdCBSZW5kZXJTdHlsZSYsIGNvbnN0IElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3Im
KTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461458</attachid>
            <date>2022-08-06 21:20:58 -0700</date>
            <delta_ts>2022-08-06 22:04:43 -0700</delta_ts>
            <desc>for EWS with dependency</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>32296</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmZiMzVhNzkyNzNj
Li4zMDdjOWQ4MzQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC04NDMsMTIgKzg0MywxMiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0
eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbgogCiAgICAgICAg
IGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlV
bmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNv
bG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNv
bG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xv
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUs
IGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IpLmdldCgpLCByYW5n
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgQFlF
UywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3Ry
aW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBjb2Nv
YUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsK
KyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNv
cmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yKS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxl
ZE1hcmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRl
eHQuY3BwCmluZGV4IDRmZmU2NzIxNjU0My4uZjU2OTlkOGFkZGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCkBAIC01OCwxNiArNTgsMTYgQEAg
c3RhdGljIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dChjb25zdCBN
YXJrZWRUZXh0JiBtYXJrZWRUZXh0LAogICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9IHJl
bmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogCiAgICAgICAgICAgICBpZiAo
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7Ci0g
ICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lQ29sb3Ig
PSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRl
cmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAg
ICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7Ci0gICAgICAgICAg
ICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwot
ICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25T
dHlsZXMub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5
bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKLSAgICAgICAgICAgICAgICBzdHls
ZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7Ci0gICAgICAg
ICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hTdHlsZSA9IGRl
Y29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxl
cy5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRE
ZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9IGRlY29yYXRpb25T
dHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGQ3NGU3YTk1ODEwNS4u
YTM0ZGNlY2U4ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKQEAgLTQzMywxMSArNDMzLDkgQEAgVGV4dERlY29yYXRpb25QYWludGVyIFRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6Y3JlYXRlRGVjb3JhdGlvblBhaW50ZXIoY29uc3QKICAgICB9
CiAKICAgICAvLyBDcmVhdGUgcGFpbnRlcgotICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0gbV9z
dHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIHRleHREZWNvcmF0aW9ucy5hZGQo
VGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKG1h
cmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMpKTsKICAgICBhdXRvKiBzaGFkb3cg
PSBtYXJrZWRUZXh0LnN0eWxlLnRleHRTaGFkb3cgPyAmbWFya2VkVGV4dC5zdHlsZS50ZXh0U2hh
ZG93LnZhbHVlKCkgOiBudWxscHRyOwogICAgIGF1dG8qIGNvbG9yRmlsdGVyID0gbWFya2VkVGV4
dC5zdHlsZS50ZXh0U2hhZG93ICYmIG1fc3R5bGUuaGFzQXBwbGVDb2xvckZpbHRlcigpID8gJm1f
c3R5bGUuYXBwbGVDb2xvckZpbHRlcigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4geyBjb250ZXh0
LCB0ZXh0RGVjb3JhdGlvbnMsIG1faXNGaXJzdExpbmUsIGZvbnRDYXNjYWRlKCksIG1ha2VJdGVy
YXRvcigpLCBzbmFwcGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpLCBzaGFkb3csIGNvbG9yRmlsdGVy
LCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzIH07CisgICAgcmV0dXJuIHsg
Y29udGV4dCwgZm9udENhc2NhZGUoKSwgbWFrZUl0ZXJhdG9yKCksIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0LndpZHRoKCksIHNoYWRvdywgY29sb3JGaWx0ZXIsIG1hcmtlZFRleHQuc3R5bGUudGV4dERl
Y29yYXRpb25TdHlsZXMgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CmluZGV4IGQ2NGY1MzNmYmZkNi4uZTZkZjBlODBmNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTg1LDE1ICsxODUs
MjYgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxl
KFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKICAgICByZXR1cm4gc3Ryb2tlU3R5bGU7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29y
YXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxl
cyYgc3R5bGUpCit7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlv
bnM7CisgICAgaWYgKHN0eWxlLnVuZGVybGluZS5jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRl
Y29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CisgICAgaWYgKHN0
eWxlLm92ZXJsaW5lLmNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRl
eHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOworICAgIGlmIChzdHlsZS5saW5ldGhyb3VnaC5j
b2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxp
bmU6OkxpbmVUaHJvdWdoKTsKKyAgICByZXR1cm4gZGVjb3JhdGlvbnM7Cit9CisKIGJvb2wgVGV4
dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBvdGhl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gdW5kZXJsaW5lQ29sb3IgPT0gb3RoZXIudW5kZXJsaW5l
Q29sb3IgJiYgb3ZlcmxpbmVDb2xvciA9PSBvdGhlci5vdmVybGluZUNvbG9yICYmIGxpbmV0aHJv
dWdoQ29sb3IgPT0gb3RoZXIubGluZXRocm91Z2hDb2xvcgotICAgICAgICAmJiB1bmRlcmxpbmVT
dHlsZSA9PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVyLm92
ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0eWxl
OworICAgIHJldHVybiB1bmRlcmxpbmUuY29sb3IgPT0gb3RoZXIudW5kZXJsaW5lLmNvbG9yICYm
IG92ZXJsaW5lLmNvbG9yID09IG90aGVyLm92ZXJsaW5lLmNvbG9yICYmIGxpbmV0aHJvdWdoLmNv
bG9yID09IG90aGVyLmxpbmV0aHJvdWdoLmNvbG9yCisgICAgICAgICYmIHVuZGVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSAmJiBvdmVybGlu
ZS5kZWNvcmF0aW9uU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlICYmIGxp
bmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaC5kZWNvcmF0aW9u
U3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4g
ZGVjb3JhdGlvbnMsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gsIGZsb2F0IHdpZHRoLCBjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIGNvbG9yRmlsdGVy
LCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29yYXRpb25QYWludGVyOjpU
ZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciB0ZXh0Qm94LCBm
bG9hdCB3aWR0aCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zKiBjb2xvckZpbHRlciwgU3R5bGVzIHN0eWxlT3ZlcnJpZGUpCiAgICAgOiBtX2NvbnRleHQg
eyBjb250ZXh0IH0KLSAgICAsIG1fZGVjb3JhdGlvbnMgeyBkZWNvcmF0aW9ucyB9CiAgICAgLCBt
X3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSB9CiAgICAgLCBtX3dpZHRo
KHdpZHRoKQogICAgICwgbV9pc1ByaW50aW5nIHsgdGV4dEJveC0+cmVuZGVyZXIoKS5kb2N1bWVu
dCgpLnByaW50aW5nKCkgfQpAQCAtMjAzLDE2ICsyMTQsMTggQEAgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRp
b25TZXQKICAgICAsIG1fdGV4dEJveCh0ZXh0Qm94KQogICAgICwgbV9mb250IHsgZm9udCB9CiAg
ICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKHRleHRCb3gtPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShz
dHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIodGV4dEJveC0+cmVuZGVyZXIoKSwgZGVjb3JhdGlv
bnMsIGlzRmlyc3RMaW5lLCBQc2V1ZG9JZDo6Tm9uZSkgfQotICAgICwgbV9saW5lU3R5bGUgeyBp
c0ZpcnN0TGluZSA/IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHRleHRC
b3gtPnJlbmRlcmVyKCkuc3R5bGUoKSB9CisgICAgLCBtX3N0eWxlcyB7IHN0eWxlT3ZlcnJpZGUg
fQorICAgICwgbV90ZXh0Qm94U3R5bGUgeyB0ZXh0Qm94LT5saW5lQm94KCktPmlzRmlyc3QoKSA/
IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHRleHRCb3gtPnJlbmRlcmVy
KCkuc3R5bGUoKSB9CiB7CisgICAgbV90ZXh0Qm94RGVjb3JhdGlvbnMgPSBtX3RleHRCb3hTdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgIG1fdGV4dEJveERlY29yYXRpb25zLmFk
ZCh0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHN0eWxlT3ZlcnJpZGUpKTsKIH0KIAog
Ly8gUGFpbnQgdGV4dC1zaGFkb3csIHVuZGVybGluZSwgb3ZlcmxpbmUKIHZvaWQgVGV4dERlY29y
YXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0
ZXh0UnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFBvaW50JiBi
b3hPcmlnaW4pCiB7Ci0gICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5t
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBjZWlsVG9EZXZpY2VQaXhlbChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygp
LnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyksIG1f
ZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV90ZXh0
Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKKyAgICBhdXRvIHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0Qm94U3R5bGUudGV4dERlY29yYXRp
b25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwg
Zm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICBGbG9hdFBvaW50IGxvY2Fs
T3JpZ2luID0gYm94T3JpZ2luOwogCiAgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRl
eHREZWNvcmF0aW9uTGluZSBkZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgewpAQCAtMjIxLDkgKzIz
NCw5IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAgICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUg
PSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICAgICAgaWYg
KHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpCi0gICAgICAgICAgICBzdHJva2VX
YXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX2xpbmVTdHlsZS5jb21wdXRlZEZv
bnRQaXhlbFNpemUoKSk7CisgICAgICAgICAgICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9j
b250ZXh0LCByZWN0LCBtX3RleHRCb3hTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7Ci0gICAg
ICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHRE
ZWNvcmF0aW9uU2tpcEluazo6QXV0byB8fCBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXBJ
bmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6OkFsbCkgJiYgbV9pc0hvcml6b250YWwpIHsK
KyAgICAgICAgICAgIGlmICgobV90ZXh0Qm94U3R5bGUudGV4dERlY29yYXRpb25Ta2lwSW5rKCkg
PT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBdXRvIHx8IG1fdGV4dEJveFN0eWxlLnRleHREZWNv
cmF0aW9uU2tpcEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6QWxsKSAmJiBtX2lzSG9y
aXpvbnRhbCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJs
ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lQm91bmRpbmdC
b3ggPSBtX2NvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgbV9pc1By
aW50aW5nKTsKICAgICAgICAgICAgICAgICAgICAgRGFzaEFycmF5IGludGVyc2VjdGlvbnMgPSBt
X2ZvbnQuZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KHRleHRSdW4sIHRleHRPcmlnaW4s
IHVuZGVybGluZUJvdW5kaW5nQm94KTsKQEAgLTI0MCw5ICsyNTMsOSBAQCB2b2lkIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYg
dGV4dFJ1biwgYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAot
ICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV9kZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkgfHwgbV9zdHlsZXMudW5k
ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHx8IG1fc3R5bGVzLm92ZXJsaW5lQ29s
b3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3Iu
aXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYg
KCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVy
bGluZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgICYm
ICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVy
bGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgJiYg
KCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvci5pc09wYXF1ZSgpKTsKIAogICAg
IGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3Bh
cXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yODMsMjQgKzI5NiwzNSBA
QCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMo
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2Ug
ZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGlu
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAg
ICBhdXRvIG9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhtX2xpbmVT
dHlsZSwgbV90ZXh0Qm94KTsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxl
cy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zm
c2V0IDogMDsKLSAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNp
emUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKLSAgICAgICAgICAgIHJlY3Qu
bW92ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUs
IG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgaWYgKG1fdGV4dEJveERl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgeworICAg
ICAgICAgICAgYXV0byBvZmZzZXRBbmREZWNvcmF0aW5nQm94ID0gdW5kZXJsaW5lT2Zmc2V0QW5k
RGVjb3JhdGluZ0JveEZvclRleHRCb3hQYWludGluZyhtX3RleHRCb3hTdHlsZSwgbV90ZXh0Qm94
KTsKKyAgICAgICAgICAgIGF1dG8gc3R5bGVUb1VzZSA9IFsmXSB7CisgICAgICAgICAgICAgICAg
YXV0byogZGVjb3JhdGluZ0JveEVsZW1lbnQgPSBvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29y
YXRpbmdCb3guZWxlbWVudCgpOworICAgICAgICAgICAgICAgIGF1dG8gaXNTcGVjaWFsSW5saW5l
Qm94ID0gIWRlY29yYXRpbmdCb3hFbGVtZW50IHx8IGlzPEhUTUxBbmNob3JFbGVtZW50PihkZWNv
cmF0aW5nQm94RWxlbWVudCkgfHwgZGVjb3JhdGluZ0JveEVsZW1lbnQtPmhhc1RhZ05hbWUoSFRN
TE5hbWVzOjpmb250VGFnKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNTcGVjaWFsSW5saW5lQm94
IHx8ICZvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdCb3ggPT0gbV90ZXh0Qm94LT5y
ZW5kZXJlcigpLnBhcmVudCgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbV9zdHlsZXMu
dW5kZXJsaW5lOworCisgICAgICAgICAgICAgICAgLy8gRklYTUU6IG1ha2UgdGhpY2tuZXNzIHBh
cnQgb2YgdGhlIGRlY29yYXRpb24gc3R5bGUuCisgICAgICAgICAgICAgICAgYXV0byBpc0ZpcnN0
TGluZSA9IG1fdGV4dEJveC0+bGluZUJveCgpLT5pc0ZpcnN0KCk7CisgICAgICAgICAgICAgICAg
YXV0byYgZGVjb3JhdGluZ0JveFN0eWxlID0gaXNGaXJzdExpbmUgPyBvZmZzZXRBbmREZWNvcmF0
aW5nQm94LmRlY29yYXRpbmdCb3guZmlyc3RMaW5lU3R5bGUoKSA6IG9mZnNldEFuZERlY29yYXRp
bmdCb3guZGVjb3JhdGluZ0JveC5zdHlsZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBzdHls
ZXNGb3JSZW5kZXJlcihvZmZzZXRBbmREZWNvcmF0aW5nQm94LmRlY29yYXRpbmdCb3gsIGRlY29y
YXRpbmdCb3hTdHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpLCBpc0ZpcnN0TGluZSkudW5k
ZXJsaW5lOworICAgICAgICAgICAgfSgpOworICAgICAgICAgICAgYXV0byB3YXZ5T2Zmc2V0ID0g
c3R5bGVUb1VzZS5kZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/
IG1fd2F2eU9mZnNldCA6IDAuZjsKKyAgICAgICAgICAgIGF1dG8gdW5kZXJsaW5lUmVjdCA9IEZs
b2F0UmVjdCB7IGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25U
aGlja25lc3MpIH07CisgICAgICAgICAgICB1bmRlcmxpbmVSZWN0Lm1vdmUoMC5mLCBvZmZzZXRB
bmREZWNvcmF0aW5nQm94LnVuZGVybGluZU9mZnNldCArIHdhdnlPZmZzZXQpOworICAgICAgICAg
ICAgcGFpbnREZWNvcmF0aW9uKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lLCBzdHlsZVRv
VXNlLmRlY29yYXRpb25TdHlsZSwgc3R5bGVUb1VzZS5jb2xvciwgdW5kZXJsaW5lUmVjdCk7CiAg
ICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRp
b25MaW5lOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0
eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlP
ZmZzZXQgOiAwOworICAgICAgICBpZiAobV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4
dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZz
ZXQgPSBtX3N0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25T
dHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBGbG9hdFJlY3QgcmVj
dChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
KSk7Ci0gICAgICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjZWls
VG9EZXZpY2VQaXhlbChUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5y
ZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpLCBtX2Rl
dmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVsKFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVh
dGVXaXRoQXV0bygpLnJlc29sdmUobV90ZXh0Qm94U3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBm
b250TWV0cmljcyksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAgICAgcmVjdC5tb3Zl
KDAsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
IC0gd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRp
b25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3Zlcmxp
bmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRp
b25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlLCBtX3N0
eWxlcy5vdmVybGluZS5jb2xvciwgcmVjdCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBv
bmx5IHdhbnQgdG8gcGFpbnQgdGhlIHNoYWRvdywgaGVuY2UgdGhlIHRyYW5zcGFyZW50IGNvbG9y
LCBub3QgdGhlIGFjdHVhbCBsaW5lLXRocm91Z2gsCiAgICAgICAgIC8vIHdoaWNoIHdpbGwgYmUg
cGFpbnRlZCBpbiBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucygpLgotICAgICAgICBpZiAoc2hh
ZG93ICYmIG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhy
b3VnaCkpCisgICAgICAgIGlmIChzaGFkb3cgJiYgbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFp
bnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgICAgICBwYWludExp
bmVUaHJvdWdoKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVz
cywgbG9jYWxPcmlnaW4pOwogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiAKQEAgLTMxMiwyOCArMzM2
LDI4IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAKIHZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhjb25zdCBGbG9hdFBvaW50JiBib3hPcmln
aW4pCiB7Ci0gICAgaWYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGlu
ZTo6TGluZVRocm91Z2gpKQorICAgIGlmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChtX2xpbmVT
dHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0
ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9udCgpKSwgbV9kZXZp
Y2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxlcy5saW5ldGhyb3Vn
aENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3JpZ2luKTsKKyAgICBhdXRvIHRl
eHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0Qm94U3R5bGUu
dGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNvbXB1dGVk
Rm9udFNpemUoKSwgbV90ZXh0Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKSksIG1fZGV2
aWNlU2NhbGVGYWN0b3IpOworICAgIHBhaW50TGluZVRocm91Z2gobV9zdHlsZXMubGluZXRocm91
Z2guY29sb3IsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4pOwogfQogCiB2b2lk
IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29s
b3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4pCiB7Ci0g
ICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5tZXRyaWNzT2ZQcmltYXJ5
Rm9udCgpOworICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV90ZXh0Qm94U3R5bGUubWV0
cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxv
YXRTaXplKG1fd2lkdGgsIHRoaWNrbmVzcykpOwotICAgIGF1dG8gYXV0b1RleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERlY29yYXRpb25UaGlja25lc3M6OmNy
ZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIGZv
bnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgYXV0byBhdXRvVGV4dERlY29y
YXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChUZXh0RGVjb3JhdGlvblRoaWNrbmVz
czo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNvbXB1dGVkRm9udFNp
emUoKSwgZm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICBhdXRvIGNlbnRl
ciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9UZXh0RGVjb3JhdGlv
blRoaWNrbmVzcyAvIDI7CiAgICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHRoaWNrbmVzcyAvIDIp
OwogCiAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAotICAgIFRleHREZWNv
cmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3VnaFN0eWxlOworICAgIFRleHRE
ZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5
bGU7CiAgICAgYXV0byBzdHJva2VTdHlsZSA9IHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0
eWxlKHN0eWxlKTsKIAogICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5
KQotICAgICAgICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX2xp
bmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgICAgIHN0cm9rZVdhdnlUZXh0
RGVjb3JhdGlvbihtX2NvbnRleHQsIHJlY3QsIG1fdGV4dEJveFN0eWxlLmNvbXB1dGVkRm9udFBp
eGVsU2l6ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIG1fY29udGV4dC5kcmF3TGluZUZvclRleHQo
cmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpEb3VibGUs
IHN0cm9rZVN0eWxlKTsKIH0KQEAgLTM0OSwxOCArMzczLDE4IEBAIHN0YXRpYyB2b2lkIGNvbGxl
Y3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgcmVzdWx0
LCBjb25zCiAKICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgcmVtYWluaW5nRGVjb3JhdGlvbnMucmVt
b3ZlKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAgICAgICAgICAgIHJlc3VsdC51
bmRlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZVN0eWxl
ID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5jb2xvciA9
IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUgPSBk
ZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAgICAgICByZW1haW5p
bmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSk7Ci0gICAg
ICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0
Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQub3Zl
cmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3VsdC5vdmVybGluZS5kZWNvcmF0
aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKSB7CiAgICAg
ICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpM
aW5lVGhyb3VnaCk7Ci0gICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hDb2xvciA9IGNvbG9y
OwotICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7
CisgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2guY29sb3IgPSBjb2xvcjsKKyAgICAgICAg
ICAgIHJlc3VsdC5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7
CiAgICAgICAgIH0KICAgICB9OwogCkBAIC00MDAsMTggKzQyNCw2IEBAIENvbG9yIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6ZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkK
ICAgICByZXR1cm4gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENvbG9yRmlsdGVyKENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvcik7CiB9CiAKLU9wdGlvblNldDxUZXh0RGVjb3Jh
dGlvbkxpbmU+IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRpb25zSW5FZmZlY3RG
b3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYgc3R5bGUpCi17Ci0g
ICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7Ci0gICAgaWYgKHN0
eWxlLnVuZGVybGluZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUub3ZlcmxpbmVDb2xv
ci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6
Ok92ZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUubGluZXRocm91Z2hDb2xvci5pc1ZhbGlkKCkpCi0g
ICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKTsK
LSAgICByZXR1cm4gZGVjb3JhdGlvbnM7Ci19OwotCiBhdXRvIFRleHREZWNvcmF0aW9uUGFpbnRl
cjo6c3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5kZXJlciwgT3B0aW9u
U2V0PFRleHREZWNvcmF0aW9uTGluZT4gcmVxdWVzdGVkRGVjb3JhdGlvbnMsIGJvb2wgZmlyc3RM
aW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHlsZXMKIHsKICAgICBpZiAocmVxdWVz
dGVkRGVjb3JhdGlvbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4IDRkYTJlNDYzODFhNS4uZmY3M2NmODZmNTI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWlu
dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRl
ci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRleHRSdW47CiBjbGFzcyBUZXh0RGVjb3JhdGlv
blBhaW50ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBTdHlsZXM7Ci0gICAgVGV4dERlY29yYXRp
b25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+
IGRlY29yYXRpb25zLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2FzY2FkZSYsIElubGlu
ZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IsIGZsb2F0IHdpZHRoLCBjb25zdCBTaGFkb3dEYXRh
KiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyosIHN0ZDo6b3B0aW9uYWw8U3R5bGVzPiA9IHN0ZDo6
bnVsbG9wdCk7CisgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIGNv
bnN0IEZvbnRDYXNjYWRlJiwgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciwgZmxvYXQg
d2lkdGgsIGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zKiwgU3R5bGVz
KTsKIAogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYs
IGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWdp
bik7CiAgICAgdm9pZCBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhjb25zdCBGbG9hdFBvaW50
JiBib3hPcmlnaW4pOwpAQCAtNTMsMjIgKzUzLDIyIEBAIHB1YmxpYzoKICAgICAgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlcyYpIGNvbnN0OwogICAgICAgICBib29sIG9wZXJhdG9yIT0o
Y29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7IH0K
IAotICAgICAgICBDb2xvciB1bmRlcmxpbmVDb2xvcjsKLSAgICAgICAgQ29sb3Igb3ZlcmxpbmVD
b2xvcjsKLSAgICAgICAgQ29sb3IgbGluZXRocm91Z2hDb2xvcjsKLSAgICAgICAgVGV4dERlY29y
YXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBv
dmVybGluZVN0eWxlOwotICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGxpbmV0aHJvdWdoU3R5
bGU7CisgICAgICAgIHN0cnVjdCBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB7CisgICAgICAgICAg
ICBDb2xvciBjb2xvcjsKKyAgICAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGlv
blN0eWxlOworICAgICAgICB9OworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB1bmRl
cmxpbmU7CisgICAgICAgIERlY29yYXRpb25TdHlsZUFuZENvbG9yIG92ZXJsaW5lOworICAgICAg
ICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciBsaW5ldGhyb3VnaDsKICAgICB9OwogICAgIHN0YXRp
YyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmKTsKLSAgICBzdGF0aWMg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25zSW5FZmZlY3RGb3JT
dHlsZShjb25zdCBTdHlsZXMmKTsKICAgICBzdGF0aWMgU3R5bGVzIHN0eWxlc0ZvclJlbmRlcmVy
KGNvbnN0IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlvbkxpbmU+IHJlcXVl
c3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2UsIFBzZXVkb0lkID0g
UHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRMaW5lVGhyb3VnaChj
b25zdCBDb2xvciYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmln
aW4pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAgT3B0aW9uU2V0PFRl
eHREZWNvcmF0aW9uTGluZT4gbV9kZWNvcmF0aW9uczsKKyAgICBPcHRpb25TZXQ8VGV4dERlY29y
YXRpb25MaW5lPiBtX3RleHRCb3hEZWNvcmF0aW9uczsKICAgICBmbG9hdCBtX3dhdnlPZmZzZXQg
eyAwIH07CiAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsKICAgICBGbG9hdFBvaW50IG1fYm94T3Jp
Z2luOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1fZGV2aWNlU2NhbGVG
YWN0b3IgeyAwIH07CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7Ci0gICAgY29uc3QgUmVuZGVyU3R5
bGUmIG1fbGluZVN0eWxlOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3RleHRCb3hTdHlsZTsK
IH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
SW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCAwZjk3NjRmMTQyNDcuLmJhOGU1ZjY5ZmE3ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCkBAIC01NSw3
ICs1NSw3IEBAIHN0YXRpYyBib29sIGlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhjb25zdCBSZW5k
ZXJJbmxpbmUmIGFuY2VzdG9yLCBjb25zdCBSZW5kZXJPCiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1zdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJ
bmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9n
aWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRlcmVyKQorc3RhdGlj
IGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRl
cmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxUb3As
IGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlcikKIHsKICAgICBhdXRv
IG1pbkxvZ2ljYWxUb3AgPSB0ZXh0UnVuTG9naWNhbFRvcDsKICAgICBmb3IgKGF1dG8gcnVuID0g
bGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4dE9uTGluZSgpKSB7
CkBAIC02Myw5ICs2Myw5IEBAIHN0YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29y
YXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlCiAgICAgICAgICAgICBj
b250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZmZWN0IGNhbGN1bGF0
aW9ucy4KIAogICAgICAgICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0
aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW9uUmVuZGVyZXJ8
J3MgaGllcmFyY2h5LgorICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29y
YXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNp
ZGUgb2YgfGRlY29yYXRpbmdCb3hSZW5kZXJlcnwncyBoaWVyYXJjaHkuCiAKLSAgICAgICAgaWYg
KGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlzUmVuZGVySW5saW5l
KCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KCpk
ZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAgICAgaWYgKGRlY29y
YXRpbmdCb3hSZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGlu
QmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW5nQm94UmVuZGVyZXIpLCAmcnVu
LT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChydW4t
PmlzVGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvblNraXBJbmsoKSA9PSBUZXh0
RGVjb3JhdGlvblNraXBJbms6Ok5vbmUpCkBAIC03NCw3ICs3NCw3IEBAIHN0YXRpYyBmbG9hdCBt
aW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpM
aW5lQm94SXRlCiAgICAgcmV0dXJuIG1pbkxvZ2ljYWxUb3A7CiB9CiAKLXN0YXRpYyBmbG9hdCBt
YXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2FsQm90dG9tLCBj
b25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIpCitzdGF0aWMgZmxvYXQgbWF4
TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6
TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNhbEJvdHRvbSwgY29u
c3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0JveFJlbmRlcmVyKQogewogICAgIGF1dG8gbWF4
TG9naWNhbEJvdHRvbSA9IHRleHRSdW5Mb2dpY2FsQm90dG9tOwogICAgIGZvciAoYXV0byBydW4g
PSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0T25MaW5lKCkp
IHsKQEAgLTgyLDkgKzgyLDkgQEAgc3RhdGljIGZsb2F0IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0
RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3gKICAgICAgICAgICAg
IGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZlY3QgY2FsY3Vs
YXRpb25zLgogCiAgICAgICAgIGlmICghcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uc0luRWZm
ZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQotICAgICAgICAg
ICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9u
IHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpb25SZW5kZXJl
cnwncyBoaWVyYXJjaHkuCisgICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVj
b3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0
c2lkZSBvZiB8ZGVjb3JhdGluZ0JveFJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KIAotICAgICAgICBp
ZiAoZGVjb3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRpb25SZW5kZXJlci0+aXNSZW5kZXJJbmxp
bmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4o
KmRlY29yYXRpb25SZW5kZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQorICAgICAgICBpZiAoZGVj
b3JhdGluZ0JveFJlbmRlcmVyLmlzUmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRo
aW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGRlY29yYXRpbmdCb3hSZW5kZXJlciksICZy
dW4tPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgaWYgKHJ1
bi0+aXNUZXh0KCkgfHwgcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRl
eHREZWNvcmF0aW9uU2tpcEluazo6Tm9uZSkKQEAgLTk1LDM0ICs5NSw0MyBAQCBzdGF0aWMgZmxv
YXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVy
YXRvcjo6TGluZUJveAogCiBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVudCogZW5jbG9zaW5nUmVu
ZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dCYgcmVuZGVyZXIsIGJvb2wg
Zmlyc3RMaW5lKQogewotICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGN1cnJlbnQgPSByZW5kZXJl
ci5wYXJlbnQoKTsKLSAgICBkbyB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5pc1JlbmRlckJsb2Nr
KCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICAgICAgaWYgKCFjdXJyZW50LT5p
c1JlbmRlcklubGluZSgpIHx8IGN1cnJlbnQtPmlzUnVieVRleHQoKSkKKyAgICBmb3IgKGF1dG8q
IGFuY2VzdG9yID0gcmVuZGVyZXIucGFyZW50KCk7IGFuY2VzdG9yOyBhbmNlc3RvciA9IGFuY2Vz
dG9yLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoYW5jZXN0b3ItPmlzUmVuZGVyQmxvY2soKSkK
KyAgICAgICAgICAgIHJldHVybiBhbmNlc3RvcjsKKworICAgICAgICBpZiAoIWFuY2VzdG9yLT5p
c1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGZpbmQg
ZWl0aGVyIHRoZSBibG9jayBjb250YWluZXIgb3IgYW4gaW5saW5lIGJveCBhbmNlc3RvciBpbmJl
dHdlZW4uCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAgfQogCi0gICAgICAg
IGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gZmlyc3RMaW5lID8gY3VycmVudC0+Zmly
c3RMaW5lU3R5bGUoKSA6IGN1cnJlbnQtPnN0eWxlKCk7Ci0gICAgICAgIGlmIChzdHlsZVRvVXNl
LnRleHREZWNvcmF0aW9uTGluZSgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJs
aW5lKSkKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwotICAgICAgICBjdXJyZW50ID0gY3Vy
cmVudC0+cGFyZW50KCk7Ci0gICAgfSB3aGlsZSAoY3VycmVudCAmJiAoIWN1cnJlbnQtPmVsZW1l
bnQoKSB8fCAoIWlzPEhUTUxBbmNob3JFbGVtZW50PigqY3VycmVudC0+ZWxlbWVudCgpKSAmJiAh
Y3VycmVudC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9udFRhZykpKSk7Cisg
ICAgICAgIGF1dG8gaXNEZWNvcmF0aW5nSW5saW5lQm94ID0gWyZdIHsKKyAgICAgICAgICAgIGlm
IChhbmNlc3Rvci0+ZWxlbWVudCgpICYmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2VzdG9y
LT5lbGVtZW50KCkpIHx8IGFuY2VzdG9yLT5lbGVtZW50KCktPmhhc1RhZ05hbWUoSFRNTE5hbWVz
Ojpmb250VGFnKSkpIHsKKyAgICAgICAgICAgICAgICAvLyA8Zm9udD4gYW5kIDxhPiBhcmUgYWx3
YXlzIGNvbnNpZGVyZWQgZGVjb3JhdGluZyBib3hlcy4KKyAgICAgICAgICAgICAgICByZXR1cm4g
dHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHN0eWxlVG9Vc2UgPSBmaXJz
dExpbmUgPyBhbmNlc3Rvci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGFuY2VzdG9yLT5zdHlsZSgpOwor
ICAgICAgICAgICAgcmV0dXJuIHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFp
bnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOworICAgICAgICB9OworICAgICAgICBp
ZiAoaXNEZWNvcmF0aW5nSW5saW5lQm94KCkpCisgICAgICAgICAgICByZXR1cm4gYW5jZXN0b3I7
CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAKLSAgICByZXR1cm4gY3VycmVudDsK
K3N0YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3RXaXRoaW5EZWNvcmF0aW5n
Qm94KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGNvbnN0
IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlciwgYm9vbCBpc0ZsaXBwZWRMaW5l
c1dyaXRpbmdNb2RlLCBmbG9hdCB0ZXh0Qm94TG9naWNhbFRvcCwgZmxvYXQgdGV4dEJveExvZ2lj
YWxCb3R0b20pCit7CisgICAgaWYgKGlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUpCisgICAgICAg
IHJldHVybiB0ZXh0Qm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlv
bkxpbmUobGluZUJveCwgdGV4dEJveExvZ2ljYWxUb3AsIGRlY29yYXRpbmdCb3hSZW5kZXJlcik7
CisgICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJv
eCwgdGV4dEJveExvZ2ljYWxCb3R0b20sIGRlY29yYXRpbmdCb3hSZW5kZXJlcikgLSB0ZXh0Qm94
TG9naWNhbEJvdHRvbTsKIH0KIAogc3RhdGljIGZsb2F0IHRleHRSdW5PZmZzZXRGcm9tQm90dG9t
TW9zdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBjb25z
dCBSZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgdGV4dEJveExvZ2ljYWxUb3AsIGZsb2F0IHRl
eHRCb3hMb2dpY2FsQm90dG9tKQogewotICAgIGZsb2F0IG9mZnNldCA9IDAuZjsKLSAgICBhdXRv
KiBkZWNvcmF0aW9uUmVuZGVyZXIgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlv
bihyZW5kZXJlciwgbGluZUJveC0+aXNGaXJzdCgpKTsKLSAgICBpZiAocmVuZGVyZXIuc3R5bGUo
KS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgYXV0byBtaW5Mb2dpY2Fs
VG9wID0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5lQm94LCB0ZXh0Qm94
TG9naWNhbFRvcCwgZGVjb3JhdGlvblJlbmRlcmVyKTsKLSAgICAgICAgb2Zmc2V0ID0gdGV4dEJv
eExvZ2ljYWxUb3AgLSBtaW5Mb2dpY2FsVG9wOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIG9mZnNl
dCA9IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJv
eExvZ2ljYWxCb3R0b20sIGRlY29yYXRpb25SZW5kZXJlcik7Ci0gICAgICAgIG9mZnNldCAtPSB0
ZXh0Qm94TG9naWNhbEJvdHRvbTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNldDsKKyAgICBhdXRv
KiBkZWNvcmF0aW5nQm94UmVuZGVyZXIgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3Jh
dGlvbihyZW5kZXJlciwgbGluZUJveC0+aXNGaXJzdCgpKTsKKyAgICBpZiAoIWRlY29yYXRpbmdC
b3hSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDAuZjsKKyAgICByZXR1cm4gdGV4dFJ1bk9mZnNl
dEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChsaW5lQm94LCAqZGVjb3JhdGluZ0Jv
eFJlbmRlcmVyLCBkZWNvcmF0aW5nQm94UmVuZGVyZXItPnN0eWxlKCkuaXNGbGlwcGVkTGluZXNX
cml0aW5nTW9kZSgpLCB0ZXh0Qm94TG9naWNhbFRvcCwgdGV4dEJveExvZ2ljYWxCb3R0b20pOwog
fQogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlKQpAQCAtMjkwLDE4ICsyOTksMzEgQEAgR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0Zv
ckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gY29tcHV0
ZWRWaXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKHN0eWxlLCB1bmRlcmxpbmVPZmZzZXQpOwog
fQogCi1mbG9hdCB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0
Qm94KQorVW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveCB1bmRlcmxpbmVPZmZzZXRBbmRE
ZWNvcmF0aW5nQm94Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSwg
Y29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKIHsKKyAgICAv
LyAxLiBGaW5kIHRoZSBkZWNvcmF0aW5nIGJveCBmb3IgdGhpcyB0ZXh0IHJ1biAoZm9yIHJvb3Qg
aW5saW5lIGJveCBjb250ZW50LCBpdCdzIHRoZSBjb250YWluaW5nIGJsb2NrLCBmb3IgdGV4dCBp
bnNpZGUgYW4gaW5saW5lIGJveCwgaXQncyBtb3N0bHkgdGhlIHBhcmVudCBpbmxpbmUgYm94IGl0
c2VsZikKKyAgICAvLyAyLiBjb21wdXRlIHRoZSB1bmRlcmxpbmUgb2Zmc2V0LgorICAgIGF1dG8m
IHRleHRCb3hSZW5kZXJlciA9IHRleHRCb3gtPnJlbmRlcmVyKCk7CiAgICAgYXV0byBsaW5lQm94
ID0gdGV4dEJveC0+bGluZUJveCgpOworICAgIGF1dG8gaXNGaXJzdExpbmUgPSBsaW5lQm94LT5p
c0ZpcnN0KCk7CisgICAgYXV0byogZGVjb3JhdGluZ0JveFJlbmRlcmVyID0gZW5jbG9zaW5nUmVu
ZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dEJveFJlbmRlcmVyLCBpc0ZpcnN0TGluZSk7Cisg
ICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgICAgIHJldHVybiB7IDAuZiwgKnRleHRCb3hSZW5kZXJlci5wYXJlbnQoKSB9
OworICAgIH0KKwogICAgIGF1dG8gdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBzdGQ6Om9w
dGlvbmFsPFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyPiB7IH07CiAgICAgYXV0byB1bmRlcmxp
bmVQb3NpdGlvblZhbHVlID0gcmVzb2x2ZWRVbmRlcmxpbmVQb3NpdGlvbihzdHlsZSwgbGluZUJv
eC0+YmFzZWxpbmVUeXBlKCkpOwogCiAgICAgaWYgKHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPT0g
VGV4dFVuZGVybGluZVBvc2l0aW9uOjpVbmRlcikgewotICAgICAgICBhdXRvIHRleHRSdW5PZmZz
ZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QobGluZUJveCwgdGV4dEJveC0+cmVuZGVy
ZXIoKSwgdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwor
ICAgICAgICBhdXRvIHRleHRSdW5PZmZzZXQgPSB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3Qo
bGluZUJveCwgdGV4dEJveFJlbmRlcmVyLCB0ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRCb3gt
PmxvZ2ljYWxCb3R0b20oKSk7CiAgICAgICAgIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyID0g
VGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgeyB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkgLSB0
ZXh0Qm94LT5sb2dpY2FsVG9wKCksIHRleHRSdW5PZmZzZXQgfTsKICAgICB9CiAKLSAgICByZXR1
cm4gY29tcHV0ZWRVbmRlcmxpbmVPZmZzZXQoeyBzdHlsZSwgdW5kZXJsaW5lUG9zaXRpb25WYWx1
ZSwgZGVmYXVsdEdhcChzdHlsZSksIHRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVyIH0pOworICAg
IHJldHVybiB7CisgICAgICAgIGNvbXB1dGVkVW5kZXJsaW5lT2Zmc2V0KHsgc3R5bGUsIHVuZGVy
bGluZVBvc2l0aW9uVmFsdWUsIGRlZmF1bHRHYXAoc3R5bGUpLCB0ZXh0VW5kZXJsaW5lUG9zaXRp
b25VbmRlciB9KSwKKyAgICAgICAgKmRlY29yYXRpbmdCb3hSZW5kZXJlcgorICAgIH07CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKaW5kZXggMzg0MzIw
OWQ2MjZiLi5lZDg4OWRmNWIyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lu
bGluZVRleHRCb3hTdHlsZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRC
b3hTdHlsZS5oCkBAIC0zMywzNyArMzMsNDIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAK
IGNsYXNzIExlZ2FjeUlubGluZVRleHRCb3g7CitjbGFzcyBSZW5kZXJFbGVtZW50OwogY2xhc3Mg
UmVuZGVyU3R5bGU7CiBjbGFzcyBUZXh0VW5kZXJsaW5lT2Zmc2V0OwogCiBpbmxpbmUgZmxvYXQg
d2F2eU9mZnNldEZyb21EZWNvcmF0aW9uKCkKIHsKLSAgICByZXR1cm4gMTsKKyAgICByZXR1cm4g
MS5mOwogfQogCiBzdHJ1Y3QgV2F2eVN0cm9rZVBhcmFtZXRlcnMgewogICAgIC8vIERpc3RhbmNl
IGJldHdlZW4gZGVjb3JhdGlvbidzIGF4aXMgYW5kIEJlemllciBjdXJ2ZSdzIGNvbnRyb2wgcG9p
bnRzLgogICAgIC8vIFRoZSBoZWlnaHQgb2YgdGhlIGN1cnZlIGlzIGJhc2VkIG9uIHRoaXMgZGlz
dGFuY2UuIEluY3JlYXNlcyB0aGUgY3VydmUncyBoZWlnaHQKICAgICAvLyBhcyBmb250U2l6ZSBp
bmNyZWFzZXMgdG8gbWFrZSB0aGUgY3VydmUgbG9vayBiZXR0ZXIuCi0gICAgZmxvYXQgY29udHJv
bFBvaW50RGlzdGFuY2UgeyAwIH07CisgICAgZmxvYXQgY29udHJvbFBvaW50RGlzdGFuY2UgeyAw
LmYgfTsKIAogICAgIC8vIEluY3JlbWVudCB1c2VkIHRvIGZvcm0gdGhlIGRpYW1vbmQgc2hhcGUg
YmV0d2VlbiBzdGFydCBwb2ludCAocDEpLCBjb250cm9sCiAgICAgLy8gcG9pbnRzIGFuZCBlbmQg
cG9pbnQgKHAyKSBhbG9uZyB0aGUgYXhpcyBvZiB0aGUgZGVjb3JhdGlvbi4gVGhlIGN1cnZlIGdl
dHMKICAgICAvLyB3aWRlciBhcyBmb250IHNpemUgaW5jcmVhc2VzLgotICAgIGZsb2F0IHN0ZXAg
eyAwIH07CisgICAgZmxvYXQgc3RlcCB7IDAuZiB9OwogfTsKIFdhdnlTdHJva2VQYXJhbWV0ZXJz
IGdldFdhdnlTdHJva2VQYXJhbWV0ZXJzKGZsb2F0IGZvbnRTaXplKTsKIAogc3RydWN0IFRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyIHsKLSAgICBmbG9hdCB0ZXh0UnVuTG9naWNhbEhlaWdodCB7
IDAgfTsKKyAgICBmbG9hdCB0ZXh0UnVuTG9naWNhbEhlaWdodCB7IDAuZiB9OwogICAgIC8vIFRo
aXMgb2Zmc2V0IHZhbHVlIGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHRleHQg
cnVuJ3MgbG9naWNhbCBib3R0b20gYW5kIHRoZSBsb3dlc3QgcG9zaXRpb24gb2YgYWxsIHRoZSB0
ZXh0IHJ1bnMKICAgICAvLyBvbiBsaW5lIHRoYXQgYmVsb25nIHRvIHRoZSBzYW1lIGRlY29yYXRp
b24gYm94LgotICAgIGZsb2F0IHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdCB7IDAgfTsKKyAg
ICBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3QgeyAwLmYgfTsKIH07CiBHbHlwaE92
ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmKTsK
IEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhjb25zdCBSZW5kZXJT
dHlsZSYsIEZvbnRCYXNlbGluZSwgVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIpOwogR2x5cGhP
dmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IElubGluZUl0ZXJhdG9y
OjpMaW5lQm94SXRlcmF0b3ImLCBjb25zdCBSZW5kZXJUZXh0JiwgZmxvYXQgdGV4dEJveExvZ2lj
YWxUb3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKTsKIAotZmxvYXQgdW5kZXJsaW5lT2Zm
c2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgSW5saW5lSXRl
cmF0b3I6OlRleHRCb3hJdGVyYXRvciYpOworc3RydWN0IFVuZGVybGluZU9mZnNldEFuZERlY29y
YXRpbmdCb3ggeworICAgIGZsb2F0IHVuZGVybGluZU9mZnNldCB7IDAuZiB9OworICAgIGNvbnN0
IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3g7Cit9OworVW5kZXJsaW5lT2Zmc2V0QW5kRGVj
b3JhdGluZ0JveCB1bmRlcmxpbmVPZmZzZXRBbmREZWNvcmF0aW5nQm94Rm9yVGV4dEJveFBhaW50
aW5nKGNvbnN0IFJlbmRlclN0eWxlJiwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVy
YXRvciYpOwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461459</attachid>
            <date>2022-08-06 22:04:45 -0700</date>
            <delta_ts>2022-08-07 08:00:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-243619-20220806220444.patch</filename>
            <type>text/plain</type>
            <size>23496</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBiODEzNDM5NTYxYjExNzI5ZjFhMGM5MzZjMzllOTEyNDdiNjMzZjBiIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJ1anRhcyA8emFsYW5AYXBwbGUuY29tPgpEYXRlOiBT
YXQsIDYgQXVnIDIwMjIgMTg6MDQ6MDkgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbUGFpbnRpbmdd
IENsZWFudXAgdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nCiBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjQzNjE5CgpSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KClRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIGNhc2VzIHdoZW4gd2Ugc3RhcnQgZHJh
d2luZyBtdWx0aXBsZSBsaW5lcyBmb3IgYSB0ZXh0IHJ1biB3aXRoIChwb3NzaWJseSkgZGlmZmVy
ZW50IHN0eWxlLgoKKiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3Np
YmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbToKKEFYQXR0cmlidXRlU3RyaW5nU2V0U3R5bGUpOgoq
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TdHlsZWRNYXJrZWRUZXh0LmNwcDoKKFdlYkNvcmU6
OnJlc29sdmVTdHlsZUZvck1hcmtlZFRleHQpOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9U
ZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwOgooV2ViQ29yZTo6dGV4dERlY29yYXRpb25zSW5FZmZl
Y3RGb3JTdHlsZSk6CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlczo6b3Bl
cmF0b3I9PSBjb25zdCk6CihXZWJDb3JlOjpUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50QmFj
a2dyb3VuZERlY29yYXRpb25zKToKKFdlYkNvcmU6OlRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFp
bnRGb3JlZ3JvdW5kRGVjb3JhdGlvbnMpOgooV2ViQ29yZTo6VGV4dERlY29yYXRpb25QYWludGVy
OjpwYWludExpbmVUaHJvdWdoKToKKFdlYkNvcmU6OmNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcik6
CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oOgoqIFNv
dXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHA6CihXZWJDb3JlOjptaW5M
b2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKToKKFdlYkNvcmU6Om1heExvZ2ljYWxCb3R0
b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUpOgooV2ViQ29yZTo6dGV4dFJ1bk9mZnNldEZyb21Cb3R0
b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveCk6CihXZWJDb3JlOjp0ZXh0UnVuT2Zmc2V0RnJvbUJv
dHRvbU1vc3QpOgooV2ViQ29yZTo6dW5kZXJsaW5lT2Zmc2V0QW5kRGVjb3JhdGluZ0JveEZvclRl
eHRCb3hQYWludGluZyk6CihXZWJDb3JlOjp1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRp
bmcpOiBEZWxldGVkLgoqIFNvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5o
OgotLS0KIC4uLi9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0gICB8ICA0
ICstCiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAgfCAxMiAr
LS0KIC4uLi9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcCAgICAgICB8IDQ2ICsr
KysrKy0tLS0tLQogLi4uL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5o
IHwgMTMgKystLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcCAg
IHwgNzUgKysrKysrKysrKysrLS0tLS0tLQogU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4
dEJveFN0eWxlLmggICAgIHwgMTEgKy0tCiA2IGZpbGVzIGNoYW5nZWQsIDkxIGluc2VydGlvbnMo
KyksIDcwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMu
bW0KaW5kZXggNmZiMzVhNzkyNzNjLi4zMDdjOWQ4MzQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyTWFjLm1tCkBAIC04NDMsMTIgKzg0MywxMiBAQCBzdGF0aWMgdm9pZCBB
WEF0dHJpYnV0ZVN0cmluZ1NldFN0eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJT
dHJpbmcsIFJlbgogCiAgICAgICAgIGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5k
ZXJsaW5lKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3Ry
aW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7
Ci0gICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNj
ZXNzaWJpbGl0eVVuZGVybGluZUNvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0
aW9uU3R5bGVzLnVuZGVybGluZUNvbG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhB
dHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxp
bmVDb2xvclRleHRBdHRyaWJ1dGUsIGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxp
bmUuY29sb3IpLmdldCgpLCByYW5nZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGVjb3Ig
JiBUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJv
dWdoVGV4dEF0dHJpYnV0ZSwgQFlFUywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVT
dHJpbmdTZXRDb2xvcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29s
b3JUZXh0QXR0cmlidXRlLCBjb2NvYUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hD
b2xvcikuZ2V0KCksIHJhbmdlKTsKKyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29s
b3IoYXR0clN0cmluZywgTlNBY2Nlc3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJp
YnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yKS5nZXQo
KSwgcmFuZ2UpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCmluZGV4IDRmZmU2NzIxNjU0My4uZjU2OTlkOGFk
ZGNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3Bw
CkBAIC01OCwxNiArNTgsMTYgQEAgc3RhdGljIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxl
Rm9yTWFya2VkVGV4dChjb25zdCBNYXJrZWRUZXh0JiBtYXJrZWRUZXh0LAogICAgICAgICAgICAg
YXV0byBkZWNvcmF0aW9ucyA9IHJlbmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgp
OwogCiAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25T
dHlsZXMudW5kZXJsaW5lQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAg
ICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IgPSBj
b2xvcjsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxp
bmUuZGVjb3JhdGlvblN0eWxlID0gZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3Zl
cmxpbmUpKSB7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3Zl
cmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9u
U3R5bGVzLm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAg
c3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAg
ICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9u
U3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAo
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsK
LSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENv
bG9yID0gY29sb3I7Ci0gICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMu
bGluZXRocm91Z2hTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHls
ZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAg
ICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmRlY29yYXRp
b25TdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAg
ICAgICBicmVhazsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVj
b3JhdGlvblBhaW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0
aW9uUGFpbnRlci5jcHAKaW5kZXggZjVlNzM5NzIzOWQxLi5mMzkyYzU0OTE0NmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3BwCkBA
IC0xODgsMTkgKzE4OCwxOSBAQCBzdGF0aWMgU3Ryb2tlU3R5bGUgdGV4dERlY29yYXRpb25TdHls
ZVRvU3Ryb2tlU3R5bGUoVGV4dERlY29yYXRpb25TdHlsZSBkZWNvcmF0aQogc3RhdGljIGlubGlu
ZSBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZv
clN0eWxlKGNvbnN0IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6U3R5bGVzJiBzdHlsZSkKIHsKICAg
ICBPcHRpb25TZXQ8VGV4dERlY29yYXRpb25MaW5lPiBkZWNvcmF0aW9uczsKLSAgICBpZiAoc3R5
bGUudW5kZXJsaW5lQ29sb3IuaXNWYWxpZCgpKQorICAgIGlmIChzdHlsZS51bmRlcmxpbmUuY29s
b3IuaXNWYWxpZCgpKQogICAgICAgICBkZWNvcmF0aW9ucy5hZGQoVGV4dERlY29yYXRpb25MaW5l
OjpVbmRlcmxpbmUpOwotICAgIGlmIChzdHlsZS5vdmVybGluZUNvbG9yLmlzVmFsaWQoKSkKKyAg
ICBpZiAoc3R5bGUub3ZlcmxpbmUuY29sb3IuaXNWYWxpZCgpKQogICAgICAgICBkZWNvcmF0aW9u
cy5hZGQoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSk7Ci0gICAgaWYgKHN0eWxlLmxpbmV0
aHJvdWdoQ29sb3IuaXNWYWxpZCgpKQorICAgIGlmIChzdHlsZS5saW5ldGhyb3VnaC5jb2xvci5p
c1ZhbGlkKCkpCiAgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6Okxp
bmVUaHJvdWdoKTsKICAgICByZXR1cm4gZGVjb3JhdGlvbnM7CiB9CiAKIGJvb2wgVGV4dERlY29y
YXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBvdGhlcikgY29u
c3QKIHsKLSAgICByZXR1cm4gdW5kZXJsaW5lQ29sb3IgPT0gb3RoZXIudW5kZXJsaW5lQ29sb3Ig
JiYgb3ZlcmxpbmVDb2xvciA9PSBvdGhlci5vdmVybGluZUNvbG9yICYmIGxpbmV0aHJvdWdoQ29s
b3IgPT0gb3RoZXIubGluZXRocm91Z2hDb2xvcgotICAgICAgICAmJiB1bmRlcmxpbmVTdHlsZSA9
PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVyLm92ZXJsaW5l
U3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0eWxlOworICAg
IHJldHVybiB1bmRlcmxpbmUuY29sb3IgPT0gb3RoZXIudW5kZXJsaW5lLmNvbG9yICYmIG92ZXJs
aW5lLmNvbG9yID09IG90aGVyLm92ZXJsaW5lLmNvbG9yICYmIGxpbmV0aHJvdWdoLmNvbG9yID09
IG90aGVyLmxpbmV0aHJvdWdoLmNvbG9yCisgICAgICAgICYmIHVuZGVybGluZS5kZWNvcmF0aW9u
U3R5bGUgPT0gb3RoZXIudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSAmJiBvdmVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlICYmIGxpbmV0aHJv
dWdoLmRlY29yYXRpb25TdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGU7
CiB9CiAKIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRm9udENhc2NhZGUmIGZvbnQsIElubGluZUl0ZXJh
dG9yOjpUZXh0Qm94SXRlcmF0b3IgdGV4dEJveCwgZmxvYXQgd2lkdGgsIGNvbnN0IFNoYWRvd0Rh
dGEqIHNoYWRvdywgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyogY29sb3JGaWx0ZXIsIFN0eWxlcyBz
dHlsZU92ZXJyaWRlKQpAQCAtMjUzLDkgKzI1Myw5IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBj
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICB9OwogCi0gICAgYm9vbCBh
cmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5j
b250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkgfHwgbV9zdHlsZXMudW5kZXJs
aW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5j
b250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGlu
ZUNvbG9yLmlzT3BhcXVlKCkpCi0gICAgICAgICYmICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29u
dGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkgfHwgbV9zdHlsZXMubGluZXRo
cm91Z2hDb2xvci5pc09wYXF1ZSgpKTsKKyAgICBib29sIGFyZUxpbmVzT3BhcXVlID0gIW1faXNQ
cmludGluZyAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKSB8fCBtX3N0eWxlcy51bmRlcmxpbmUuY29sb3IuaXNPcGFxdWUoKSkK
KyAgICAgICAgJiYgKCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlv
bkxpbmU6Ok92ZXJsaW5lKSB8fCBtX3N0eWxlcy5vdmVybGluZS5jb2xvci5pc09wYXF1ZSgpKQor
ICAgICAgICAmJiAoIW1fdGV4dEJveERlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yLmlzT3BhcXVl
KCkpOwogCiAgICAgZmxvYXQgZXh0cmFPZmZzZXQgPSAwOwogICAgIGJvb2wgY2xpcHBpbmcgPSAh
YXJlTGluZXNPcGFxdWUgJiYgbV9zaGFkb3cgJiYgbV9zaGFkb3ctPm5leHQoKTsKQEAgLTI5Nywx
OCArMjk3LDE4IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmRE
ZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAKICAgICAgICAgLy8gVGhlc2Ug
ZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGlu
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KICAgICAgICAgaWYgKG1fdGV4dEJveERl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewotICAg
ICAgICAgICAgYXV0byBvZmZzZXQgPSB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmco
bV90ZXh0Qm94U3R5bGUsIG1fdGV4dEJveCk7Ci0gICAgICAgICAgICBmbG9hdCB3YXZ5T2Zmc2V0
ID0gbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSA/
IG1fd2F2eU9mZnNldCA6IDA7Ci0gICAgICAgICAgICBGbG9hdFJlY3QgcmVjdChsb2NhbE9yaWdp
biwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSk7Ci0gICAgICAg
ICAgICByZWN0Lm1vdmUoMCwgb2Zmc2V0ICsgd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWlu
dERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVuZGVy
bGluZVN0eWxlLCBtX3N0eWxlcy51bmRlcmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBh
dXRvIHVuZGVybGluZU9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyht
X3RleHRCb3hTdHlsZSwgbV90ZXh0Qm94KTsKKyAgICAgICAgICAgIGF1dG8gd2F2eU9mZnNldCA9
IG1fc3R5bGVzLnVuZGVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHls
ZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDAuZjsKKyAgICAgICAgICAgIGF1dG8gdW5kZXJsaW5l
UmVjdCA9IEZsb2F0UmVjdCB7IGxvY2FsT3JpZ2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERl
Y29yYXRpb25UaGlja25lc3MpIH07CisgICAgICAgICAgICB1bmRlcmxpbmVSZWN0Lm1vdmUoMC5m
LCB1bmRlcmxpbmVPZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKKyAgICAgICAgICAgIHBhaW50RGVjb3Jh
dGlvbihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lLmRl
Y29yYXRpb25TdHlsZSwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLCB1bmRlcmxpbmVSZWN0KTsK
ICAgICAgICAgfQogICAgICAgICBpZiAobV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4
dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZz
ZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldhdnkg
PyBtX3dhdnlPZmZzZXQgOiAwOworICAgICAgICAgICAgZmxvYXQgd2F2eU9mZnNldCA9IG1fc3R5
bGVzLm92ZXJsaW5lLmRlY29yYXRpb25TdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5
ID8gbV93YXZ5T2Zmc2V0IDogMDsKICAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3Jp
Z2luLCBGbG9hdFNpemUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKICAgICAg
ICAgICAgIGZsb2F0IGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBp
eGVsKFRleHREZWNvcmF0aW9uVGhpY2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV90
ZXh0Qm94U3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyksIG1fZGV2aWNlU2Nh
bGVGYWN0b3IpOwogICAgICAgICAgICAgcmVjdC5tb3ZlKDAsIGF1dG9UZXh0RGVjb3JhdGlvblRo
aWNrbmVzcyAtIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7Ci0gICAgICAg
ICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHls
ZXMub3ZlcmxpbmVTdHlsZSwgbV9zdHlsZXMub3ZlcmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAg
ICAgICBwYWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHls
ZXMub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlLCBtX3N0eWxlcy5vdmVybGluZS5jb2xvciwgcmVj
dCk7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gcGFpbnQgdGhlIHNo
YWRvdywgaGVuY2UgdGhlIHRyYW5zcGFyZW50IGNvbG9yLCBub3QgdGhlIGFjdHVhbCBsaW5lLXRo
cm91Z2gsCkBAIC0zMjksNyArMzI5LDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBh
aW50Rm9yZWdyb3VuZERlY29yYXRpb25zKGNvbnN0IEZsb2F0UG9pbnQmIGJveE9yaWcKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgYXV0byB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0Rl
dmljZVBpeGVsKG1fdGV4dEJveFN0eWxlLnRleHREZWNvcmF0aW9uVGhpY2tuZXNzKCkucmVzb2x2
ZShtX3RleHRCb3hTdHlsZS5jb21wdXRlZEZvbnRTaXplKCksIG1fdGV4dEJveFN0eWxlLm1ldHJp
Y3NPZlByaW1hcnlGb250KCkpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKLSAgICBwYWludExpbmVU
aHJvdWdoKG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3IsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNz
LCBib3hPcmlnaW4pOworICAgIHBhaW50TGluZVRocm91Z2gobV9zdHlsZXMubGluZXRocm91Z2gu
Y29sb3IsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4pOwogfQogCiB2b2lkIFRl
eHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25zdCBDb2xvciYgY29sb3Is
IGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxPcmlnaW4pCkBAIC0zNDIs
NyArMzQyLDcgQEAgdm9pZCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OnBhaW50TGluZVRocm91Z2go
Y29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCB0aGlja25lc3MKIAogICAgIG1fY29udGV4dC5zZXRT
dHJva2VDb2xvcihjb2xvcik7CiAKLSAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0gbV9z
dHlsZXMubGluZXRocm91Z2hTdHlsZTsKKyAgICBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlID0g
bV9zdHlsZXMubGluZXRocm91Z2guZGVjb3JhdGlvblN0eWxlOwogICAgIGF1dG8gc3Ryb2tlU3R5
bGUgPSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICBpZiAo
c3R5bGUgPT0gVGV4dERlY29yYXRpb25TdHlsZTo6V2F2eSkKQEAgLTM2MiwxOCArMzYyLDE4IEBA
IHN0YXRpYyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50
ZXI6OlN0eWxlcyYgcmVzdWx0LCBjb25zCiAKICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgcmVtYWlu
aW5nRGVjb3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAg
ICAgICAgICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVz
dWx0LnVuZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgcmVzdWx0
LnVuZGVybGluZS5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5k
ZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYg
KGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAg
ICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5l
OjpPdmVybGluZSk7Ci0gICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwot
ICAgICAgICAgICAgcmVzdWx0Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAg
ICAgICAgICByZXN1bHQub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3Vs
dC5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0K
ICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGlu
ZVRocm91Z2gpKSB7CiAgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4
dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7Ci0gICAgICAgICAgICByZXN1bHQubGluZXRo
cm91Z2hDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2guY29sb3Ig
PSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICB9OwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmgKaW5kZXggOWRhM2Q0YjA0MmI0
Li5mZjczY2Y4NmY1MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0
RGVjb3JhdGlvblBhaW50ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmgKQEAgLTUzLDEyICs1MywxMyBAQCBwdWJsaWM6CiAgICAgICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZXMmKSBjb25zdDsKICAgICAgICAgYm9vbCBvcGVyYXRv
ciE9KGNvbnN0IFN0eWxlcyYgb3RoZXIpIGNvbnN0IHsgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIp
OyB9CiAKLSAgICAgICAgQ29sb3IgdW5kZXJsaW5lQ29sb3I7Ci0gICAgICAgIENvbG9yIG92ZXJs
aW5lQ29sb3I7Ci0gICAgICAgIENvbG9yIGxpbmV0aHJvdWdoQ29sb3I7Ci0gICAgICAgIFRleHRE
ZWNvcmF0aW9uU3R5bGUgdW5kZXJsaW5lU3R5bGU7Ci0gICAgICAgIFRleHREZWNvcmF0aW9uU3R5
bGUgb3ZlcmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29yYXRpb25TdHlsZSBsaW5ldGhyb3Vn
aFN0eWxlOworICAgICAgICBzdHJ1Y3QgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3IgeworICAgICAg
ICAgICAgQ29sb3IgY29sb3I7CisgICAgICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGRlY29y
YXRpb25TdHlsZTsKKyAgICAgICAgfTsKKyAgICAgICAgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3Ig
dW5kZXJsaW5lOworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciBvdmVybGluZTsKKyAg
ICAgICAgRGVjb3JhdGlvblN0eWxlQW5kQ29sb3IgbGluZXRocm91Z2g7CiAgICAgfTsKICAgICBz
dGF0aWMgQ29sb3IgZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3Rh
dGljIFN0eWxlcyBzdHlsZXNGb3JSZW5kZXJlcihjb25zdCBSZW5kZXJPYmplY3QmLCBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiByZXF1ZXN0ZWREZWNvcmF0aW9ucywgYm9vbCBmaXJzdExp
bmVTdHlsZSA9IGZhbHNlLCBQc2V1ZG9JZCA9IFBzZXVkb0lkOjpOb25lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwCmluZGV4IDBmOTc2NGYxNDI0Ny4uYzE1
NjY5MzVkYmE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hTdHlsZS5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGJvb2wgaXNBbmNlc3RvckFuZFdpdGhpbkJsb2Nr
KGNvbnN0IFJlbmRlcklubGluZSYgYW5jZXN0b3IsIGNvbnN0IFJlbmRlck8KICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXN0YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25M
aW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0
IHRleHRSdW5Mb2dpY2FsVG9wLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVy
ZXIpCitzdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShjb25z
dCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVu
TG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0JveFJlbmRlcmVyKQog
ewogICAgIGF1dG8gbWluTG9naWNhbFRvcCA9IHRleHRSdW5Mb2dpY2FsVG9wOwogICAgIGZvciAo
YXV0byBydW4gPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVyc2VOZXh0
T25MaW5lKCkpIHsKQEAgLTYzLDkgKzYzLDkgQEAgc3RhdGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BG
b3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGUKICAg
ICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBhZmZl
Y3QgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIGlmICghcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0
aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKQot
ICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4g
ZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRp
b25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCisgICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhl
IHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11
c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGluZ0JveFJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KIAot
ICAgICAgICBpZiAoZGVjb3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRpb25SZW5kZXJlci0+aXNS
ZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRl
cklubGluZT4oKmRlY29yYXRpb25SZW5kZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQorICAgICAg
ICBpZiAoZGVjb3JhdGluZ0JveFJlbmRlcmVyLmlzUmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0
b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGRlY29yYXRpbmdCb3hSZW5k
ZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAgICAg
ICAgaWYgKHJ1bi0+aXNUZXh0KCkgfHwgcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uU2tpcElu
aygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6Tm9uZSkKQEAgLTc0LDcgKzc0LDcgQEAgc3Rh
dGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5l
SXRlcmF0b3I6OkxpbmVCb3hJdGUKICAgICByZXR1cm4gbWluTG9naWNhbFRvcDsKIH0KIAotc3Rh
dGljIGZsb2F0IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5s
aW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1bkxvZ2lj
YWxCb3R0b20sIGNvbnN0IFJlbmRlckVsZW1lbnQqIGRlY29yYXRpb25SZW5kZXJlcikKK3N0YXRp
YyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dpY2Fs
Qm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50JiBkZWNvcmF0aW5nQm94UmVuZGVyZXIpCiB7CiAg
ICAgYXV0byBtYXhMb2dpY2FsQm90dG9tID0gdGV4dFJ1bkxvZ2ljYWxCb3R0b207CiAgICAgZm9y
IChhdXRvIHJ1biA9IGxpbmVCb3gtPmZpcnN0TGVhZkJveCgpOyBydW47IHJ1bi50cmF2ZXJzZU5l
eHRPbkxpbmUoKSkgewpAQCAtODIsOSArODIsOSBAQCBzdGF0aWMgZmxvYXQgbWF4TG9naWNhbEJv
dHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveAog
ICAgICAgICAgICAgY29udGludWU7IC8vIFBvc2l0aW9uZWQgcGxhY2Vob2xkZXJzIGRvbid0IGFm
ZmVjdCBjYWxjdWxhdGlvbnMuCiAKICAgICAgICAgaWYgKCFydW4tPnN0eWxlKCkudGV4dERlY29y
YXRpb25zSW5FZmZlY3QoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkp
Ci0gICAgICAgICAgICBjb250aW51ZTsgLy8gSWYgdGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBp
biBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3Jh
dGlvblJlbmRlcmVyfCdzIGhpZXJhcmNoeS4KKyAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0
aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGluIGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQg
bXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0aW5nQm94UmVuZGVyZXJ8J3MgaGllcmFyY2h5Lgog
Ci0gICAgICAgIGlmIChkZWNvcmF0aW9uUmVuZGVyZXIgJiYgZGVjb3JhdGlvblJlbmRlcmVyLT5p
c1JlbmRlcklubGluZSgpICYmICFpc0FuY2VzdG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVu
ZGVySW5saW5lPigqZGVjb3JhdGlvblJlbmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCisgICAg
ICAgIGlmIChkZWNvcmF0aW5nQm94UmVuZGVyZXIuaXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNl
c3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJlbmRlcklubGluZT4oZGVjb3JhdGluZ0JveFJl
bmRlcmVyKSwgJnJ1bi0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAogICAg
ICAgICBpZiAocnVuLT5pc1RleHQoKSB8fCBydW4tPnN0eWxlKCkudGV4dERlY29yYXRpb25Ta2lw
SW5rKCkgPT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpOb25lKQpAQCAtOTUsMzQgKzk1LDQzIEBA
IHN0YXRpYyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0
IElubGluZUl0ZXJhdG9yOjpMaW5lQm94CiAKIHN0YXRpYyBjb25zdCBSZW5kZXJFbGVtZW50KiBl
bmNsb3NpbmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbihjb25zdCBSZW5kZXJUZXh0JiByZW5k
ZXJlciwgYm9vbCBmaXJzdExpbmUpCiB7Ci0gICAgY29uc3QgUmVuZGVyRWxlbWVudCogY3VycmVu
dCA9IHJlbmRlcmVyLnBhcmVudCgpOwotICAgIGRvIHsKLSAgICAgICAgaWYgKGN1cnJlbnQtPmlz
UmVuZGVyQmxvY2soKSkKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwotICAgICAgICBpZiAo
IWN1cnJlbnQtPmlzUmVuZGVySW5saW5lKCkgfHwgY3VycmVudC0+aXNSdWJ5VGV4dCgpKQorICAg
IGZvciAoYXV0byogYW5jZXN0b3IgPSByZW5kZXJlci5wYXJlbnQoKTsgYW5jZXN0b3I7IGFuY2Vz
dG9yID0gYW5jZXN0b3ItPnBhcmVudCgpKSB7CisgICAgICAgIGlmIChhbmNlc3Rvci0+aXNSZW5k
ZXJCbG9jaygpKQorICAgICAgICAgICAgcmV0dXJuIGFuY2VzdG9yOworCisgICAgICAgIGlmICgh
YW5jZXN0b3ItPmlzUmVuZGVySW5saW5lKCkpIHsKKyAgICAgICAgICAgIC8vIFdlIHNob3VsZCBh
bHdheXMgZmluZCBlaXRoZXIgdGhlIGJsb2NrIGNvbnRhaW5lciBvciBhbiBpbmxpbmUgYm94IGFu
Y2VzdG9yIGluYmV0d2Vlbi4KICAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CiAKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlVG9Vc2UgPSBmaXJzdExpbmUgPyBj
dXJyZW50LT5maXJzdExpbmVTdHlsZSgpIDogY3VycmVudC0+c3R5bGUoKTsKLSAgICAgICAgaWYg
KHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25MaW5lKCkuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpVbmRlcmxpbmUpKQotICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7Ci0gICAgICAgIGN1
cnJlbnQgPSBjdXJyZW50LT5wYXJlbnQoKTsKLSAgICB9IHdoaWxlIChjdXJyZW50ICYmICghY3Vy
cmVudC0+ZWxlbWVudCgpIHx8ICghaXM8SFRNTEFuY2hvckVsZW1lbnQ+KCpjdXJyZW50LT5lbGVt
ZW50KCkpICYmICFjdXJyZW50LT5lbGVtZW50KCktPmhhc1RhZ05hbWUoSFRNTE5hbWVzOjpmb250
VGFnKSkpKTsKKyAgICAgICAgYXV0byBpc0RlY29yYXRpbmdJbmxpbmVCb3ggPSBbJl0geworICAg
ICAgICAgICAgaWYgKGFuY2VzdG9yLT5lbGVtZW50KCkgJiYgKGlzPEhUTUxBbmNob3JFbGVtZW50
PigqYW5jZXN0b3ItPmVsZW1lbnQoKSkgfHwgYW5jZXN0b3ItPmVsZW1lbnQoKS0+aGFzVGFnTmFt
ZShIVE1MTmFtZXM6OmZvbnRUYWcpKSkgeworICAgICAgICAgICAgICAgIC8vIDxmb250PiBhbmQg
PGE+IGFyZSBhbHdheXMgY29uc2lkZXJlZCBkZWNvcmF0aW5nIGJveGVzLgorICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0byYgc3R5bGVU
b1VzZSA9IGZpcnN0TGluZSA/IGFuY2VzdG9yLT5maXJzdExpbmVTdHlsZSgpIDogYW5jZXN0b3It
PnN0eWxlKCk7CisgICAgICAgICAgICByZXR1cm4gc3R5bGVUb1VzZS50ZXh0RGVjb3JhdGlvbkxp
bmUoKS5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CisgICAgICAgIH07
CisgICAgICAgIGlmIChpc0RlY29yYXRpbmdJbmxpbmVCb3goKSkKKyAgICAgICAgICAgIHJldHVy
biBhbmNlc3RvcjsKKyAgICB9CisKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KIAotICAgIHJldHVy
biBjdXJyZW50Oworc3RhdGljIGZsb2F0IHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdFdpdGhp
bkRlY29yYXRpbmdCb3goY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGlu
ZUJveCwgY29uc3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0JveFJlbmRlcmVyLCBib29sIGlz
RmxpcHBlZExpbmVzV3JpdGluZ01vZGUsIGZsb2F0IHRleHRCb3hMb2dpY2FsVG9wLCBmbG9hdCB0
ZXh0Qm94TG9naWNhbEJvdHRvbSkKK3sKKyAgICBpZiAoaXNGbGlwcGVkTGluZXNXcml0aW5nTW9k
ZSkKKyAgICAgICAgcmV0dXJuIHRleHRCb3hMb2dpY2FsVG9wIC0gbWluTG9naWNhbFRvcEZvclRl
eHREZWNvcmF0aW9uTGluZShsaW5lQm94LCB0ZXh0Qm94TG9naWNhbFRvcCwgZGVjb3JhdGluZ0Jv
eFJlbmRlcmVyKTsKKyAgICByZXR1cm4gbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9u
TGluZShsaW5lQm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgZGVjb3JhdGluZ0JveFJlbmRlcmVy
KSAtIHRleHRCb3hMb2dpY2FsQm90dG9tOwogfQogCiBzdGF0aWMgZmxvYXQgdGV4dFJ1bk9mZnNl
dEZyb21Cb3R0b21Nb3N0KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxp
bmVCb3gsIGNvbnN0IFJlbmRlclRleHQmIHJlbmRlcmVyLCBmbG9hdCB0ZXh0Qm94TG9naWNhbFRv
cCwgZmxvYXQgdGV4dEJveExvZ2ljYWxCb3R0b20pCiB7Ci0gICAgZmxvYXQgb2Zmc2V0ID0gMC5m
OwotICAgIGF1dG8qIGRlY29yYXRpb25SZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0aFRl
eHREZWNvcmF0aW9uKHJlbmRlcmVyLCBsaW5lQm94LT5pc0ZpcnN0KCkpOwotICAgIGlmIChyZW5k
ZXJlci5zdHlsZSgpLmlzRmxpcHBlZExpbmVzV3JpdGluZ01vZGUoKSkgewotICAgICAgICBhdXRv
IG1pbkxvZ2ljYWxUb3AgPSBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGxpbmVC
b3gsIHRleHRCb3hMb2dpY2FsVG9wLCBkZWNvcmF0aW9uUmVuZGVyZXIpOwotICAgICAgICBvZmZz
ZXQgPSB0ZXh0Qm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3A7Ci0gICAgfSBlbHNlIHsKLSAg
ICAgICAgb2Zmc2V0ID0gbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShsaW5l
Qm94LCB0ZXh0Qm94TG9naWNhbEJvdHRvbSwgZGVjb3JhdGlvblJlbmRlcmVyKTsKLSAgICAgICAg
b2Zmc2V0IC09IHRleHRCb3hMb2dpY2FsQm90dG9tOwotICAgIH0KLSAgICByZXR1cm4gb2Zmc2V0
OworICAgIGF1dG8qIGRlY29yYXRpbmdCb3hSZW5kZXJlciA9IGVuY2xvc2luZ1JlbmRlcmVyV2l0
aFRleHREZWNvcmF0aW9uKHJlbmRlcmVyLCBsaW5lQm94LT5pc0ZpcnN0KCkpOworICAgIGlmICgh
ZGVjb3JhdGluZ0JveFJlbmRlcmVyKQorICAgICAgICByZXR1cm4gMC5mOworICAgIHJldHVybiB0
ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3RXaXRoaW5EZWNvcmF0aW5nQm94KGxpbmVCb3gsICpk
ZWNvcmF0aW5nQm94UmVuZGVyZXIsIGRlY29yYXRpbmdCb3hSZW5kZXJlci0+c3R5bGUoKS5pc0Zs
aXBwZWRMaW5lc1dyaXRpbmdNb2RlKCksIHRleHRCb3hMb2dpY2FsVG9wLCB0ZXh0Qm94TG9naWNh
bEJvdHRvbSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgZmxvYXQgZGVmYXVsdEdhcChjb25zdCBSZW5k
ZXJTdHlsZSYgc3R5bGUpCkBAIC0yOTIsMTIgKzMwMSwyMiBAQCBHbHlwaE92ZXJmbG93IHZpc3Vh
bE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogCiBmbG9h
dCB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94UGFpbnRpbmcoY29uc3QgUmVuZGVyU3R5bGUmIHN0
eWxlLCBjb25zdCBJbmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yJiB0ZXh0Qm94KQogewor
ICAgIC8vIDEuIEZpbmQgdGhlIGRlY29yYXRpbmcgYm94IGZvciB0aGlzIHRleHQgcnVuIChmb3Ig
cm9vdCBpbmxpbmUgYm94IGNvbnRlbnQsIGl0J3MgdGhlIGNvbnRhaW5pbmcgYmxvY2ssIGZvciB0
ZXh0IGluc2lkZSBhbiBpbmxpbmUgYm94LCBpdCdzIG1vc3RseSB0aGUgcGFyZW50IGlubGluZSBi
b3ggaXRzZWxmKQorICAgIC8vIDIuIGNvbXB1dGUgdGhlIHVuZGVybGluZSBvZmZzZXQuCisgICAg
YXV0byYgdGV4dEJveFJlbmRlcmVyID0gdGV4dEJveC0+cmVuZGVyZXIoKTsKICAgICBhdXRvIGxp
bmVCb3ggPSB0ZXh0Qm94LT5saW5lQm94KCk7CisgICAgYXV0byBpc0ZpcnN0TGluZSA9IGxpbmVC
b3gtPmlzRmlyc3QoKTsKKyAgICBhdXRvKiBkZWNvcmF0aW5nQm94UmVuZGVyZXIgPSBlbmNsb3Np
bmdSZW5kZXJlcldpdGhUZXh0RGVjb3JhdGlvbih0ZXh0Qm94UmVuZGVyZXIsIGlzRmlyc3RMaW5l
KTsKKyAgICBpZiAoIWRlY29yYXRpbmdCb3hSZW5kZXJlcikgeworICAgICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKKyAgICAgICAgcmV0dXJuIDAuZjsKKyAgICB9CisKICAgICBhdXRvIHRleHRV
bmRlcmxpbmVQb3NpdGlvblVuZGVyID0gc3RkOjpvcHRpb25hbDxUZXh0VW5kZXJsaW5lUG9zaXRp
b25VbmRlcj4geyB9OwogICAgIGF1dG8gdW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9IHJlc29sdmVk
VW5kZXJsaW5lUG9zaXRpb24oc3R5bGUsIGxpbmVCb3gtPmJhc2VsaW5lVHlwZSgpKTsKIAogICAg
IGlmICh1bmRlcmxpbmVQb3NpdGlvblZhbHVlID09IFRleHRVbmRlcmxpbmVQb3NpdGlvbjo6VW5k
ZXIpIHsKLSAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0
b21Nb3N0KGxpbmVCb3gsIHRleHRCb3gtPnJlbmRlcmVyKCksIHRleHRCb3gtPmxvZ2ljYWxUb3Ao
KSwgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpKTsKKyAgICAgICAgYXV0byB0ZXh0UnVuT2Zmc2V0
ID0gdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0KGxpbmVCb3gsIHRleHRCb3hSZW5kZXJlciwg
dGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0Qm94LT5sb2dpY2FsQm90dG9tKCkpOwogICAgICAg
ICB0ZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IFRleHRVbmRlcmxpbmVQb3NpdGlvblVuZGVy
IHsgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpIC0gdGV4dEJveC0+bG9naWNhbFRvcCgpLCB0ZXh0
UnVuT2Zmc2V0IH07CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9J
bmxpbmVUZXh0Qm94U3R5bGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL0lubGluZVRleHRCb3hT
dHlsZS5oCmluZGV4IDM4NDMyMDlkNjI2Yi4uZDYyNmNjNTcwN2E3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuaApAQCAtMzMsMzIgKzMzLDMzIEBACiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAgICAgCiBjbGFzcyBMZWdhY3lJbmxpbmVUZXh0Qm94OworY2xhc3MgUmVu
ZGVyRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogY2xhc3MgVGV4dFVuZGVybGluZU9mZnNl
dDsKIAogaW5saW5lIGZsb2F0IHdhdnlPZmZzZXRGcm9tRGVjb3JhdGlvbigpCiB7Ci0gICAgcmV0
dXJuIDE7CisgICAgcmV0dXJuIDEuZjsKIH0KIAogc3RydWN0IFdhdnlTdHJva2VQYXJhbWV0ZXJz
IHsKICAgICAvLyBEaXN0YW5jZSBiZXR3ZWVuIGRlY29yYXRpb24ncyBheGlzIGFuZCBCZXppZXIg
Y3VydmUncyBjb250cm9sIHBvaW50cy4KICAgICAvLyBUaGUgaGVpZ2h0IG9mIHRoZSBjdXJ2ZSBp
cyBiYXNlZCBvbiB0aGlzIGRpc3RhbmNlLiBJbmNyZWFzZXMgdGhlIGN1cnZlJ3MgaGVpZ2h0CiAg
ICAgLy8gYXMgZm9udFNpemUgaW5jcmVhc2VzIHRvIG1ha2UgdGhlIGN1cnZlIGxvb2sgYmV0dGVy
LgotICAgIGZsb2F0IGNvbnRyb2xQb2ludERpc3RhbmNlIHsgMCB9OworICAgIGZsb2F0IGNvbnRy
b2xQb2ludERpc3RhbmNlIHsgMC5mIH07CiAKICAgICAvLyBJbmNyZW1lbnQgdXNlZCB0byBmb3Jt
IHRoZSBkaWFtb25kIHNoYXBlIGJldHdlZW4gc3RhcnQgcG9pbnQgKHAxKSwgY29udHJvbAogICAg
IC8vIHBvaW50cyBhbmQgZW5kIHBvaW50IChwMikgYWxvbmcgdGhlIGF4aXMgb2YgdGhlIGRlY29y
YXRpb24uIFRoZSBjdXJ2ZSBnZXRzCiAgICAgLy8gd2lkZXIgYXMgZm9udCBzaXplIGluY3JlYXNl
cy4KLSAgICBmbG9hdCBzdGVwIHsgMCB9OworICAgIGZsb2F0IHN0ZXAgeyAwLmYgfTsKIH07CiBX
YXZ5U3Ryb2tlUGFyYW1ldGVycyBnZXRXYXZ5U3Ryb2tlUGFyYW1ldGVycyhmbG9hdCBmb250U2l6
ZSk7CiAKIHN0cnVjdCBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRlciB7Ci0gICAgZmxvYXQgdGV4
dFJ1bkxvZ2ljYWxIZWlnaHQgeyAwIH07CisgICAgZmxvYXQgdGV4dFJ1bkxvZ2ljYWxIZWlnaHQg
eyAwLmYgfTsKICAgICAvLyBUaGlzIG9mZnNldCB2YWx1ZSBpcyB0aGUgZGlzdGFuY2UgYmV0d2Vl
biB0aGUgY3VycmVudCB0ZXh0IHJ1bidzIGxvZ2ljYWwgYm90dG9tIGFuZCB0aGUgbG93ZXN0IHBv
c2l0aW9uIG9mIGFsbCB0aGUgdGV4dCBydW5zCiAgICAgLy8gb24gbGluZSB0aGF0IGJlbG9uZyB0
byB0aGUgc2FtZSBkZWNvcmF0aW9uIGJveC4KLSAgICBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJv
dHRvbU1vc3QgeyAwIH07CisgICAgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0IHsg
MC5mIH07CiB9OwogR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNv
bnN0IFJlbmRlclN0eWxlJik7CiBHbHlwaE92ZXJmbG93IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3Jh
dGlvbnMoY29uc3QgUmVuZGVyU3R5bGUmLCBGb250QmFzZWxpbmUsIFRleHRVbmRlcmxpbmVQb3Np
dGlvblVuZGVyKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>461460</attachid>
            <date>2022-08-06 22:05:21 -0700</date>
            <delta_ts>2022-08-06 22:05:21 -0700</delta_ts>
            <desc>for EWS</desc>
            <filename>Patch.txt</filename>
            <type>text/plain</type>
            <size>30223</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2li
aWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9t
YWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggNmZiMzVhNzkyNzNj
Li4zMDdjOWQ4MzQxOWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1t
CkBAIC04NDMsMTIgKzg0MywxMiBAQCBzdGF0aWMgdm9pZCBBWEF0dHJpYnV0ZVN0cmluZ1NldFN0
eWxlKE5TTXV0YWJsZUF0dHJpYnV0ZWRTdHJpbmcqIGF0dHJTdHJpbmcsIFJlbgogCiAgICAgICAg
IGlmIChkZWNvciAmIFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSB7CiAgICAgICAgICAg
ICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlV
bmRlcmxpbmVUZXh0QXR0cmlidXRlLCBAWUVTLCByYW5nZSk7Ci0gICAgICAgICAgICBBWEF0dHJp
YnV0ZVN0cmluZ1NldENvbG9yKGF0dHJTdHJpbmcsIE5TQWNjZXNzaWJpbGl0eVVuZGVybGluZUNv
bG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNvcmF0aW9uU3R5bGVzLnVuZGVybGluZUNv
bG9yKS5nZXQoKSwgcmFuZ2UpOworICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xv
cihhdHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlVbmRlcmxpbmVDb2xvclRleHRBdHRyaWJ1dGUs
IGNvY29hQ29sb3IoZGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IpLmdldCgpLCByYW5n
ZSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZGVjb3IgJiBUZXh0RGVjb3JhdGlvbkxpbmU6
OkxpbmVUaHJvdWdoKSB7CiAgICAgICAgICAgICBBWEF0dHJpYnV0ZVN0cmluZ1NldE51bWJlcihh
dHRyU3RyaW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoVGV4dEF0dHJpYnV0ZSwgQFlF
UywgcmFuZ2UpOwotICAgICAgICAgICAgQVhBdHRyaWJ1dGVTdHJpbmdTZXRDb2xvcihhdHRyU3Ry
aW5nLCBOU0FjY2Vzc2liaWxpdHlTdHJpa2V0aHJvdWdoQ29sb3JUZXh0QXR0cmlidXRlLCBjb2Nv
YUNvbG9yKGRlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hDb2xvcikuZ2V0KCksIHJhbmdlKTsK
KyAgICAgICAgICAgIEFYQXR0cmlidXRlU3RyaW5nU2V0Q29sb3IoYXR0clN0cmluZywgTlNBY2Nl
c3NpYmlsaXR5U3RyaWtldGhyb3VnaENvbG9yVGV4dEF0dHJpYnV0ZSwgY29jb2FDb2xvcihkZWNv
cmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmNvbG9yKS5nZXQoKSwgcmFuZ2UpOwogICAgICAgICB9
CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxl
ZE1hcmtlZFRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRl
eHQuY3BwCmluZGV4IDRmZmU2NzIxNjU0My4uZjU2OTlkOGFkZGNlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvU3R5bGVkTWFya2VkVGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1N0eWxlZE1hcmtlZFRleHQuY3BwCkBAIC01OCwxNiArNTgsMTYgQEAg
c3RhdGljIFN0eWxlZE1hcmtlZFRleHQgcmVzb2x2ZVN0eWxlRm9yTWFya2VkVGV4dChjb25zdCBN
YXJrZWRUZXh0JiBtYXJrZWRUZXh0LAogICAgICAgICAgICAgYXV0byBkZWNvcmF0aW9ucyA9IHJl
bmRlclN0eWxlLT50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwogCiAgICAgICAgICAgICBpZiAo
ZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7Ci0g
ICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMudW5kZXJsaW5lQ29sb3Ig
PSBjb2xvcjsKLSAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRl
cmxpbmVTdHlsZSA9IGRlY29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAg
ICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID0g
ZGVjb3JhdGlvblN0eWxlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGRlY29yYXRp
b25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7Ci0gICAgICAgICAg
ICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwot
ICAgICAgICAgICAgICAgIHN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzLm92ZXJsaW5lU3R5bGUg
PSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25T
dHlsZXMub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0
RGVjb3JhdGlvblN0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5
bGU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpIHsKLSAgICAgICAgICAgICAgICBzdHls
ZS50ZXh0RGVjb3JhdGlvblN0eWxlcy5saW5ldGhyb3VnaENvbG9yID0gY29sb3I7Ci0gICAgICAg
ICAgICAgICAgc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMubGluZXRocm91Z2hTdHlsZSA9IGRl
Y29yYXRpb25TdHlsZTsKKyAgICAgICAgICAgICAgICBzdHlsZS50ZXh0RGVjb3JhdGlvblN0eWxl
cy5saW5ldGhyb3VnaC5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgICAgIHN0eWxlLnRleHRE
ZWNvcmF0aW9uU3R5bGVzLmxpbmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9IGRlY29yYXRpb25T
dHlsZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBicmVhazsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJveFBhaW50ZXIuY3BwCmluZGV4IGQ3NGU3YTk1ODEwNS4u
YTM0ZGNlY2U4ZDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dEJv
eFBhaW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0Qm94UGFpbnRl
ci5jcHAKQEAgLTQzMywxMSArNDMzLDkgQEAgVGV4dERlY29yYXRpb25QYWludGVyIFRleHRCb3hQ
YWludGVyPFRleHRCb3hQYXRoPjo6Y3JlYXRlRGVjb3JhdGlvblBhaW50ZXIoY29uc3QKICAgICB9
CiAKICAgICAvLyBDcmVhdGUgcGFpbnRlcgotICAgIGF1dG8gdGV4dERlY29yYXRpb25zID0gbV9z
dHlsZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOwotICAgIHRleHREZWNvcmF0aW9ucy5hZGQo
VGV4dERlY29yYXRpb25QYWludGVyOjp0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKG1h
cmtlZFRleHQuc3R5bGUudGV4dERlY29yYXRpb25TdHlsZXMpKTsKICAgICBhdXRvKiBzaGFkb3cg
PSBtYXJrZWRUZXh0LnN0eWxlLnRleHRTaGFkb3cgPyAmbWFya2VkVGV4dC5zdHlsZS50ZXh0U2hh
ZG93LnZhbHVlKCkgOiBudWxscHRyOwogICAgIGF1dG8qIGNvbG9yRmlsdGVyID0gbWFya2VkVGV4
dC5zdHlsZS50ZXh0U2hhZG93ICYmIG1fc3R5bGUuaGFzQXBwbGVDb2xvckZpbHRlcigpID8gJm1f
c3R5bGUuYXBwbGVDb2xvckZpbHRlcigpIDogbnVsbHB0cjsKLSAgICByZXR1cm4geyBjb250ZXh0
LCB0ZXh0RGVjb3JhdGlvbnMsIG1faXNGaXJzdExpbmUsIGZvbnRDYXNjYWRlKCksIG1ha2VJdGVy
YXRvcigpLCBzbmFwcGVkU2VsZWN0aW9uUmVjdC53aWR0aCgpLCBzaGFkb3csIGNvbG9yRmlsdGVy
LCBtYXJrZWRUZXh0LnN0eWxlLnRleHREZWNvcmF0aW9uU3R5bGVzIH07CisgICAgcmV0dXJuIHsg
Y29udGV4dCwgZm9udENhc2NhZGUoKSwgbWFrZUl0ZXJhdG9yKCksIHNuYXBwZWRTZWxlY3Rpb25S
ZWN0LndpZHRoKCksIHNoYWRvdywgY29sb3JGaWx0ZXIsIG1hcmtlZFRleHQuc3R5bGUudGV4dERl
Y29yYXRpb25TdHlsZXMgfTsKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgVGV4dEJveFBhdGg+CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9UZXh0RGVjb3JhdGlvblBhaW50ZXIuY3Bw
CmluZGV4IGQ2NGY1MzNmYmZkNi4uZjM5MmM1NDkxNDZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvVGV4dERlY29yYXRpb25QYWludGVyLmNwcApAQCAtMTg1LDE1ICsxODUs
MjYgQEAgc3RhdGljIFN0cm9rZVN0eWxlIHRleHREZWNvcmF0aW9uU3R5bGVUb1N0cm9rZVN0eWxl
KFRleHREZWNvcmF0aW9uU3R5bGUgZGVjb3JhdGkKICAgICByZXR1cm4gc3Ryb2tlU3R5bGU7CiB9
CiAKK3N0YXRpYyBpbmxpbmUgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29y
YXRpb25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxl
cyYgc3R5bGUpCit7CisgICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlv
bnM7CisgICAgaWYgKHN0eWxlLnVuZGVybGluZS5jb2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRl
Y29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSk7CisgICAgaWYgKHN0
eWxlLm92ZXJsaW5lLmNvbG9yLmlzVmFsaWQoKSkKKyAgICAgICAgZGVjb3JhdGlvbnMuYWRkKFRl
eHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpOworICAgIGlmIChzdHlsZS5saW5ldGhyb3VnaC5j
b2xvci5pc1ZhbGlkKCkpCisgICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxp
bmU6OkxpbmVUaHJvdWdoKTsKKyAgICByZXR1cm4gZGVjb3JhdGlvbnM7Cit9CisKIGJvb2wgVGV4
dERlY29yYXRpb25QYWludGVyOjpTdHlsZXM6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVzJiBvdGhl
cikgY29uc3QKIHsKLSAgICByZXR1cm4gdW5kZXJsaW5lQ29sb3IgPT0gb3RoZXIudW5kZXJsaW5l
Q29sb3IgJiYgb3ZlcmxpbmVDb2xvciA9PSBvdGhlci5vdmVybGluZUNvbG9yICYmIGxpbmV0aHJv
dWdoQ29sb3IgPT0gb3RoZXIubGluZXRocm91Z2hDb2xvcgotICAgICAgICAmJiB1bmRlcmxpbmVT
dHlsZSA9PSBvdGhlci51bmRlcmxpbmVTdHlsZSAmJiBvdmVybGluZVN0eWxlID09IG90aGVyLm92
ZXJsaW5lU3R5bGUgJiYgbGluZXRocm91Z2hTdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaFN0eWxl
OworICAgIHJldHVybiB1bmRlcmxpbmUuY29sb3IgPT0gb3RoZXIudW5kZXJsaW5lLmNvbG9yICYm
IG92ZXJsaW5lLmNvbG9yID09IG90aGVyLm92ZXJsaW5lLmNvbG9yICYmIGxpbmV0aHJvdWdoLmNv
bG9yID09IG90aGVyLmxpbmV0aHJvdWdoLmNvbG9yCisgICAgICAgICYmIHVuZGVybGluZS5kZWNv
cmF0aW9uU3R5bGUgPT0gb3RoZXIudW5kZXJsaW5lLmRlY29yYXRpb25TdHlsZSAmJiBvdmVybGlu
ZS5kZWNvcmF0aW9uU3R5bGUgPT0gb3RoZXIub3ZlcmxpbmUuZGVjb3JhdGlvblN0eWxlICYmIGxp
bmV0aHJvdWdoLmRlY29yYXRpb25TdHlsZSA9PSBvdGhlci5saW5ldGhyb3VnaC5kZWNvcmF0aW9u
U3R5bGU7CiB9CiAKLVRleHREZWNvcmF0aW9uUGFpbnRlcjo6VGV4dERlY29yYXRpb25QYWludGVy
KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4g
ZGVjb3JhdGlvbnMsIGJvb2wgaXNGaXJzdExpbmUsIGNvbnN0IEZvbnRDYXNjYWRlJiBmb250LCBJ
bmxpbmVJdGVyYXRvcjo6VGV4dEJveEl0ZXJhdG9yIHRleHRCb3gsIGZsb2F0IHdpZHRoLCBjb25z
dCBTaGFkb3dEYXRhKiBzaGFkb3csIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMqIGNvbG9yRmlsdGVy
LCBzdGQ6Om9wdGlvbmFsPFN0eWxlcz4gc3R5bGVzKQorVGV4dERlY29yYXRpb25QYWludGVyOjpU
ZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGb250
Q2FzY2FkZSYgZm9udCwgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciB0ZXh0Qm94LCBm
bG9hdCB3aWR0aCwgY29uc3QgU2hhZG93RGF0YSogc2hhZG93LCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zKiBjb2xvckZpbHRlciwgU3R5bGVzIHN0eWxlT3ZlcnJpZGUpCiAgICAgOiBtX2NvbnRleHQg
eyBjb250ZXh0IH0KLSAgICAsIG1fZGVjb3JhdGlvbnMgeyBkZWNvcmF0aW9ucyB9CiAgICAgLCBt
X3dhdnlPZmZzZXQgeyB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKSB9CiAgICAgLCBtX3dpZHRo
KHdpZHRoKQogICAgICwgbV9pc1ByaW50aW5nIHsgdGV4dEJveC0+cmVuZGVyZXIoKS5kb2N1bWVu
dCgpLnByaW50aW5nKCkgfQpAQCAtMjAzLDE2ICsyMTQsMTggQEAgVGV4dERlY29yYXRpb25QYWlu
dGVyOjpUZXh0RGVjb3JhdGlvblBhaW50ZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBPcHRp
b25TZXQKICAgICAsIG1fdGV4dEJveCh0ZXh0Qm94KQogICAgICwgbV9mb250IHsgZm9udCB9CiAg
ICAgLCBtX2RldmljZVNjYWxlRmFjdG9yKHRleHRCb3gtPnJlbmRlcmVyKCkuZG9jdW1lbnQoKS5k
ZXZpY2VTY2FsZUZhY3RvcigpKQotICAgICwgbV9zdHlsZXMgeyBzdHlsZXMgPyAqV1RGTW92ZShz
dHlsZXMpIDogc3R5bGVzRm9yUmVuZGVyZXIodGV4dEJveC0+cmVuZGVyZXIoKSwgZGVjb3JhdGlv
bnMsIGlzRmlyc3RMaW5lLCBQc2V1ZG9JZDo6Tm9uZSkgfQotICAgICwgbV9saW5lU3R5bGUgeyBp
c0ZpcnN0TGluZSA/IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHRleHRC
b3gtPnJlbmRlcmVyKCkuc3R5bGUoKSB9CisgICAgLCBtX3N0eWxlcyB7IHN0eWxlT3ZlcnJpZGUg
fQorICAgICwgbV90ZXh0Qm94U3R5bGUgeyB0ZXh0Qm94LT5saW5lQm94KCktPmlzRmlyc3QoKSA/
IHRleHRCb3gtPnJlbmRlcmVyKCkuZmlyc3RMaW5lU3R5bGUoKSA6IHRleHRCb3gtPnJlbmRlcmVy
KCkuc3R5bGUoKSB9CiB7CisgICAgbV90ZXh0Qm94RGVjb3JhdGlvbnMgPSBtX3RleHRCb3hTdHls
ZS50ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCgpOworICAgIG1fdGV4dEJveERlY29yYXRpb25zLmFk
ZCh0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdEZvclN0eWxlKHN0eWxlT3ZlcnJpZGUpKTsKIH0KIAog
Ly8gUGFpbnQgdGV4dC1zaGFkb3csIHVuZGVybGluZSwgb3ZlcmxpbmUKIHZvaWQgVGV4dERlY29y
YXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0
ZXh0UnVuLCBjb25zdCBGbG9hdFBvaW50JiB0ZXh0T3JpZ2luLCBjb25zdCBGbG9hdFBvaW50JiBi
b3hPcmlnaW4pCiB7Ci0gICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5t
ZXRyaWNzT2ZQcmltYXJ5Rm9udCgpOwotICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3Mg
PSBjZWlsVG9EZXZpY2VQaXhlbChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygp
LnJlc29sdmUobV9saW5lU3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBmb250TWV0cmljcyksIG1f
ZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV90ZXh0
Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKKyAgICBhdXRvIHRleHREZWNvcmF0aW9u
VGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90ZXh0Qm94U3R5bGUudGV4dERlY29yYXRp
b25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwg
Zm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAgICBGbG9hdFBvaW50IGxvY2Fs
T3JpZ2luID0gYm94T3JpZ2luOwogCiAgICAgYXV0byBwYWludERlY29yYXRpb24gPSBbJl0gKFRl
eHREZWNvcmF0aW9uTGluZSBkZWNvcmF0aW9uLCBUZXh0RGVjb3JhdGlvblN0eWxlIHN0eWxlLCBj
b25zdCBDb2xvciYgY29sb3IsIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgewpAQCAtMjIxLDkgKzIz
NCw5IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tncm91bmREZWNvcmF0
aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAgICAgICAgIGF1dG8gc3Ryb2tlU3R5bGUg
PSB0ZXh0RGVjb3JhdGlvblN0eWxlVG9TdHJva2VTdHlsZShzdHlsZSk7CiAKICAgICAgICAgaWYg
KHN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6OldhdnkpCi0gICAgICAgICAgICBzdHJva2VX
YXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0LCByZWN0LCBtX2xpbmVTdHlsZS5jb21wdXRlZEZv
bnRQaXhlbFNpemUoKSk7CisgICAgICAgICAgICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9j
b250ZXh0LCByZWN0LCBtX3RleHRCb3hTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CiAg
ICAgICAgIGVsc2UgaWYgKGRlY29yYXRpb24gPT0gVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxp
bmUgfHwgZGVjb3JhdGlvbiA9PSBUZXh0RGVjb3JhdGlvbkxpbmU6Ok92ZXJsaW5lKSB7Ci0gICAg
ICAgICAgICBpZiAoKG1fbGluZVN0eWxlLnRleHREZWNvcmF0aW9uU2tpcEluaygpID09IFRleHRE
ZWNvcmF0aW9uU2tpcEluazo6QXV0byB8fCBtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblNraXBJ
bmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6OkFsbCkgJiYgbV9pc0hvcml6b250YWwpIHsK
KyAgICAgICAgICAgIGlmICgobV90ZXh0Qm94U3R5bGUudGV4dERlY29yYXRpb25Ta2lwSW5rKCkg
PT0gVGV4dERlY29yYXRpb25Ta2lwSW5rOjpBdXRvIHx8IG1fdGV4dEJveFN0eWxlLnRleHREZWNv
cmF0aW9uU2tpcEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6QWxsKSAmJiBtX2lzSG9y
aXpvbnRhbCkgewogICAgICAgICAgICAgICAgIGlmICghbV9jb250ZXh0LnBhaW50aW5nRGlzYWJs
ZWQoKSkgewogICAgICAgICAgICAgICAgICAgICBGbG9hdFJlY3QgdW5kZXJsaW5lQm91bmRpbmdC
b3ggPSBtX2NvbnRleHQuY29tcHV0ZVVuZGVybGluZUJvdW5kc0ZvclRleHQocmVjdCwgbV9pc1By
aW50aW5nKTsKICAgICAgICAgICAgICAgICAgICAgRGFzaEFycmF5IGludGVyc2VjdGlvbnMgPSBt
X2ZvbnQuZGFzaGVzRm9ySW50ZXJzZWN0aW9uc1dpdGhSZWN0KHRleHRSdW4sIHRleHRPcmlnaW4s
IHVuZGVybGluZUJvdW5kaW5nQm94KTsKQEAgLTI0MCw5ICsyNTMsOSBAQCB2b2lkIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29uc3QgVGV4dFJ1biYg
dGV4dFJ1biwgYwogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgfTsKIAot
ICAgIGJvb2wgYXJlTGluZXNPcGFxdWUgPSAhbV9pc1ByaW50aW5nICYmICghbV9kZWNvcmF0aW9u
cy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSkgfHwgbV9zdHlsZXMudW5k
ZXJsaW5lQ29sb3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRh
aW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpIHx8IG1fc3R5bGVzLm92ZXJsaW5lQ29s
b3IuaXNPcGFxdWUoKSkKLSAgICAgICAgJiYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpIHx8IG1fc3R5bGVzLmxpbmV0aHJvdWdoQ29sb3Iu
aXNPcGFxdWUoKSk7CisgICAgYm9vbCBhcmVMaW5lc09wYXF1ZSA9ICFtX2lzUHJpbnRpbmcgJiYg
KCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVy
bGluZSkgfHwgbV9zdHlsZXMudW5kZXJsaW5lLmNvbG9yLmlzT3BhcXVlKCkpCisgICAgICAgICYm
ICghbV90ZXh0Qm94RGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVy
bGluZSkgfHwgbV9zdHlsZXMub3ZlcmxpbmUuY29sb3IuaXNPcGFxdWUoKSkKKyAgICAgICAgJiYg
KCFtX3RleHRCb3hEZWNvcmF0aW9ucy5jb250YWlucyhUZXh0RGVjb3JhdGlvbkxpbmU6OkxpbmVU
aHJvdWdoKSB8fCBtX3N0eWxlcy5saW5ldGhyb3VnaC5jb2xvci5pc09wYXF1ZSgpKTsKIAogICAg
IGZsb2F0IGV4dHJhT2Zmc2V0ID0gMDsKICAgICBib29sIGNsaXBwaW5nID0gIWFyZUxpbmVzT3Bh
cXVlICYmIG1fc2hhZG93ICYmIG1fc2hhZG93LT5uZXh0KCk7CkBAIC0yODMsMjQgKzI5NiwyNCBA
QCB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMo
Y29uc3QgVGV4dFJ1biYgdGV4dFJ1biwgYwogICAgICAgICB9CiAKICAgICAgICAgLy8gVGhlc2Ug
ZGVjb3JhdGlvbnMgc2hvdWxkIG1hdGNoIHRoZSB2aXN1YWwgb3ZlcmZsb3dzIGNvbXB1dGVkIGlu
IHZpc3VhbE92ZXJmbG93Rm9yRGVjb3JhdGlvbnMoKS4KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpKSB7Ci0gICAgICAgICAg
ICBhdXRvIG9mZnNldCA9IHVuZGVybGluZU9mZnNldEZvclRleHRCb3hQYWludGluZyhtX2xpbmVT
dHlsZSwgbV90ZXh0Qm94KTsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxl
cy51bmRlcmxpbmVTdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0eWxlOjpXYXZ5ID8gbV93YXZ5T2Zm
c2V0IDogMDsKLSAgICAgICAgICAgIEZsb2F0UmVjdCByZWN0KGxvY2FsT3JpZ2luLCBGbG9hdFNp
emUobV93aWR0aCwgdGV4dERlY29yYXRpb25UaGlja25lc3MpKTsKLSAgICAgICAgICAgIHJlY3Qu
bW92ZSgwLCBvZmZzZXQgKyB3YXZ5T2Zmc2V0KTsKLSAgICAgICAgICAgIHBhaW50RGVjb3JhdGlv
bihUZXh0RGVjb3JhdGlvbkxpbmU6OlVuZGVybGluZSwgbV9zdHlsZXMudW5kZXJsaW5lU3R5bGUs
IG1fc3R5bGVzLnVuZGVybGluZUNvbG9yLCByZWN0KTsKKyAgICAgICAgaWYgKG1fdGV4dEJveERl
Y29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgeworICAg
ICAgICAgICAgYXV0byB1bmRlcmxpbmVPZmZzZXQgPSB1bmRlcmxpbmVPZmZzZXRGb3JUZXh0Qm94
UGFpbnRpbmcobV90ZXh0Qm94U3R5bGUsIG1fdGV4dEJveCk7CisgICAgICAgICAgICBhdXRvIHdh
dnlPZmZzZXQgPSBtX3N0eWxlcy51bmRlcmxpbmUuZGVjb3JhdGlvblN0eWxlID09IFRleHREZWNv
cmF0aW9uU3R5bGU6OldhdnkgPyBtX3dhdnlPZmZzZXQgOiAwLmY7CisgICAgICAgICAgICBhdXRv
IHVuZGVybGluZVJlY3QgPSBGbG9hdFJlY3QgeyBsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lk
dGgsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzKSB9OworICAgICAgICAgICAgdW5kZXJsaW5lUmVj
dC5tb3ZlKDAuZiwgdW5kZXJsaW5lT2Zmc2V0ICsgd2F2eU9mZnNldCk7CisgICAgICAgICAgICBw
YWludERlY29yYXRpb24oVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUsIG1fc3R5bGVzLnVu
ZGVybGluZS5kZWNvcmF0aW9uU3R5bGUsIG1fc3R5bGVzLnVuZGVybGluZS5jb2xvciwgdW5kZXJs
aW5lUmVjdCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1fZGVjb3JhdGlvbnMuY29udGFpbnMo
VGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKLSAgICAgICAgICAgIGZsb2F0IHdhdnlP
ZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZVN0eWxlID09IFRleHREZWNvcmF0aW9uU3R5bGU6Oldh
dnkgPyBtX3dhdnlPZmZzZXQgOiAwOworICAgICAgICBpZiAobV90ZXh0Qm94RGVjb3JhdGlvbnMu
Y29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSkpIHsKKyAgICAgICAgICAgIGZs
b2F0IHdhdnlPZmZzZXQgPSBtX3N0eWxlcy5vdmVybGluZS5kZWNvcmF0aW9uU3R5bGUgPT0gVGV4
dERlY29yYXRpb25TdHlsZTo6V2F2eSA/IG1fd2F2eU9mZnNldCA6IDA7CiAgICAgICAgICAgICBG
bG9hdFJlY3QgcmVjdChsb2NhbE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzKSk7Ci0gICAgICAgICAgICBmbG9hdCBhdXRvVGV4dERlY29yYXRpb25UaGlj
a25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChUZXh0RGVjb3JhdGlvblRoaWNrbmVzczo6Y3JlYXRl
V2l0aEF1dG8oKS5yZXNvbHZlKG1fbGluZVN0eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgZm9udE1l
dHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKKyAgICAgICAgICAgIGZsb2F0IGF1dG9UZXh0
RGVjb3JhdGlvblRoaWNrbmVzcyA9IGNlaWxUb0RldmljZVBpeGVsKFRleHREZWNvcmF0aW9uVGhp
Y2tuZXNzOjpjcmVhdGVXaXRoQXV0bygpLnJlc29sdmUobV90ZXh0Qm94U3R5bGUuY29tcHV0ZWRG
b250U2l6ZSgpLCBmb250TWV0cmljcyksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOwogICAgICAgICAg
ICAgcmVjdC5tb3ZlKDAsIGF1dG9UZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAtIHRleHREZWNvcmF0
aW9uVGhpY2tuZXNzIC0gd2F2eU9mZnNldCk7Ci0gICAgICAgICAgICBwYWludERlY29yYXRpb24o
VGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmVTdHlsZSwgbV9z
dHlsZXMub3ZlcmxpbmVDb2xvciwgcmVjdCk7CisgICAgICAgICAgICBwYWludERlY29yYXRpb24o
VGV4dERlY29yYXRpb25MaW5lOjpPdmVybGluZSwgbV9zdHlsZXMub3ZlcmxpbmUuZGVjb3JhdGlv
blN0eWxlLCBtX3N0eWxlcy5vdmVybGluZS5jb2xvciwgcmVjdCk7CiAgICAgICAgIH0KIAogICAg
ICAgICAvLyBXZSBvbmx5IHdhbnQgdG8gcGFpbnQgdGhlIHNoYWRvdywgaGVuY2UgdGhlIHRyYW5z
cGFyZW50IGNvbG9yLCBub3QgdGhlIGFjdHVhbCBsaW5lLXRocm91Z2gsCiAgICAgICAgIC8vIHdo
aWNoIHdpbGwgYmUgcGFpbnRlZCBpbiBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucygpLgotICAg
ICAgICBpZiAoc2hhZG93ICYmIG1fZGVjb3JhdGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25M
aW5lOjpMaW5lVGhyb3VnaCkpCisgICAgICAgIGlmIChzaGFkb3cgJiYgbV90ZXh0Qm94RGVjb3Jh
dGlvbnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAg
ICAgICBwYWludExpbmVUaHJvdWdoKENvbG9yOjp0cmFuc3BhcmVudEJsYWNrLCB0ZXh0RGVjb3Jh
dGlvblRoaWNrbmVzcywgbG9jYWxPcmlnaW4pOwogICAgIH0gd2hpbGUgKHNoYWRvdyk7CiAKQEAg
LTMxMiwyOCArMzI1LDI4IEBAIHZvaWQgVGV4dERlY29yYXRpb25QYWludGVyOjpwYWludEJhY2tn
cm91bmREZWNvcmF0aW9ucyhjb25zdCBUZXh0UnVuJiB0ZXh0UnVuLCBjCiAKIHZvaWQgVGV4dERl
Y29yYXRpb25QYWludGVyOjpwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhjb25zdCBGbG9hdFBv
aW50JiBib3hPcmlnaW4pCiB7Ci0gICAgaWYgKCFtX2RlY29yYXRpb25zLmNvbnRhaW5zKFRleHRE
ZWNvcmF0aW9uTGluZTo6TGluZVRocm91Z2gpKQorICAgIGlmICghbV90ZXh0Qm94RGVjb3JhdGlv
bnMuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpMaW5lVGhyb3VnaCkpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGF1dG8gdGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQ
aXhlbChtX2xpbmVTdHlsZS50ZXh0RGVjb3JhdGlvblRoaWNrbmVzcygpLnJlc29sdmUobV9saW5l
U3R5bGUuY29tcHV0ZWRGb250U2l6ZSgpLCBtX2xpbmVTdHlsZS5tZXRyaWNzT2ZQcmltYXJ5Rm9u
dCgpKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7Ci0gICAgcGFpbnRMaW5lVGhyb3VnaChtX3N0eWxl
cy5saW5ldGhyb3VnaENvbG9yLCB0ZXh0RGVjb3JhdGlvblRoaWNrbmVzcywgYm94T3JpZ2luKTsK
KyAgICBhdXRvIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwobV90
ZXh0Qm94U3R5bGUudGV4dERlY29yYXRpb25UaGlja25lc3MoKS5yZXNvbHZlKG1fdGV4dEJveFN0
eWxlLmNvbXB1dGVkRm9udFNpemUoKSwgbV90ZXh0Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZv
bnQoKSksIG1fZGV2aWNlU2NhbGVGYWN0b3IpOworICAgIHBhaW50TGluZVRocm91Z2gobV9zdHls
ZXMubGluZXRocm91Z2guY29sb3IsIHRleHREZWNvcmF0aW9uVGhpY2tuZXNzLCBib3hPcmlnaW4p
OwogfQogCiB2b2lkIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6cGFpbnRMaW5lVGhyb3VnaChjb25z
dCBDb2xvciYgY29sb3IsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRmxvYXRQb2ludCYgbG9jYWxP
cmlnaW4pCiB7Ci0gICAgY29uc3QgYXV0byYgZm9udE1ldHJpY3MgPSBtX2xpbmVTdHlsZS5tZXRy
aWNzT2ZQcmltYXJ5Rm9udCgpOworICAgIGNvbnN0IGF1dG8mIGZvbnRNZXRyaWNzID0gbV90ZXh0
Qm94U3R5bGUubWV0cmljc09mUHJpbWFyeUZvbnQoKTsKICAgICBGbG9hdFJlY3QgcmVjdChsb2Nh
bE9yaWdpbiwgRmxvYXRTaXplKG1fd2lkdGgsIHRoaWNrbmVzcykpOwotICAgIGF1dG8gYXV0b1Rl
eHREZWNvcmF0aW9uVGhpY2tuZXNzID0gY2VpbFRvRGV2aWNlUGl4ZWwoVGV4dERlY29yYXRpb25U
aGlja25lc3M6OmNyZWF0ZVdpdGhBdXRvKCkucmVzb2x2ZShtX2xpbmVTdHlsZS5jb21wdXRlZEZv
bnRTaXplKCksIGZvbnRNZXRyaWNzKSwgbV9kZXZpY2VTY2FsZUZhY3Rvcik7CisgICAgYXV0byBh
dXRvVGV4dERlY29yYXRpb25UaGlja25lc3MgPSBjZWlsVG9EZXZpY2VQaXhlbChUZXh0RGVjb3Jh
dGlvblRoaWNrbmVzczo6Y3JlYXRlV2l0aEF1dG8oKS5yZXNvbHZlKG1fdGV4dEJveFN0eWxlLmNv
bXB1dGVkRm9udFNpemUoKSwgZm9udE1ldHJpY3MpLCBtX2RldmljZVNjYWxlRmFjdG9yKTsKICAg
ICBhdXRvIGNlbnRlciA9IDIgKiBmb250TWV0cmljcy5mbG9hdEFzY2VudCgpIC8gMyArIGF1dG9U
ZXh0RGVjb3JhdGlvblRoaWNrbmVzcyAvIDI7CiAgICAgcmVjdC5tb3ZlKDAsIGNlbnRlciAtIHRo
aWNrbmVzcyAvIDIpOwogCiAgICAgbV9jb250ZXh0LnNldFN0cm9rZUNvbG9yKGNvbG9yKTsKIAot
ICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3VnaFN0eWxl
OworICAgIFRleHREZWNvcmF0aW9uU3R5bGUgc3R5bGUgPSBtX3N0eWxlcy5saW5ldGhyb3VnaC5k
ZWNvcmF0aW9uU3R5bGU7CiAgICAgYXV0byBzdHJva2VTdHlsZSA9IHRleHREZWNvcmF0aW9uU3R5
bGVUb1N0cm9rZVN0eWxlKHN0eWxlKTsKIAogICAgIGlmIChzdHlsZSA9PSBUZXh0RGVjb3JhdGlv
blN0eWxlOjpXYXZ5KQotICAgICAgICBzdHJva2VXYXZ5VGV4dERlY29yYXRpb24obV9jb250ZXh0
LCByZWN0LCBtX2xpbmVTdHlsZS5jb21wdXRlZEZvbnRQaXhlbFNpemUoKSk7CisgICAgICAgIHN0
cm9rZVdhdnlUZXh0RGVjb3JhdGlvbihtX2NvbnRleHQsIHJlY3QsIG1fdGV4dEJveFN0eWxlLmNv
bXB1dGVkRm9udFBpeGVsU2l6ZSgpKTsKICAgICBlbHNlCiAgICAgICAgIG1fY29udGV4dC5kcmF3
TGluZUZvclRleHQocmVjdCwgbV9pc1ByaW50aW5nLCBzdHlsZSA9PSBUZXh0RGVjb3JhdGlvblN0
eWxlOjpEb3VibGUsIHN0cm9rZVN0eWxlKTsKIH0KQEAgLTM0OSwxOCArMzYyLDE4IEBAIHN0YXRp
YyB2b2lkIGNvbGxlY3RTdHlsZXNGb3JSZW5kZXJlcihUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0
eWxlcyYgcmVzdWx0LCBjb25zCiAKICAgICAgICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRl
eHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkgewogICAgICAgICAgICAgcmVtYWluaW5nRGVj
b3JhdGlvbnMucmVtb3ZlKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAgICAgICAg
ICAgIHJlc3VsdC51bmRlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0LnVu
ZGVybGluZVN0eWxlID0gZGVjb3JhdGlvblN0eWxlOworICAgICAgICAgICAgcmVzdWx0LnVuZGVy
bGluZS5jb2xvciA9IGNvbG9yOworICAgICAgICAgICAgcmVzdWx0LnVuZGVybGluZS5kZWNvcmF0
aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAgICAgaWYgKGRlY29y
YXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6T3ZlcmxpbmUpKSB7CiAgICAgICAg
ICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29yYXRpb25MaW5lOjpPdmVy
bGluZSk7Ci0gICAgICAgICAgICByZXN1bHQub3ZlcmxpbmVDb2xvciA9IGNvbG9yOwotICAgICAg
ICAgICAgcmVzdWx0Lm92ZXJsaW5lU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CisgICAgICAgICAg
ICByZXN1bHQub3ZlcmxpbmUuY29sb3IgPSBjb2xvcjsKKyAgICAgICAgICAgIHJlc3VsdC5vdmVy
bGluZS5kZWNvcmF0aW9uU3R5bGUgPSBkZWNvcmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKGRlY29yYXRpb25zLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6TGluZVRocm91
Z2gpKSB7CiAgICAgICAgICAgICByZW1haW5pbmdEZWNvcmF0aW9ucy5yZW1vdmUoVGV4dERlY29y
YXRpb25MaW5lOjpMaW5lVGhyb3VnaCk7Ci0gICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2hD
b2xvciA9IGNvbG9yOwotICAgICAgICAgICAgcmVzdWx0LmxpbmV0aHJvdWdoU3R5bGUgPSBkZWNv
cmF0aW9uU3R5bGU7CisgICAgICAgICAgICByZXN1bHQubGluZXRocm91Z2guY29sb3IgPSBjb2xv
cjsKKyAgICAgICAgICAgIHJlc3VsdC5saW5ldGhyb3VnaC5kZWNvcmF0aW9uU3R5bGUgPSBkZWNv
cmF0aW9uU3R5bGU7CiAgICAgICAgIH0KICAgICB9OwogCkBAIC00MDAsMTggKzQxMyw2IEBAIENv
bG9yIFRleHREZWNvcmF0aW9uUGFpbnRlcjo6ZGVjb3JhdGlvbkNvbG9yKGNvbnN0IFJlbmRlclN0
eWxlJiBzdHlsZSkKICAgICByZXR1cm4gc3R5bGUudmlzaXRlZERlcGVuZGVudENvbG9yV2l0aENv
bG9yRmlsdGVyKENTU1Byb3BlcnR5VGV4dERlY29yYXRpb25Db2xvcik7CiB9CiAKLU9wdGlvblNl
dDxUZXh0RGVjb3JhdGlvbkxpbmU+IFRleHREZWNvcmF0aW9uUGFpbnRlcjo6dGV4dERlY29yYXRp
b25zSW5FZmZlY3RGb3JTdHlsZShjb25zdCBUZXh0RGVjb3JhdGlvblBhaW50ZXI6OlN0eWxlcyYg
c3R5bGUpCi17Ci0gICAgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gZGVjb3JhdGlvbnM7
Ci0gICAgaWYgKHN0eWxlLnVuZGVybGluZUNvbG9yLmlzVmFsaWQoKSkKLSAgICAgICAgZGVjb3Jh
dGlvbnMuYWRkKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUu
b3ZlcmxpbmVDb2xvci5pc1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVj
b3JhdGlvbkxpbmU6Ok92ZXJsaW5lKTsKLSAgICBpZiAoc3R5bGUubGluZXRocm91Z2hDb2xvci5p
c1ZhbGlkKCkpCi0gICAgICAgIGRlY29yYXRpb25zLmFkZChUZXh0RGVjb3JhdGlvbkxpbmU6Okxp
bmVUaHJvdWdoKTsKLSAgICByZXR1cm4gZGVjb3JhdGlvbnM7Ci19OwotCiBhdXRvIFRleHREZWNv
cmF0aW9uUGFpbnRlcjo6c3R5bGVzRm9yUmVuZGVyZXIoY29uc3QgUmVuZGVyT2JqZWN0JiByZW5k
ZXJlciwgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gcmVxdWVzdGVkRGVjb3JhdGlvbnMs
IGJvb2wgZmlyc3RMaW5lU3R5bGUsIFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHlsZXMKIHsKICAg
ICBpZiAocmVxdWVzdGVkRGVjb3JhdGlvbnMuaXNFbXB0eSgpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1RleHREZWNvcmF0aW9uUGFpbnRlci5oCmluZGV4IDRkYTJlNDYzODFhNS4u
ZmY3M2NmODZmNTI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvVGV4dERl
Y29yYXRpb25QYWludGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1RleHREZWNv
cmF0aW9uUGFpbnRlci5oCkBAIC00NCw3ICs0NCw3IEBAIGNsYXNzIFRleHRSdW47CiBjbGFzcyBU
ZXh0RGVjb3JhdGlvblBhaW50ZXIgewogcHVibGljOgogICAgIHN0cnVjdCBTdHlsZXM7Ci0gICAg
VGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNzQ29udGV4dCYsIE9wdGlvblNldDxUZXh0RGVj
b3JhdGlvbkxpbmU+IGRlY29yYXRpb25zLCBib29sIGlzRmlyc3RMaW5lLCBjb25zdCBGb250Q2Fz
Y2FkZSYsIElubGluZUl0ZXJhdG9yOjpUZXh0Qm94SXRlcmF0b3IsIGZsb2F0IHdpZHRoLCBjb25z
dCBTaGFkb3dEYXRhKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyosIHN0ZDo6b3B0aW9uYWw8U3R5
bGVzPiA9IHN0ZDo6bnVsbG9wdCk7CisgICAgVGV4dERlY29yYXRpb25QYWludGVyKEdyYXBoaWNz
Q29udGV4dCYsIGNvbnN0IEZvbnRDYXNjYWRlJiwgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVy
YXRvciwgZmxvYXQgd2lkdGgsIGNvbnN0IFNoYWRvd0RhdGEqLCBjb25zdCBGaWx0ZXJPcGVyYXRp
b25zKiwgU3R5bGVzKTsKIAogICAgIHZvaWQgcGFpbnRCYWNrZ3JvdW5kRGVjb3JhdGlvbnMoY29u
c3QgVGV4dFJ1biYsIGNvbnN0IEZsb2F0UG9pbnQmIHRleHRPcmlnaW4sIGNvbnN0IEZsb2F0UG9p
bnQmIGJveE9yaWdpbik7CiAgICAgdm9pZCBwYWludEZvcmVncm91bmREZWNvcmF0aW9ucyhjb25z
dCBGbG9hdFBvaW50JiBib3hPcmlnaW4pOwpAQCAtNTMsMjIgKzUzLDIyIEBAIHB1YmxpYzoKICAg
ICAgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IFN0eWxlcyYpIGNvbnN0OwogICAgICAgICBib29s
IG9wZXJhdG9yIT0oY29uc3QgU3R5bGVzJiBvdGhlcikgY29uc3QgeyByZXR1cm4gISgqdGhpcyA9
PSBvdGhlcik7IH0KIAotICAgICAgICBDb2xvciB1bmRlcmxpbmVDb2xvcjsKLSAgICAgICAgQ29s
b3Igb3ZlcmxpbmVDb2xvcjsKLSAgICAgICAgQ29sb3IgbGluZXRocm91Z2hDb2xvcjsKLSAgICAg
ICAgVGV4dERlY29yYXRpb25TdHlsZSB1bmRlcmxpbmVTdHlsZTsKLSAgICAgICAgVGV4dERlY29y
YXRpb25TdHlsZSBvdmVybGluZVN0eWxlOwotICAgICAgICBUZXh0RGVjb3JhdGlvblN0eWxlIGxp
bmV0aHJvdWdoU3R5bGU7CisgICAgICAgIHN0cnVjdCBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciB7
CisgICAgICAgICAgICBDb2xvciBjb2xvcjsKKyAgICAgICAgICAgIFRleHREZWNvcmF0aW9uU3R5
bGUgZGVjb3JhdGlvblN0eWxlOworICAgICAgICB9OworICAgICAgICBEZWNvcmF0aW9uU3R5bGVB
bmRDb2xvciB1bmRlcmxpbmU7CisgICAgICAgIERlY29yYXRpb25TdHlsZUFuZENvbG9yIG92ZXJs
aW5lOworICAgICAgICBEZWNvcmF0aW9uU3R5bGVBbmRDb2xvciBsaW5ldGhyb3VnaDsKICAgICB9
OwogICAgIHN0YXRpYyBDb2xvciBkZWNvcmF0aW9uQ29sb3IoY29uc3QgUmVuZGVyU3R5bGUmKTsK
LSAgICBzdGF0aWMgT3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gdGV4dERlY29yYXRpb25z
SW5FZmZlY3RGb3JTdHlsZShjb25zdCBTdHlsZXMmKTsKICAgICBzdGF0aWMgU3R5bGVzIHN0eWxl
c0ZvclJlbmRlcmVyKGNvbnN0IFJlbmRlck9iamVjdCYsIE9wdGlvblNldDxUZXh0RGVjb3JhdGlv
bkxpbmU+IHJlcXVlc3RlZERlY29yYXRpb25zLCBib29sIGZpcnN0TGluZVN0eWxlID0gZmFsc2Us
IFBzZXVkb0lkID0gUHNldWRvSWQ6Ok5vbmUpOwogCiBwcml2YXRlOgogICAgIHZvaWQgcGFpbnRM
aW5lVGhyb3VnaChjb25zdCBDb2xvciYsIGZsb2F0IHRoaWNrbmVzcywgY29uc3QgRmxvYXRQb2lu
dCYgbG9jYWxPcmlnaW4pOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBtX2NvbnRleHQ7Ci0gICAg
T3B0aW9uU2V0PFRleHREZWNvcmF0aW9uTGluZT4gbV9kZWNvcmF0aW9uczsKKyAgICBPcHRpb25T
ZXQ8VGV4dERlY29yYXRpb25MaW5lPiBtX3RleHRCb3hEZWNvcmF0aW9uczsKICAgICBmbG9hdCBt
X3dhdnlPZmZzZXQgeyAwIH07CiAgICAgZmxvYXQgbV93aWR0aCB7IDAgfTsKICAgICBGbG9hdFBv
aW50IG1fYm94T3JpZ2luOwpAQCAtODEsNyArODEsNyBAQCBwcml2YXRlOgogICAgIGZsb2F0IG1f
ZGV2aWNlU2NhbGVGYWN0b3IgeyAwIH07CiAKICAgICBTdHlsZXMgbV9zdHlsZXM7Ci0gICAgY29u
c3QgUmVuZGVyU3R5bGUmIG1fbGluZVN0eWxlOworICAgIGNvbnN0IFJlbmRlclN0eWxlJiBtX3Rl
eHRCb3hTdHlsZTsKIH07CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmNwcAppbmRleCAwZjk3NjRmMTQyNDcuLmMx
NTY2OTM1ZGJhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJv
eFN0eWxlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94U3R5bGUu
Y3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBib29sIGlzQW5jZXN0b3JBbmRXaXRoaW5CbG9j
ayhjb25zdCBSZW5kZXJJbmxpbmUmIGFuY2VzdG9yLCBjb25zdCBSZW5kZXJPCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi1zdGF0aWMgZmxvYXQgbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9u
TGluZShjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9h
dCB0ZXh0UnVuTG9naWNhbFRvcCwgY29uc3QgUmVuZGVyRWxlbWVudCogZGVjb3JhdGlvblJlbmRl
cmVyKQorc3RhdGljIGZsb2F0IG1pbkxvZ2ljYWxUb3BGb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29u
c3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3hJdGVyYXRvciYgbGluZUJveCwgZmxvYXQgdGV4dFJ1
bkxvZ2ljYWxUb3AsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlcikK
IHsKICAgICBhdXRvIG1pbkxvZ2ljYWxUb3AgPSB0ZXh0UnVuTG9naWNhbFRvcDsKICAgICBmb3Ig
KGF1dG8gcnVuID0gbGluZUJveC0+Zmlyc3RMZWFmQm94KCk7IHJ1bjsgcnVuLnRyYXZlcnNlTmV4
dE9uTGluZSgpKSB7CkBAIC02Myw5ICs2Myw5IEBAIHN0YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9w
Rm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlCiAg
ICAgICAgICAgICBjb250aW51ZTsgLy8gUG9zaXRpb25lZCBwbGFjZWhvbGRlcnMgZG9uJ3QgYWZm
ZWN0IGNhbGN1bGF0aW9ucy4KIAogICAgICAgICBpZiAoIXJ1bi0+c3R5bGUoKS50ZXh0RGVjb3Jh
dGlvbnNJbkVmZmVjdCgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9uTGluZTo6VW5kZXJsaW5lKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBJZiB0aGUgdGV4dCBkZWNvcmF0aW9uIGlzbid0IGlu
IGVmZmVjdCBvbiB0aGUgY2hpbGQsIHRoZW4gaXQgbXVzdCBiZSBvdXRzaWRlIG9mIHxkZWNvcmF0
aW9uUmVuZGVyZXJ8J3MgaGllcmFyY2h5LgorICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRo
ZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3QgaW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBt
dXN0IGJlIG91dHNpZGUgb2YgfGRlY29yYXRpbmdCb3hSZW5kZXJlcnwncyBoaWVyYXJjaHkuCiAK
LSAgICAgICAgaWYgKGRlY29yYXRpb25SZW5kZXJlciAmJiBkZWNvcmF0aW9uUmVuZGVyZXItPmlz
UmVuZGVySW5saW5lKCkgJiYgIWlzQW5jZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5k
ZXJJbmxpbmU+KCpkZWNvcmF0aW9uUmVuZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKKyAgICAg
ICAgaWYgKGRlY29yYXRpbmdCb3hSZW5kZXJlci5pc1JlbmRlcklubGluZSgpICYmICFpc0FuY2Vz
dG9yQW5kV2l0aGluQmxvY2soZG93bmNhc3Q8UmVuZGVySW5saW5lPihkZWNvcmF0aW5nQm94UmVu
ZGVyZXIpLCAmcnVuLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAg
ICAgIGlmIChydW4tPmlzVGV4dCgpIHx8IHJ1bi0+c3R5bGUoKS50ZXh0RGVjb3JhdGlvblNraXBJ
bmsoKSA9PSBUZXh0RGVjb3JhdGlvblNraXBJbms6Ok5vbmUpCkBAIC03NCw3ICs3NCw3IEBAIHN0
YXRpYyBmbG9hdCBtaW5Mb2dpY2FsVG9wRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElubGlu
ZUl0ZXJhdG9yOjpMaW5lQm94SXRlCiAgICAgcmV0dXJuIG1pbkxvZ2ljYWxUb3A7CiB9CiAKLXN0
YXRpYyBmbG9hdCBtYXhMb2dpY2FsQm90dG9tRm9yVGV4dERlY29yYXRpb25MaW5lKGNvbnN0IElu
bGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxpbmVCb3gsIGZsb2F0IHRleHRSdW5Mb2dp
Y2FsQm90dG9tLCBjb25zdCBSZW5kZXJFbGVtZW50KiBkZWNvcmF0aW9uUmVuZGVyZXIpCitzdGF0
aWMgZmxvYXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25zdCBJbmxp
bmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBsaW5lQm94LCBmbG9hdCB0ZXh0UnVuTG9naWNh
bEJvdHRvbSwgY29uc3QgUmVuZGVyRWxlbWVudCYgZGVjb3JhdGluZ0JveFJlbmRlcmVyKQogewog
ICAgIGF1dG8gbWF4TG9naWNhbEJvdHRvbSA9IHRleHRSdW5Mb2dpY2FsQm90dG9tOwogICAgIGZv
ciAoYXV0byBydW4gPSBsaW5lQm94LT5maXJzdExlYWZCb3goKTsgcnVuOyBydW4udHJhdmVyc2VO
ZXh0T25MaW5lKCkpIHsKQEAgLTgyLDkgKzgyLDkgQEAgc3RhdGljIGZsb2F0IG1heExvZ2ljYWxC
b3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUoY29uc3QgSW5saW5lSXRlcmF0b3I6OkxpbmVCb3gK
ICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyBQb3NpdGlvbmVkIHBsYWNlaG9sZGVycyBkb24ndCBh
ZmZlY3QgY2FsY3VsYXRpb25zLgogCiAgICAgICAgIGlmICghcnVuLT5zdHlsZSgpLnRleHREZWNv
cmF0aW9uc0luRWZmZWN0KCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUp
KQotICAgICAgICAgICAgY29udGludWU7IC8vIElmIHRoZSB0ZXh0IGRlY29yYXRpb24gaXNuJ3Qg
aW4gZWZmZWN0IG9uIHRoZSBjaGlsZCwgdGhlbiBpdCBtdXN0IGJlIG91dHNpZGUgb2YgfGRlY29y
YXRpb25SZW5kZXJlcnwncyBoaWVyYXJjaHkuCisgICAgICAgICAgICBjb250aW51ZTsgLy8gSWYg
dGhlIHRleHQgZGVjb3JhdGlvbiBpc24ndCBpbiBlZmZlY3Qgb24gdGhlIGNoaWxkLCB0aGVuIGl0
IG11c3QgYmUgb3V0c2lkZSBvZiB8ZGVjb3JhdGluZ0JveFJlbmRlcmVyfCdzIGhpZXJhcmNoeS4K
IAotICAgICAgICBpZiAoZGVjb3JhdGlvblJlbmRlcmVyICYmIGRlY29yYXRpb25SZW5kZXJlci0+
aXNSZW5kZXJJbmxpbmUoKSAmJiAhaXNBbmNlc3RvckFuZFdpdGhpbkJsb2NrKGRvd25jYXN0PFJl
bmRlcklubGluZT4oKmRlY29yYXRpb25SZW5kZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQorICAg
ICAgICBpZiAoZGVjb3JhdGluZ0JveFJlbmRlcmVyLmlzUmVuZGVySW5saW5lKCkgJiYgIWlzQW5j
ZXN0b3JBbmRXaXRoaW5CbG9jayhkb3duY2FzdDxSZW5kZXJJbmxpbmU+KGRlY29yYXRpbmdCb3hS
ZW5kZXJlciksICZydW4tPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgY29udGludWU7CiAKICAg
ICAgICAgaWYgKHJ1bi0+aXNUZXh0KCkgfHwgcnVuLT5zdHlsZSgpLnRleHREZWNvcmF0aW9uU2tp
cEluaygpID09IFRleHREZWNvcmF0aW9uU2tpcEluazo6Tm9uZSkKQEAgLTk1LDM0ICs5NSw0MyBA
QCBzdGF0aWMgZmxvYXQgbWF4TG9naWNhbEJvdHRvbUZvclRleHREZWNvcmF0aW9uTGluZShjb25z
dCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveAogCiBzdGF0aWMgY29uc3QgUmVuZGVyRWxlbWVudCog
ZW5jbG9zaW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24oY29uc3QgUmVuZGVyVGV4dCYgcmVu
ZGVyZXIsIGJvb2wgZmlyc3RMaW5lKQogewotICAgIGNvbnN0IFJlbmRlckVsZW1lbnQqIGN1cnJl
bnQgPSByZW5kZXJlci5wYXJlbnQoKTsKLSAgICBkbyB7Ci0gICAgICAgIGlmIChjdXJyZW50LT5p
c1JlbmRlckJsb2NrKCkpCi0gICAgICAgICAgICByZXR1cm4gY3VycmVudDsKLSAgICAgICAgaWYg
KCFjdXJyZW50LT5pc1JlbmRlcklubGluZSgpIHx8IGN1cnJlbnQtPmlzUnVieVRleHQoKSkKKyAg
ICBmb3IgKGF1dG8qIGFuY2VzdG9yID0gcmVuZGVyZXIucGFyZW50KCk7IGFuY2VzdG9yOyBhbmNl
c3RvciA9IGFuY2VzdG9yLT5wYXJlbnQoKSkgeworICAgICAgICBpZiAoYW5jZXN0b3ItPmlzUmVu
ZGVyQmxvY2soKSkKKyAgICAgICAgICAgIHJldHVybiBhbmNlc3RvcjsKKworICAgICAgICBpZiAo
IWFuY2VzdG9yLT5pc1JlbmRlcklubGluZSgpKSB7CisgICAgICAgICAgICAvLyBXZSBzaG91bGQg
YWx3YXlzIGZpbmQgZWl0aGVyIHRoZSBibG9jayBjb250YWluZXIgb3IgYW4gaW5saW5lIGJveCBh
bmNlc3RvciBpbmJldHdlZW4uCiAgICAgICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICAgICAg
fQogCi0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZVRvVXNlID0gZmlyc3RMaW5lID8g
Y3VycmVudC0+Zmlyc3RMaW5lU3R5bGUoKSA6IGN1cnJlbnQtPnN0eWxlKCk7Ci0gICAgICAgIGlm
IChzdHlsZVRvVXNlLnRleHREZWNvcmF0aW9uTGluZSgpLmNvbnRhaW5zKFRleHREZWNvcmF0aW9u
TGluZTo6VW5kZXJsaW5lKSkKLSAgICAgICAgICAgIHJldHVybiBjdXJyZW50OwotICAgICAgICBj
dXJyZW50ID0gY3VycmVudC0+cGFyZW50KCk7Ci0gICAgfSB3aGlsZSAoY3VycmVudCAmJiAoIWN1
cnJlbnQtPmVsZW1lbnQoKSB8fCAoIWlzPEhUTUxBbmNob3JFbGVtZW50PigqY3VycmVudC0+ZWxl
bWVudCgpKSAmJiAhY3VycmVudC0+ZWxlbWVudCgpLT5oYXNUYWdOYW1lKEhUTUxOYW1lczo6Zm9u
dFRhZykpKSk7CisgICAgICAgIGF1dG8gaXNEZWNvcmF0aW5nSW5saW5lQm94ID0gWyZdIHsKKyAg
ICAgICAgICAgIGlmIChhbmNlc3Rvci0+ZWxlbWVudCgpICYmIChpczxIVE1MQW5jaG9yRWxlbWVu
dD4oKmFuY2VzdG9yLT5lbGVtZW50KCkpIHx8IGFuY2VzdG9yLT5lbGVtZW50KCktPmhhc1RhZ05h
bWUoSFRNTE5hbWVzOjpmb250VGFnKSkpIHsKKyAgICAgICAgICAgICAgICAvLyA8Zm9udD4gYW5k
IDxhPiBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgZGVjb3JhdGluZyBib3hlcy4KKyAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGF1dG8mIHN0eWxl
VG9Vc2UgPSBmaXJzdExpbmUgPyBhbmNlc3Rvci0+Zmlyc3RMaW5lU3R5bGUoKSA6IGFuY2VzdG9y
LT5zdHlsZSgpOworICAgICAgICAgICAgcmV0dXJuIHN0eWxlVG9Vc2UudGV4dERlY29yYXRpb25M
aW5lKCkuY29udGFpbnMoVGV4dERlY29yYXRpb25MaW5lOjpVbmRlcmxpbmUpOworICAgICAgICB9
OworICAgICAgICBpZiAoaXNEZWNvcmF0aW5nSW5saW5lQm94KCkpCisgICAgICAgICAgICByZXR1
cm4gYW5jZXN0b3I7CisgICAgfQorCisgICAgcmV0dXJuIG51bGxwdHI7Cit9CiAKLSAgICByZXR1
cm4gY3VycmVudDsKK3N0YXRpYyBmbG9hdCB0ZXh0UnVuT2Zmc2V0RnJvbUJvdHRvbU1vc3RXaXRo
aW5EZWNvcmF0aW5nQm94KGNvbnN0IElubGluZUl0ZXJhdG9yOjpMaW5lQm94SXRlcmF0b3ImIGxp
bmVCb3gsIGNvbnN0IFJlbmRlckVsZW1lbnQmIGRlY29yYXRpbmdCb3hSZW5kZXJlciwgYm9vbCBp
c0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlLCBmbG9hdCB0ZXh0Qm94TG9naWNhbFRvcCwgZmxvYXQg
dGV4dEJveExvZ2ljYWxCb3R0b20pCit7CisgICAgaWYgKGlzRmxpcHBlZExpbmVzV3JpdGluZ01v
ZGUpCisgICAgICAgIHJldHVybiB0ZXh0Qm94TG9naWNhbFRvcCAtIG1pbkxvZ2ljYWxUb3BGb3JU
ZXh0RGVjb3JhdGlvbkxpbmUobGluZUJveCwgdGV4dEJveExvZ2ljYWxUb3AsIGRlY29yYXRpbmdC
b3hSZW5kZXJlcik7CisgICAgcmV0dXJuIG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlv
bkxpbmUobGluZUJveCwgdGV4dEJveExvZ2ljYWxCb3R0b20sIGRlY29yYXRpbmdCb3hSZW5kZXJl
cikgLSB0ZXh0Qm94TG9naWNhbEJvdHRvbTsKIH0KIAogc3RhdGljIGZsb2F0IHRleHRSdW5PZmZz
ZXRGcm9tQm90dG9tTW9zdChjb25zdCBJbmxpbmVJdGVyYXRvcjo6TGluZUJveEl0ZXJhdG9yJiBs
aW5lQm94LCBjb25zdCBSZW5kZXJUZXh0JiByZW5kZXJlciwgZmxvYXQgdGV4dEJveExvZ2ljYWxU
b3AsIGZsb2F0IHRleHRCb3hMb2dpY2FsQm90dG9tKQogewotICAgIGZsb2F0IG9mZnNldCA9IDAu
ZjsKLSAgICBhdXRvKiBkZWNvcmF0aW9uUmVuZGVyZXIgPSBlbmNsb3NpbmdSZW5kZXJlcldpdGhU
ZXh0RGVjb3JhdGlvbihyZW5kZXJlciwgbGluZUJveC0+aXNGaXJzdCgpKTsKLSAgICBpZiAocmVu
ZGVyZXIuc3R5bGUoKS5pc0ZsaXBwZWRMaW5lc1dyaXRpbmdNb2RlKCkpIHsKLSAgICAgICAgYXV0
byBtaW5Mb2dpY2FsVG9wID0gbWluTG9naWNhbFRvcEZvclRleHREZWNvcmF0aW9uTGluZShsaW5l
Qm94LCB0ZXh0Qm94TG9naWNhbFRvcCwgZGVjb3JhdGlvblJlbmRlcmVyKTsKLSAgICAgICAgb2Zm
c2V0ID0gdGV4dEJveExvZ2ljYWxUb3AgLSBtaW5Mb2dpY2FsVG9wOwotICAgIH0gZWxzZSB7Ci0g
ICAgICAgIG9mZnNldCA9IG1heExvZ2ljYWxCb3R0b21Gb3JUZXh0RGVjb3JhdGlvbkxpbmUobGlu
ZUJveCwgdGV4dEJveExvZ2ljYWxCb3R0b20sIGRlY29yYXRpb25SZW5kZXJlcik7Ci0gICAgICAg
IG9mZnNldCAtPSB0ZXh0Qm94TG9naWNhbEJvdHRvbTsKLSAgICB9Ci0gICAgcmV0dXJuIG9mZnNl
dDsKKyAgICBhdXRvKiBkZWNvcmF0aW5nQm94UmVuZGVyZXIgPSBlbmNsb3NpbmdSZW5kZXJlcldp
dGhUZXh0RGVjb3JhdGlvbihyZW5kZXJlciwgbGluZUJveC0+aXNGaXJzdCgpKTsKKyAgICBpZiAo
IWRlY29yYXRpbmdCb3hSZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIDAuZjsKKyAgICByZXR1cm4g
dGV4dFJ1bk9mZnNldEZyb21Cb3R0b21Nb3N0V2l0aGluRGVjb3JhdGluZ0JveChsaW5lQm94LCAq
ZGVjb3JhdGluZ0JveFJlbmRlcmVyLCBkZWNvcmF0aW5nQm94UmVuZGVyZXItPnN0eWxlKCkuaXNG
bGlwcGVkTGluZXNXcml0aW5nTW9kZSgpLCB0ZXh0Qm94TG9naWNhbFRvcCwgdGV4dEJveExvZ2lj
YWxCb3R0b20pOwogfQogCiBzdGF0aWMgaW5saW5lIGZsb2F0IGRlZmF1bHRHYXAoY29uc3QgUmVu
ZGVyU3R5bGUmIHN0eWxlKQpAQCAtMjkyLDEyICszMDEsMjIgQEAgR2x5cGhPdmVyZmxvdyB2aXN1
YWxPdmVyZmxvd0ZvckRlY29yYXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKIAogZmxv
YXQgdW5kZXJsaW5lT2Zmc2V0Rm9yVGV4dEJveFBhaW50aW5nKGNvbnN0IFJlbmRlclN0eWxlJiBz
dHlsZSwgY29uc3QgSW5saW5lSXRlcmF0b3I6OlRleHRCb3hJdGVyYXRvciYgdGV4dEJveCkKIHsK
KyAgICAvLyAxLiBGaW5kIHRoZSBkZWNvcmF0aW5nIGJveCBmb3IgdGhpcyB0ZXh0IHJ1biAoZm9y
IHJvb3QgaW5saW5lIGJveCBjb250ZW50LCBpdCdzIHRoZSBjb250YWluaW5nIGJsb2NrLCBmb3Ig
dGV4dCBpbnNpZGUgYW4gaW5saW5lIGJveCwgaXQncyBtb3N0bHkgdGhlIHBhcmVudCBpbmxpbmUg
Ym94IGl0c2VsZikKKyAgICAvLyAyLiBjb21wdXRlIHRoZSB1bmRlcmxpbmUgb2Zmc2V0LgorICAg
IGF1dG8mIHRleHRCb3hSZW5kZXJlciA9IHRleHRCb3gtPnJlbmRlcmVyKCk7CiAgICAgYXV0byBs
aW5lQm94ID0gdGV4dEJveC0+bGluZUJveCgpOworICAgIGF1dG8gaXNGaXJzdExpbmUgPSBsaW5l
Qm94LT5pc0ZpcnN0KCk7CisgICAgYXV0byogZGVjb3JhdGluZ0JveFJlbmRlcmVyID0gZW5jbG9z
aW5nUmVuZGVyZXJXaXRoVGV4dERlY29yYXRpb24odGV4dEJveFJlbmRlcmVyLCBpc0ZpcnN0TGlu
ZSk7CisgICAgaWYgKCFkZWNvcmF0aW5nQm94UmVuZGVyZXIpIHsKKyAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CisgICAgICAgIHJldHVybiAwLmY7CisgICAgfQorCiAgICAgYXV0byB0ZXh0
VW5kZXJsaW5lUG9zaXRpb25VbmRlciA9IHN0ZDo6b3B0aW9uYWw8VGV4dFVuZGVybGluZVBvc2l0
aW9uVW5kZXI+IHsgfTsKICAgICBhdXRvIHVuZGVybGluZVBvc2l0aW9uVmFsdWUgPSByZXNvbHZl
ZFVuZGVybGluZVBvc2l0aW9uKHN0eWxlLCBsaW5lQm94LT5iYXNlbGluZVR5cGUoKSk7CiAKICAg
ICBpZiAodW5kZXJsaW5lUG9zaXRpb25WYWx1ZSA9PSBUZXh0VW5kZXJsaW5lUG9zaXRpb246OlVu
ZGVyKSB7Ci0gICAgICAgIGF1dG8gdGV4dFJ1bk9mZnNldCA9IHRleHRSdW5PZmZzZXRGcm9tQm90
dG9tTW9zdChsaW5lQm94LCB0ZXh0Qm94LT5yZW5kZXJlcigpLCB0ZXh0Qm94LT5sb2dpY2FsVG9w
KCksIHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSk7CisgICAgICAgIGF1dG8gdGV4dFJ1bk9mZnNl
dCA9IHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdChsaW5lQm94LCB0ZXh0Qm94UmVuZGVyZXIs
IHRleHRCb3gtPmxvZ2ljYWxUb3AoKSwgdGV4dEJveC0+bG9naWNhbEJvdHRvbSgpKTsKICAgICAg
ICAgdGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgPSBUZXh0VW5kZXJsaW5lUG9zaXRpb25VbmRl
ciB7IHRleHRCb3gtPmxvZ2ljYWxCb3R0b20oKSAtIHRleHRCb3gtPmxvZ2ljYWxUb3AoKSwgdGV4
dFJ1bk9mZnNldCB9OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUv
SW5saW5lVGV4dEJveFN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9JbmxpbmVUZXh0Qm94
U3R5bGUuaAppbmRleCAzODQzMjA5ZDYyNmIuLmQ2MjZjYzU3MDdhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvSW5saW5lVGV4dEJveFN0eWxlLmgKQEAgLTMzLDMyICszMywzMyBAQAogbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgIAogY2xhc3MgTGVnYWN5SW5saW5lVGV4dEJveDsKK2NsYXNzIFJl
bmRlckVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIGNsYXNzIFRleHRVbmRlcmxpbmVPZmZz
ZXQ7CiAKIGlubGluZSBmbG9hdCB3YXZ5T2Zmc2V0RnJvbURlY29yYXRpb24oKQogewotICAgIHJl
dHVybiAxOworICAgIHJldHVybiAxLmY7CiB9CiAKIHN0cnVjdCBXYXZ5U3Ryb2tlUGFyYW1ldGVy
cyB7CiAgICAgLy8gRGlzdGFuY2UgYmV0d2VlbiBkZWNvcmF0aW9uJ3MgYXhpcyBhbmQgQmV6aWVy
IGN1cnZlJ3MgY29udHJvbCBwb2ludHMuCiAgICAgLy8gVGhlIGhlaWdodCBvZiB0aGUgY3VydmUg
aXMgYmFzZWQgb24gdGhpcyBkaXN0YW5jZS4gSW5jcmVhc2VzIHRoZSBjdXJ2ZSdzIGhlaWdodAog
ICAgIC8vIGFzIGZvbnRTaXplIGluY3JlYXNlcyB0byBtYWtlIHRoZSBjdXJ2ZSBsb29rIGJldHRl
ci4KLSAgICBmbG9hdCBjb250cm9sUG9pbnREaXN0YW5jZSB7IDAgfTsKKyAgICBmbG9hdCBjb250
cm9sUG9pbnREaXN0YW5jZSB7IDAuZiB9OwogCiAgICAgLy8gSW5jcmVtZW50IHVzZWQgdG8gZm9y
bSB0aGUgZGlhbW9uZCBzaGFwZSBiZXR3ZWVuIHN0YXJ0IHBvaW50IChwMSksIGNvbnRyb2wKICAg
ICAvLyBwb2ludHMgYW5kIGVuZCBwb2ludCAocDIpIGFsb25nIHRoZSBheGlzIG9mIHRoZSBkZWNv
cmF0aW9uLiBUaGUgY3VydmUgZ2V0cwogICAgIC8vIHdpZGVyIGFzIGZvbnQgc2l6ZSBpbmNyZWFz
ZXMuCi0gICAgZmxvYXQgc3RlcCB7IDAgfTsKKyAgICBmbG9hdCBzdGVwIHsgMC5mIH07CiB9Owog
V2F2eVN0cm9rZVBhcmFtZXRlcnMgZ2V0V2F2eVN0cm9rZVBhcmFtZXRlcnMoZmxvYXQgZm9udFNp
emUpOwogCiBzdHJ1Y3QgVGV4dFVuZGVybGluZVBvc2l0aW9uVW5kZXIgewotICAgIGZsb2F0IHRl
eHRSdW5Mb2dpY2FsSGVpZ2h0IHsgMCB9OworICAgIGZsb2F0IHRleHRSdW5Mb2dpY2FsSGVpZ2h0
IHsgMC5mIH07CiAgICAgLy8gVGhpcyBvZmZzZXQgdmFsdWUgaXMgdGhlIGRpc3RhbmNlIGJldHdl
ZW4gdGhlIGN1cnJlbnQgdGV4dCBydW4ncyBsb2dpY2FsIGJvdHRvbSBhbmQgdGhlIGxvd2VzdCBw
b3NpdGlvbiBvZiBhbGwgdGhlIHRleHQgcnVucwogICAgIC8vIG9uIGxpbmUgdGhhdCBiZWxvbmcg
dG8gdGhlIHNhbWUgZGVjb3JhdGlvbiBib3guCi0gICAgZmxvYXQgdGV4dFJ1bk9mZnNldEZyb21C
b3R0b21Nb3N0IHsgMCB9OworICAgIGZsb2F0IHRleHRSdW5PZmZzZXRGcm9tQm90dG9tTW9zdCB7
IDAuZiB9OwogfTsKIEdseXBoT3ZlcmZsb3cgdmlzdWFsT3ZlcmZsb3dGb3JEZWNvcmF0aW9ucyhj
b25zdCBSZW5kZXJTdHlsZSYpOwogR2x5cGhPdmVyZmxvdyB2aXN1YWxPdmVyZmxvd0ZvckRlY29y
YXRpb25zKGNvbnN0IFJlbmRlclN0eWxlJiwgRm9udEJhc2VsaW5lLCBUZXh0VW5kZXJsaW5lUG9z
aXRpb25VbmRlcik7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>