<?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>315662</bug_id>
          
          <creation_ts>2026-05-27 08:14:36 -0700</creation_ts>
          <short_desc>[cleanup] Fold computeChildPreferredLogicalWidths and the virtual computeChildIntrinsicLogicalWidths into one non-virtual function</short_desc>
          <delta_ts>2026-05-28 05:13:13 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>koivisto</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2214970</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2026-05-27 08:14:36 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2214975</commentid>
    <comment_count>1</comment_count>
      <attachid>479838</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-27 08:26:11 -0700</bug_when>
    <thetext>Created attachment 479838
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2215105</commentid>
    <comment_count>2</comment_count>
      <attachid>479846</attachid>
    <who name="alan">zalan</who>
    <bug_when>2026-05-27 14:00:17 -0700</bug_when>
    <thetext>Created attachment 479846
[fast-cq]Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2215289</commentid>
    <comment_count>3</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2026-05-28 05:12:31 -0700</bug_when>
    <thetext>Committed 314029@main (27adc3faee68): &lt;https://commits.webkit.org/314029@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 479846.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2215290</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2026-05-28 05:13:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/178140840&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479838</attachid>
            <date>2026-05-27 08:26:11 -0700</date>
            <delta_ts>2026-05-27 14:00:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-315662-20260527082611.patch</filename>
            <type>text/plain</type>
            <size>26156</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSAxZTk1OTc3ZDVmMDgzZjEwYWMxYmY2M2YyNjcyZGZhNDUyYjhhNzM1IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMjcgTWF5IDIwMjYgMDg6MTY6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gRm9sZCBjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGFuZCB0aGUKIHZpcnR1
YWwgY29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyBpbnRvIG9uZSBub24tdmlydHVh
bCBmdW5jdGlvbgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNTY2
MgoKUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCgpjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzIGFuZCB0aGUgdmlydHVhbCBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzCnNhdCBuZXh0IHRvIGVhY2ggb3RoZXIgb24gUmVuZGVyQmxvY2ssIHdpdGggb3ZlcmxhcHBp
bmcgbmFtZXMgYW5kIG92ZXJsYXBwaW5nIHB1cnBvc2VzOiBib3RoCiJjb21wdXRlIiB0aGUgY2hp
bGQncyAibG9naWNhbCB3aWR0aHMiLCBhbmQgYm90aCBhcmUgcmVhbGx5IGNvbXB1dGluZyBpbnRy
aW5zaWMgKG1pbi1jb250ZW50IC8gbWF4LWNvbnRlbnQpIHNpemVzLCBub3QgdGhlIHNwZWMncyBw
cmVmZXJyZWQgc2l6ZXMuCkZyb20gb3V0c2lkZSwgeW91IGNvdWxkIG5vdCB0ZWxsIHdoaWNoIG9u
ZSB0byBjYWxsLiBUaGUgdHJ1dGggd2FzIHRoYXQgdGhleSB3ZXJlIG5vdCBwZWVycyBidXQgdHdv
IGxheWVycyBvZiB0aGUgc2FtZSBjb21wdXRhdGlvbjoKdGhlIG5vbi12aXJ0dWFsIGZ1bmN0aW9u
IGhhbmRsZWQgdGhlIHNwZWMgYWRqdXN0bWVudHMgKG9ydGhvZ29uYWwgZmxvdyArIHRoZSBleHBs
aWNpdCBtaW4tY29udGVudCAvIG1heC1jb250ZW50IGtleXdvcmQgY29sbGFwc2UgZnJvbQpjc3Mt
c2l6aW5nLTMgI2Jsb2NrLWludHJpbnNpYyksIGFuZCBjYWxsZWQgdGhlIHZpcnR1YWwgZnVuY3Rp
b24gYXMgYSBzdWItc3RlcCB0byByZWFkIHRoZSBjaGlsZCdzIHByZWZlcnJlZCB3aWR0aHMuClRo
ZSBvbmx5IG92ZXJyaWRlIHdhcyBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNoaWxkSW50cmlu
c2ljTG9naWNhbFdpZHRocywgd2hvc2UgZW50aXJlIGpvYiB3YXMgdG8gd3JhcCB0aGUgcmVhZCBp
biBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNvIHRoZQpjaGlsZCBzYXcgdGhl
IGZsZXggbGluZSdzIGNyb3NzIHNpemUgaW4gc2NvcGUuIE9uZSBsYXllcmVkIGNvbmNlcHQsIHR3
byBmdW5jdGlvbnMsIGFuZCB0aGUgbmFtZXMgZGlkIG5vdCBnaXZlIHRoZSByZWFkZXIgYSB3YXkg
dG8ga2VlcCB0aGVtIGFwYXJ0LgoKRm9sZGVkIHRoZSB2aXJ0dWFsIGludG8gdGhlIHJlbmFtZWQg
Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyAocmV0dXJuaW5nIHN0ZDo6cGFpciwg
cmVwbGFjaW5nCmJvb2wgKyBvdXQtcGFyYW1zIGZvciBzeW1tZXRyeSB3aXRoIGludHJpbnNpY0xv
Z2ljYWxNYXJnaW5TdGFydEFuZEVuZCBhbmQgdGhlIHJlY2VudGx5LXJlbmFtZWQgY29tcHV0ZUJs
b2NrSW50cmluc2ljTG9naWNhbFdpZHRocwphbmQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHNGb3JGaWVsZHNldExlZ2VuZCkuCgpObyBiZWhhdmlvciBjaGFuZ2UuCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrSW50cmlu
c2ljTG9naWNhbFdpZHRocyk6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUNoaWxkSW50
cmluc2ljTG9naWNhbFdpZHRocyk6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHNGb3JGaWVsZHNldExlZ2VuZCk6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpPdmVycmlkaW5nU2l6ZXNT
Y29wZTo6T3ZlcnJpZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
Ok92ZXJyaWRpbmdTaXplc1Njb3BlOjp+T3ZlcnJpZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OlNj
b3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0pOgooV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06On5TY29wZWRDcm9zc0F4
aXNPdmVycmlkZUZvckZsZXhJdGVtKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDc0ICsrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgIHwgIDEwICstCiAuLi4vV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAxMjkgKysrKysrLS0tLS0tLS0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCAgfCAgMzMgKysrKy0KIDUg
ZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA0ZjRjYWEzZmRlZjUuLmJm
ZDg1ZmNhNDk5ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC0yMzM2LDkgKzIzMzYsNyBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVu
ZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0ludHJpbnNpY0xvZ2ljYWxXaWR0aAogICAgICAgICBhdXRv
IFttYXJnaW5TdGFydCwgbWFyZ2luRW5kXSA9IGludHJpbnNpY0xvZ2ljYWxNYXJnaW5TdGFydEFu
ZEVuZChjaGlsZEJveCk7CiAgICAgICAgIGF1dG8gbWFyZ2luID0gbWFyZ2luU3RhcnQgKyBtYXJn
aW5FbmQ7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZE1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aDsKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aDsKLSAg
ICAgICAgY29tcHV0ZUNoaWxkUHJlZmVycmVkTG9naWNhbFdpZHRocyhjb25zdF9jYXN0PFJlbmRl
ckJveCY+KGNoaWxkQm94KSwgY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNoaWxkTWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKyAgICAgICAgYXV0byBbY2hpbGRNaW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoXSA9IGNvbXB1dGVDaGls
ZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoY29uc3RfY2FzdDxSZW5kZXJCb3gmPihjaGlsZEJveCkp
OwogCiAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggKyBtYXJnaW47CiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KGxvZ2lj
YWxXaWR0aCwgbWluTG9naWNhbFdpZHRoKTsKQEAgLTIzODUsMjMgKzIzODMsMTQgQEAgc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tJbnRy
aW5zaWNMb2dpY2FsV2lkdGgKICAgICByZXR1cm4geyBtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2lj
YWxXaWR0aCB9OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQ2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQmIG1pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKSBjb25zdAot
ewotICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkLm1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCgpOwotICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkLm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpOwotfQotCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQ2hpbGRQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaXQmIG1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKSBjb25zdAorc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJsb2Nr
Ojpjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGRCb3gp
IGNvbnN0CiB7CiAgICAgaWYgKGNoaWxkQm94LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2hpbGQgaXMg
YW4gb3J0aG9nb25hbCBmbG93LCBjaGlsZCdzIGhlaWdodCBkZXRlcm1pbmVzIHRoZSB3aWR0aCwK
ICAgICAgICAgLy8gYnV0IHRoZSBoZWlnaHQgaXMgbm90IGF2YWlsYWJsZSB1bnRpbCBsYXlvdXQu
CiAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy13cml0aW5nLW1vZGVzLTMv
I29ydGhvZ29uYWwtc2hyaW5rLXRvLWZpdAotICAgICAgICBpZiAoIWNoaWxkQm94Lm5lZWRzTGF5
b3V0KCkpIHsKLSAgICAgICAgICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkQm94
LmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IGNoaWxkQm94LmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIWNoaWxkQm94Lm5lZWRzTGF5b3V0KCkpCisgICAgICAgICAgICByZXR1
cm4geyBjaGlsZEJveC5sb2dpY2FsSGVpZ2h0KCksIGNoaWxkQm94LmxvZ2ljYWxIZWlnaHQoKSB9
OwogICAgICAgICBhdXRvJiBjaGlsZEJveFN0eWxlID0gY2hpbGRCb3guc3R5bGUoKTsKICAgICAg
ICAgaWYgKGF1dG8gZml4ZWRDaGlsZEJveFN0eWxlTG9naWNhbFdpZHRoID0gY2hpbGRCb3hTdHls
ZS5sb2dpY2FsV2lkdGgoKS50cnlGaXhlZCgpOyBjaGlsZEJveC5zaG91bGRDb21wdXRlTG9naWNh
bEhlaWdodEZyb21Bc3BlY3RSYXRpbygpICYmIGZpeGVkQ2hpbGRCb3hTdHlsZUxvZ2ljYWxXaWR0
aCkgewogICAgICAgICAgICAgYXV0byBhc3BlY3RSYXRpb1NpemUgPSBibG9ja1NpemVGcm9tQXNw
ZWN0UmF0aW8oCkBAIC0yNDEzLDI4ICsyNDAyLDQ1IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoUmVuZGVyQm94JiBjaGlsZEJveCwgTGF5b3V0
CiAgICAgICAgICAgICAgICAgc3R5bGUoKS5hc3BlY3RSYXRpbygpLAogICAgICAgICAgICAgICAg
IGlzUmVuZGVyUmVwbGFjZWQoKQogICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IGFzcGVjdFJhdGlvU2l6ZTsKLSAgICAgICAgICAgIG1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IGFzcGVjdFJhdGlvU2l6ZTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiB7IGFzcGVjdFJhdGlvU2l6ZSwgYXNwZWN0UmF0aW9TaXplIH07
CiAgICAgICAgIH0KICAgICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0V2l0aG91dExheW91dCA9IGNo
aWxkQm94LmNvbXB1dGVMb2dpY2FsSGVpZ2h0Rm9ySW50cmluc2ljV2lkdGhDb250cmlidXRpb24o
KTsKLSAgICAgICAgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbG9naWNhbEhlaWdodFdpdGhv
dXRMYXlvdXQ7Ci0gICAgICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxIZWln
aHRXaXRob3V0TGF5b3V0OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IGxvZ2lj
YWxIZWlnaHRXaXRob3V0TGF5b3V0LCBsb2dpY2FsSGVpZ2h0V2l0aG91dExheW91dCB9OwogICAg
IH0KLSAgICAKLSAgICBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGNoaWxkQm94
LCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAK
LSAgICAvLyBGb3Igbm9uLXJlcGxhY2VkIGJsb2NrcyBpZiB0aGUgaW5saW5lIHNpemUgaXMgbWlu
fG1heC1jb250ZW50IG9yIGEgZGVmaW5pdGUKLSAgICAvLyBzaXplIHRoZSBtaW58bWF4LWNvbnRl
bnQgY29udHJpYnV0aW9uIGlzIHRoYXQgc2l6ZSBwbHVzIGJvcmRlciwgcGFkZGluZyBhbmQKLSAg
ICAvLyBtYXJnaW4gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zaXppbmcvI2Jsb2NrLWlu
dHJpbnNpYwotICAgIGlmICghaXM8UmVuZGVyQmxvY2s+KGNoaWxkQm94KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8mIGNvbXB1dGVkSW5saW5lU2l6ZSA9IGNoaWxkQm94LnN0eWxlKCkubG9n
aWNhbFdpZHRoKCk7Ci0gICAgaWYgKGNvbXB1dGVkSW5saW5lU2l6ZS5pc01heENvbnRlbnQoKSkK
LSAgICAgICAgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoOwotICAgIGVsc2UgaWYgKGNvbXB1dGVkSW5saW5lU2l6ZS5pc01pbkNvbnRlbnQoKSkKLSAg
ICAgICAgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
OworICAgIGF1dG8gbWluTG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byBt
YXhMb2dpY2FsV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKKworICAgIGF1dG8gY2hpbGRJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxMYXlvdXRV
bml0LCBMYXlvdXRVbml0PiB7IGNoaWxkQm94Lm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBj
aGlsZEJveC5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSB9OworICAgIH07CisgICAgLy8gV2hl
biB0aGlzIGlzIGEgZmxleCBjb250YWluZXIsIHNldCB1cCB0aGUgY3Jvc3MtYXhpcyBzaXplIG92
ZXJyaWRlIG9uIHRoZQorICAgIC8vIGNoaWxkIHNvIHRoYXQgaXRzIHByZWZlcnJlZC13aWR0aHMg
Y29tcHV0YXRpb24gc2VlcyB0aGUgZmxleCBsaW5lJ3MgY3Jvc3MKKyAgICAvLyBzaXplIGluIHNj
b3BlLiBQcmV2aW91c2x5IHRoaXMgd2FzIGEgdmlydHVhbCBob29rIHRoZSBmbGV4IGNvbnRhaW5l
cgorICAgIC8vIG92ZXJyb2RlOyBmb2xkZWQgaW5saW5lIHNpbmNlIGZsZXggaXMgdGhlIG9ubHkg
Y29udGFpbmVyIHRoYXQgbmVlZHMgaXQuCisgICAgaWYgKENoZWNrZWRQdHIgZmxleEJveCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4odGhpcykpIHsKKyAgICAgICAgYXV0byBm
bGV4U2NvcGUgPSBSZW5kZXJGbGV4aWJsZUJveDo6U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JG
bGV4SXRlbSB7ICpmbGV4Qm94LCBjaGlsZEJveCwgUmVuZGVyRmxleGlibGVCb3g6OlNjb3BlZENy
b3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OkludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHM6Olll
cyB9OworICAgICAgICBzdGQ6OnRpZShtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCkg
PSBjaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3Rk
Ojp0aWUobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpID0gY2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKCk7CisKKyAgICBhdXRvIGFwcGx5QmxvY2tJbnRyaW5zaWNLZXl3b3JkID0g
WyZdIHsKKyAgICAgICAgLy8gRm9yIG5vbi1yZXBsYWNlZCBibG9ja3MgaWYgdGhlIGlubGluZSBz
aXplIGlzIG1pbnxtYXgtY29udGVudCBvciBhIGRlZmluaXRlCisgICAgICAgIC8vIHNpemUgdGhl
IG1pbnxtYXgtY29udGVudCBjb250cmlidXRpb24gaXMgdGhhdCBzaXplIHBsdXMgYm9yZGVyLCBw
YWRkaW5nIGFuZAorICAgICAgICAvLyBtYXJnaW4gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1zaXppbmcvI2Jsb2NrLWludHJpbnNpYworICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrPihj
aGlsZEJveCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8mIGNvbXB1dGVkSW5s
aW5lU2l6ZSA9IGNoaWxkQm94LnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CisgICAgICAgIGlmIChj
b21wdXRlZElubGluZVNpemUuaXNNYXhDb250ZW50KCkpIHsKKyAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCA9IG1heExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoY29tcHV0ZWRJbmxpbmVTaXplLmlzTWluQ29udGVudCgpKQorICAgICAg
ICAgICAgbWF4TG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOworICAgIH07CisgICAgYXBw
bHlCbG9ja0ludHJpbnNpY0tleXdvcmQoKTsKKworICAgIHJldHVybiB7IG1pbkxvZ2ljYWxXaWR0
aCwgbWF4TG9naWNhbFdpZHRoIH07CiB9CiAKIGJvb2wgUmVuZGVyQmxvY2s6Omhhc0xpbmVJZkVt
cHR5KCkgY29uc3QKQEAgLTMyOTEsNyArMzI5Nyw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBM
YXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHNGb3JG
CiAKICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aDsKICAgICBMYXlvdXRVbml0IG1heExv
Z2ljYWxXaWR0aDsKLSAgICBjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCpsZWdl
bmQsIG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKKyAgICBzdGQ6OnRpZShtaW5M
b2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCkgPSBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKCpsZWdlbmQpOwogCiAgICAgLy8gVGhlc2UgYXJlIGdvaW5nIHRvIGJlIGFkZGVk
IGluIGxhdGVyLCBzbyB3ZSBzdWJ0cmFjdCB0aGVtIG91dCB0byByZWZsZWN0IHRoZQogICAgIC8v
IGZhY3QgdGhhdCB0aGUgbGVnZW5kIGlzIG91dHNpZGUgdGhlIHNjcm9sbGFibGUgYXJlYS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDMwYzQ1M2Q5MTNiLi5hYjY4
MDZmZTc3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zMjQs
OSArMzI0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBwcmVwYXJlUGFnaW5hdGlvbkJlZm9y
ZUJsb2NrTGF5b3V0KFJlbGF5b3V0Q2hpbGRyZW4mKTsKIAotICAgIHZvaWQgY29tcHV0ZUNoaWxk
UHJlZmVycmVkTG9naWNhbFdpZHRocyhSZW5kZXJCb3gmLCBMYXlvdXRVbml0JiBtaW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgY29u
c3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRo
cyhSZW5kZXJCb3gmLCBMYXlvdXRVbml0JiBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPExh
eW91dFVuaXQsIExheW91dFVuaXQ+IGNvbXB1dGVDaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMo
UmVuZGVyQm94JikgY29uc3Q7CiAKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhJiBlbnN1cmVCbG9j
a1JhcmVEYXRhKCkgTElGRVRJTUVfQk9VTkQ7CiAgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSogTk9E
RUxFVEUgYmxvY2tSYXJlRGF0YSgpIGNvbnN0IExJRkVUSU1FX0JPVU5EOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0MjUyZGIzNDYzOTguLmQ1
NDE0YzlmN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTUwMDYsOSArNTAwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
SW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07CiAgICAgICAgIGlmIChpc0ludGVybGlu
ZWFyVHlwZUFubm90YXRpb24oKSkgewotICAgICAgICAgICAgYXV0byBhbm5vdGF0aW9uTWluaW11
bUludHJpbnNpY1dpZHRoID0gTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRvIGFubm90
YXRpb25NYXhpbXVtSW50cmluc2ljV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAg
IGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpjaGlsZCksIGFubm90YXRpb25NaW5pbXVtSW50cmluc2ljV2lkdGgsIGFubm90YXRpb25NYXhp
bXVtSW50cmluc2ljV2lkdGgpOworICAgICAgICAgICAgYXV0byBbYW5ub3RhdGlvbk1pbmltdW1J
bnRyaW5zaWNXaWR0aCwgYW5ub3RhdGlvbk1heGltdW1JbnRyaW5zaWNXaWR0aF0gPSBjb21wdXRl
Q2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQp
KTsKIAogICAgICAgICAgICAgaWYgKCFydWJ5QmFzZUNvbnRlbnRTdGFjay5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBBbm5vdGF0aW9uIGJveCBpcyBhbHdheXMgcHJlY2VkZWQgYnkg
dGhlIGFzc29jaWF0ZWQgcnVieSBiYXNlLgpAQCAtNTA1Miw5ICs1MDUwLDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVu
aXQmIG1pbkxvZ2ljYWwKIAogICAgICAgICAgICAgcmVzZXRMaW5lRm9yRm9yY2VkTGluZUJyZWFr
KCk7CiAKLSAgICAgICAgICAgIGF1dG8gYmxvY2tNaW5XaWR0aCA9IExheW91dFVuaXQgeyB9Owot
ICAgICAgICAgICAgYXV0byBibG9jTWF4V2lkdGggPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAg
ICAgIGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQm94
PigqY2hpbGQpLCBibG9ja01pbldpZHRoLCBibG9jTWF4V2lkdGgpOworICAgICAgICAgICAgYXV0
byBbYmxvY2tNaW5XaWR0aCwgYmxvY01heFdpZHRoXSA9IGNvbXB1dGVDaGlsZEludHJpbnNpY0xv
Z2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQm94PigqY2hpbGQpKTsKIAogICAgICAgICAgICAg
YXV0byBtYXJnaW5zSW5JbmxpbmVEaXJlY3Rpb24gPSBtYXJnaW5JbnRyaW5zaWNMb2dpY2FsV2lk
dGhGb3JDaGlsZChkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZCkpOwogCkBAIC01MTYzLDcgKzUx
NTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgICAgICAgICAgICAgIGNoaWxkTWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoID0gZXh0ZW50OwogICAgICAgICAgICAgICAgIGNoaWxkTWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoID0gZXh0ZW50OwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY29tcHV0ZUNoaWxkUHJlZmVycmVkTG9naWNhbFdpZHRocygqYm94LCBjaGls
ZE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgY2hpbGRNYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgp
OworICAgICAgICAgICAgICAgIHN0ZDo6dGllKGNoaWxkTWluUHJlZmVycmVkTG9naWNhbFdpZHRo
LCBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgPSBjb21wdXRlQ2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKCpib3gpOwogICAgICAgICAgICAgY2hpbGRNaW4gKz0gY2hpbGRNaW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGguY2VpbFRvRmxvYXQoKTsKICAgICAgICAgICAgIGNoaWxkTWF4ICs9
IGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLmNlaWxUb0Zsb2F0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IGNmOTZiOTU5
YTg5MS4uNzJmYmU0MWMzMjdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE4MCw5ICsxODAsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxl
Qm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
V2lkdAogCiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luID0gbWFyZ2luSW50cmluc2ljTG9naWNh
bFdpZHRoRm9yQ2hpbGQoKmZsZXhJdGVtKTsKIAotICAgICAgICBMYXlvdXRVbml0IG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aDsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGg7Ci0gICAgICAgIGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKmZsZXhJ
dGVtLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGF1dG8gW21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoXSA9IGNvbXB1dGVDaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoKmZsZXhJdGVt
KTsKIAogICAgICAgICBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWFyZ2luOwogICAgICAg
ICBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWFyZ2luOwpAQCAtMjM1LDQzICsyMzMsMjkg
QEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMo
TGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKIC8vCiAvLyBJbiBhbnkgY2FzZSB0aGUgcHJldmlv
dXMgb3ZlcnJpZGluZyBzaXplcyBhcmUgcmVzdG9yZWQgb24gZGVzdHJ1Y3Rpb24gKGluIGNhc2Ug
b2YKIC8vIG5vdCBoYXZpbmcgYSBwcmV2aW91cyB2YWx1ZSBpdCdzIHNpbXBseSBjbGVhcmVkKS4K
LWNsYXNzIE92ZXJyaWRpbmdTaXplc1Njb3BlIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEF4
aXMgewotICAgICAgICBJbmxpbmUsCi0gICAgICAgIEJsb2NrLAotICAgICAgICBCb3RoCi0gICAg
fTsKLQotICAgIE92ZXJyaWRpbmdTaXplc1Njb3BlKFJlbmRlckJveCYgYm94LCBBeGlzIGF4aXMs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6ZSA9IHN0ZDo6bnVsbG9wdCkKLSAgICAgICAg
OiBtX2JveChib3gpCi0gICAgICAgICwgbV9heGlzKGF4aXMpCi0gICAgewotICAgICAgICBBU1NF
UlQoIXNpemUgfHwgKGF4aXMgIT0gQXhpczo6Qm90aCkpOwotICAgICAgICBpZiAoYXhpcyA9PSBB
eGlzOjpCb3RoIHx8IGF4aXMgPT0gQXhpczo6SW5saW5lKSB7Ci0gICAgICAgICAgICBtX3ByZXZp
b3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCA9IGJveC5vdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19T
SVpFKG1fYm94LCBXaWR0aCwgc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGF4aXMgPT0g
QXhpczo6Qm90aCB8fCBheGlzID09IEF4aXM6OkJsb2NrKSB7Ci0gICAgICAgICAgICBtX3ByZXZp
b3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQgPSBib3gub3ZlcnJpZGluZ0JvcmRl
ckJveExvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIFNFVF9PUl9DTEVBUl9PVkVSUklESU5H
X1NJWkUobV9ib3gsIEhlaWdodCwgc2l6ZSk7Ci0gICAgICAgIH0KK1JlbmRlckZsZXhpYmxlQm94
OjpPdmVycmlkaW5nU2l6ZXNTY29wZTo6T3ZlcnJpZGluZ1NpemVzU2NvcGUoUmVuZGVyQm94JiBi
b3gsIEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorICAgIDogbV9i
b3goYm94KQorICAgICwgbV9heGlzKGF4aXMpCit7CisgICAgQVNTRVJUKCFzaXplIHx8IChheGlz
ICE9IEF4aXM6OkJvdGgpKTsKKyAgICBpZiAoYXhpcyA9PSBBeGlzOjpCb3RoIHx8IGF4aXMgPT0g
QXhpczo6SW5saW5lKSB7CisgICAgICAgIG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94TG9n
aWNhbFdpZHRoID0gYm94Lm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKTsKKyAgICAg
ICAgU0VUX09SX0NMRUFSX09WRVJSSURJTkdfU0laRShtX2JveCwgV2lkdGgsIHNpemUpOwogICAg
IH0KLSAgICB+T3ZlcnJpZGluZ1NpemVzU2NvcGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYXhp
cyA9PSBBeGlzOjpJbmxpbmUgfHwgbV9heGlzID09IEF4aXM6OkJvdGgpCi0gICAgICAgICAgICBT
RVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0aCwgbV9wcmV2aW91c092ZXJy
aWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgpOwotCi0gICAgICAgIGlmIChtX2F4aXMgPT0gQXhp
czo6QmxvY2sgfHwgbV9heGlzID09IEF4aXM6OkJvdGgpCi0gICAgICAgICAgICBTRVRfT1JfQ0xF
QVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBIZWlnaHQsIG1fcHJldmlvdXNPdmVycmlkaW5nQm9y
ZGVyQm94TG9naWNhbEhlaWdodCk7CisgICAgaWYgKGF4aXMgPT0gQXhpczo6Qm90aCB8fCBheGlz
ID09IEF4aXM6OkJsb2NrKSB7CisgICAgICAgIG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94
TG9naWNhbEhlaWdodCA9IGJveC5vdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbEhlaWdodCgpOwor
ICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBIZWlnaHQsIHNpemUp
OwogICAgIH0KK30KIAotcHJpdmF0ZToKLSAgICBSZW5kZXJCb3gmIG1fYm94OwotICAgIEF4aXMg
bV9heGlzOwotICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9wcmV2aW91c092ZXJyaWRp
bmdCb3JkZXJCb3hMb2dpY2FsV2lkdGg7Ci0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBt
X3ByZXZpb3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQ7Ci19OworUmVuZGVyRmxl
eGlibGVCb3g6Ok92ZXJyaWRpbmdTaXplc1Njb3BlOjp+T3ZlcnJpZGluZ1NpemVzU2NvcGUoKQor
eworICAgIGlmIChtX2F4aXMgPT0gQXhpczo6SW5saW5lIHx8IG1fYXhpcyA9PSBBeGlzOjpCb3Ro
KQorICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0aCwgbV9w
cmV2aW91c092ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgpOworCisgICAgaWYgKG1fYXhp
cyA9PSBBeGlzOjpCbG9jayB8fCBtX2F4aXMgPT0gQXhpczo6Qm90aCkKKyAgICAgICAgU0VUX09S
X0NMRUFSX09WRVJSSURJTkdfU0laRShtX2JveCwgSGVpZ2h0LCBtX3ByZXZpb3VzT3ZlcnJpZGlu
Z0JvcmRlckJveExvZ2ljYWxIZWlnaHQpOworfQogCiAvLyBTZXRzIG1faW5GbGV4SXRlbUludHJp
bnNpY1dpZHRoQ29tcHV0YXRpb24gYW5kIGFwcGxpZXMgdGhlIGNvbnRhaW5lcidzIGRlZmluaXRl
CiAvLyBjcm9zcyBzaXplIGFzIHRoZSBmbGV4IGl0ZW0ncyBjcm9zcy1heGlzIG92ZXJyaWRlIHdo
ZW4gYXBwbGljYWJsZS4gQ2xlYXJzIGFsbApAQCAtMjgwLDQ1ICsyNjQsMzIgQEAgcHJpdmF0ZToK
IC8vIFdoZW4gc2V0TmVlZHNQcmVmZXJyZWRXaWR0aHNVcGRhdGUgaXMgdHJ1ZSwgdGhlIGZsZXgg
aXRlbSdzIHByZWZlcnJlZCB3aWR0aHMgYXJlCiAvLyBpbnZhbGlkYXRlZCBzbyB0aGF0IG1pbi9t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSB3aWxsIHJlY29tcHV0ZSB0aGVtIHdpdGggdGhlCiAv
LyBjcm9zcy1heGlzIG92ZXJyaWRlIGluIHBsYWNlLiBUaGUgZGVzdHJ1Y3RvciBBU1NFUlRzIHRo
ZSBkaXJ0eSBmbGFnIHdhcyBjb25zdW1lZC4KLWVudW0gY2xhc3MgSW52YWxpZGF0ZVByZWZlcnJl
ZFdpZHRocyA6IGJvb2wgeyBObywgWWVzIH07Ci0KLWNsYXNzIFNjb3BlZENyb3NzQXhpc092ZXJy
aWRlRm9yRmxleEl0ZW0gewotcHVibGljOgotICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9y
RmxleEl0ZW0oY29uc3QgUmVuZGVyRmxleGlibGVCb3gmIGZsZXhCb3gsIFJlbmRlckJveCYgZmxl
eEl0ZW0sIEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgaW52YWxpZGF0ZVByZWZlcnJlZFdpZHRo
cykKLSAgICAgICAgOiBtX2ludHJpbnNpY1dpZHRoQ29tcHV0YXRpb24oZmxleEJveC5tX2luRmxl
eEl0ZW1JbnRyaW5zaWNXaWR0aENvbXB1dGF0aW9uLCB0cnVlKQorUmVuZGVyRmxleGlibGVCb3g6
OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OlNjb3BlZENyb3NzQXhpc092ZXJy
aWRlRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyRmxleGlibGVCb3gmIGZsZXhCb3gsIFJlbmRlckJv
eCYgZmxleEl0ZW0sIEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgaW52YWxpZGF0ZVByZWZlcnJl
ZFdpZHRocykKKyAgICA6IG1faW50cmluc2ljV2lkdGhDb21wdXRhdGlvbihmbGV4Qm94Lm1faW5G
bGV4SXRlbUludHJpbnNpY1dpZHRoQ29tcHV0YXRpb24sIHRydWUpCiAjaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAgICAgLCBtX2ZsZXhJdGVtKGZsZXhJdGVtKQorICAgICwgbV9mbGV4SXRlbShmbGV4
SXRlbSkKICNlbmRpZgotICAgIHsKLSAgICAgICAgaWYgKGZsZXhCb3guaGFzRGVmaW5pdGVDcm9z
c1NpemVGb3JGbGV4SXRlbShmbGV4SXRlbSkpIHsKLSAgICAgICAgICAgIGF1dG8gYXhpcyA9IGZs
ZXhCb3gubWFpbkF4aXNJc0ZsZXhJdGVtSW5saW5lQXhpcyhmbGV4SXRlbSkgPyBPdmVycmlkaW5n
U2l6ZXNTY29wZTo6QXhpczo6QmxvY2sgOiBPdmVycmlkaW5nU2l6ZXNTY29wZTo6QXhpczo6SW5s
aW5lOwotICAgICAgICAgICAgbV9vdmVycmlkaW5nU2NvcGUuZW1wbGFjZShmbGV4SXRlbSwgYXhp
cywgZmxleEJveC5pbm5lckNyb3NzU2l6ZUZvckZsZXhJdGVtKGZsZXhJdGVtKSk7Ci0gICAgICAg
ICAgICBpZiAoaW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyA9PSBJbnZhbGlkYXRlUHJlZmVycmVk
V2lkdGhzOjpZZXMpIHsKLSAgICAgICAgICAgICAgICBmbGV4SXRlbS5zZXROZWVkc1ByZWZlcnJl
ZFdpZHRoc1VwZGF0ZShNYXJraW5nQmVoYXZpb3I6Ok1hcmtPbmx5VGhpcyk7Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAgICAgICAgICAgICBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzID0gdHJ1
ZTsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
b3ZlcnJpZGluZ1Njb3BlLmVtcGxhY2UoZmxleEl0ZW0sIE92ZXJyaWRpbmdTaXplc1Njb3BlOjpB
eGlzOjpCb3RoKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4
SXRlbSgpCi0gICAgeworeworICAgIGlmIChmbGV4Qm94Lmhhc0RlZmluaXRlQ3Jvc3NTaXplRm9y
RmxleEl0ZW0oZmxleEl0ZW0pKSB7CisgICAgICAgIGF1dG8gYXhpcyA9IGZsZXhCb3gubWFpbkF4
aXNJc0ZsZXhJdGVtSW5saW5lQXhpcyhmbGV4SXRlbSkgPyBPdmVycmlkaW5nU2l6ZXNTY29wZTo6
QXhpczo6QmxvY2sgOiBPdmVycmlkaW5nU2l6ZXNTY29wZTo6QXhpczo6SW5saW5lOworICAgICAg
ICBtX292ZXJyaWRpbmdTY29wZS5lbXBsYWNlKGZsZXhJdGVtLCBheGlzLCBmbGV4Qm94LmlubmVy
Q3Jvc3NTaXplRm9yRmxleEl0ZW0oZmxleEl0ZW0pKTsKKyAgICAgICAgaWYgKGludmFsaWRhdGVQ
cmVmZXJyZWRXaWR0aHMgPT0gSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6WWVzKSB7CisgICAg
ICAgICAgICBmbGV4SXRlbS5zZXROZWVkc1ByZWZlcnJlZFdpZHRoc1VwZGF0ZShNYXJraW5nQmVo
YXZpb3I6Ok1hcmtPbmx5VGhpcyk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgaWYgKG1f
ZGlkRGlydHlQcmVmZXJyZWRXaWR0aHMpCi0gICAgICAgICAgICBBU1NFUlQoIW1fZmxleEl0ZW0u
bmVlZHNQcmVmZXJyZWRMb2dpY2FsV2lkdGhzVXBkYXRlKCkpOworICAgICAgICAgICAgbV9kaWRE
aXJ0eVByZWZlcnJlZFdpZHRocyA9IHRydWU7CiAjZW5kaWYKLSAgICB9CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9vdmVycmlkaW5nU2NvcGUuZW1wbGFjZShmbGV4SXRlbSwgT3Zl
cnJpZGluZ1NpemVzU2NvcGU6OkF4aXM6OkJvdGgpOworfQogCi1wcml2YXRlOgotICAgIFNldEZv
clNjb3BlPGJvb2w+IG1faW50cmluc2ljV2lkdGhDb21wdXRhdGlvbjsKLSAgICBzdGQ6Om9wdGlv
bmFsPE92ZXJyaWRpbmdTaXplc1Njb3BlPiBtX292ZXJyaWRpbmdTY29wZTsKK1JlbmRlckZsZXhp
YmxlQm94OjpTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtOjp+U2NvcGVkQ3Jvc3NB
eGlzT3ZlcnJpZGVGb3JGbGV4SXRlbSgpCit7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBSZW5k
ZXJCb3gmIG1fZmxleEl0ZW07Ci0gICAgYm9vbCBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzIHsg
ZmFsc2UgfTsKKyAgICBpZiAobV9kaWREaXJ0eVByZWZlcnJlZFdpZHRocykKKyAgICAgICAgQVNT
RVJUKCFtX2ZsZXhJdGVtLm5lZWRzUHJlZmVycmVkTG9naWNhbFdpZHRoc1VwZGF0ZSgpKTsKICNl
bmRpZgotfTsKK30KIAogc3RhdGljIHZvaWQgdXBkYXRlRmxleEl0ZW1EaXJ0eUJpdHNCZWZvcmVM
YXlvdXQoYm9vbCByZWxheW91dEZsZXhJdGVtLCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogewpAQCAt
MzMxLDE2ICszMDIsNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGbGV4SXRlbURpcnR5Qml0c0JlZm9y
ZUxheW91dChib29sIHJlbGF5b3V0RmxleEl0ZW0sIFJlbmRlckJveAogICAgICAgICBmbGV4SXRl
bS5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtpbmdCZWhhdmlvcjo6TWFya09ubHlUaGlzKTsKIH0K
IAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdp
ZHRocyhSZW5kZXJCb3gmIGZsZXhCb3hDaGlsZCwgTGF5b3V0VW5pdCYgbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpIGNvbnN0Ci17
Ci0gICAgLy8gQ2hpbGRyZW4gZXhjbHVkZWQgZnJvbSBub3JtYWwgbGF5b3V0IGFyZSBoYW5kbGVk
IGhlcmUgdG9vIChlLmcuIGxlZ2VuZCB3aGVuIGZpZWxkc2V0IGlzIHNldCB0byBmbGV4KS4KLSAg
ICBBU1NFUlQoZmxleEJveENoaWxkLmlzRmxleEl0ZW0oKSB8fCAoZmxleEJveENoaWxkLnBhcmVu
dCgpID09IHRoaXMgJiYgZmxleEJveENoaWxkLmlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkp
KTsKLQotICAgIC8vIENvbXB1dGUgcHJlZmVycmVkIHdpZHRocyBvZiB0aGUgY2hpbGQgd2l0aCB0
aGUgY29ycmVjdCBjcm9zcy1heGlzIHNpemUuCi0gICAgU2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVG
b3JGbGV4SXRlbSBzY29wZWRDcm9zc0F4aXNPdmVycmlkZSgqdGhpcywgZmxleEJveENoaWxkLCBJ
bnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpZZXMpOwotICAgIFJlbmRlckJsb2NrOjpjb21wdXRl
Q2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGZsZXhCb3hDaGlsZCwgbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwotfQotCiBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiB7CiAgICAgaWYgKChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc0ZsZXhJdGVtKCkpIHx8ICFt
X251bWJlck9mRmxleEl0ZW1zT25GaXJzdExpbmUgfHwgc2hvdWxkQXBwbHlMYXlvdXRDb250YWlu
bWVudCgpKQpAQCAtMTU4OCw3ICsxNTQ5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJv
eDo6ZmxleEJhc2VTaXplRm9yRmxleEl0ZW0oUmVuZGVyQm94JiBmbGV4SXRlbSkKIAogICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gYWRkIHNjcm9sbGJhckxvZ2ljYWxXaWR0aCBoZXJlIGJlY2F1c2Ug
dGhlIHByZWZlcnJlZAogICAgIC8vIHdpZHRoIGluY2x1ZGVzIHRoZSBzY3JvbGxiYXIsIGV2ZW4g
Zm9yIG92ZXJmbG93OiBhdXRvLgotICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0
ZW0gY3Jvc3NTaXplU2NvcGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVycmVkV2lk
dGhzOjpZZXMpOworICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0gY3Jvc3NT
aXplU2NvcGUoKnRoaXMsIGZsZXhJdGVtLCBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJ
dGVtOjpJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpZZXMpOwogICAgIGF1dG8gbWFpbkF4aXNF
eHRlbnQgPSBmbGV4SXRlbS5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG1h
aW5BeGlzQm9yZGVyQW5kUGFkZGluZyA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGZsZXhJdGVtLmhv
cml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgOiBmbGV4SXRlbS52ZXJ0aWNhbEJvcmRl
ckFuZFBhZGRpbmdFeHRlbnQoKTsKICAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWluQXhp
c0JvcmRlckFuZFBhZGRpbmc7CkBAIC0xOTMyLDcgKzE4OTMsNyBAQCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlVXNlZE1heE1haW5TaXplKFJlbmRl
ckJveCYgZgogICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckZsZXhJdGVtKGZsZXhJdGVtLCBtYXgpOwogICAgIGlmIChtYXgu
aXNJbnRyaW5zaWNPclN0cmV0Y2goKSkgewotICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVycmlk
ZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwgSW52
YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6Tm8pOworICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVy
cmlkZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwg
U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbTo6SW52YWxpZGF0ZVByZWZlcnJlZFdp
ZHRoczo6Tm8pOwogICAgICAgICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yRmxleEl0
ZW0oZmxleEl0ZW0sIG1heCk7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBAIC0xOTQ4LDcgKzE5
MDksNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlVXNlZE5vbkF1dG9N
aW5NYWluU2l6ZShSZW5kZXJCb3gmIGZsZXhJdGVtLAogICAgIC8vIHRob3NlIGdvIHRocm91Z2gg
Y29tcHV0ZUNvbnRlbnRCYXNlZE1pbk1haW5TaXplIGluc3RlYWQuCiAgICAgYXV0byBtaW5FeHRl
bnQgPSBbJl0gewogICAgICAgICBpZiAobWluLmlzSW50cmluc2ljT3JTdHJldGNoKCkpIHsKLSAg
ICAgICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0gc2NvcGVkQ3Jvc3NB
eGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpO
byk7CisgICAgICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNjb3Bl
ZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwgU2NvcGVkQ3Jvc3NBeGlzT3ZlcnJp
ZGVGb3JGbGV4SXRlbTo6SW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6Tm8pOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckZsZXhJdGVtKGZsZXhJdGVtLCBtaW4p
LnZhbHVlX29yKDBfbHUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjb21wdXRlTWFpbkF4
aXNFeHRlbnRGb3JGbGV4SXRlbShmbGV4SXRlbSwgbWluKS52YWx1ZV9vcigwX2x1KTsKQEAgLTE5
NTYsNyArMTkxNyw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVVc2Vk
Tm9uQXV0b01pbk1haW5TaXplKFJlbmRlckJveCYgZmxleEl0ZW0sCiAKICAgICAvLyBXZSBtdXN0
IG5ldmVyIHJldHVybiBhIG1pbiBzaXplIHNtYWxsZXIgdGhhbiB0aGUgbWluIHByZWZlcnJlZCBz
aXplIGZvciB0YWJsZXMuCiAgICAgaWYgKGZsZXhJdGVtLmlzUmVuZGVyVGFibGUoKSAmJiBtYWlu
QXhpc0lzRmxleEl0ZW1JbmxpbmVBeGlzKGZsZXhJdGVtKSkgewotICAgICAgICBTY29wZWRDcm9z
c0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBm
bGV4SXRlbSwgSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6WWVzKTsKKyAgICAgICAgU2NvcGVk
Q3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbSBzY29wZWRDcm9zc0F4aXNPdmVycmlkZSgqdGhp
cywgZmxleEl0ZW0sIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OkludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHM6Olllcyk7CiAgICAgICAgIG1pbkV4dGVudCA9IHN0ZDo6bWF4KG1p
bkV4dGVudCwgZmxleEl0ZW0ubWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwogICAgIH0KICAg
ICByZXR1cm4gbWluRXh0ZW50OwpAQCAtMTk3NCw3ICsxOTM1LDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNvbnRlbnRCYXNlZE1pbk1haW5TaXplKFJlbmRlckJveCYg
ZmxleEl0ZW0KICAgICAgICAgY29udGVudFNpemUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0
UmF0aW9Vc2luZyhmbGV4SXRlbSwgZmxleEl0ZW1Dcm9zc1NpemVMZW5ndGgpOwogCiAgICAgaWYg
KCFjYW5Db21wdXRlU2l6ZVRocm91Z2hBc3BlY3RSYXRpbyB8fCAhZmxleEl0ZW0uaXNSZW5kZXJS
ZXBsYWNlZCgpKSB7Ci0gICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0g
c2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzOjpObyk7CisgICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0
ZW0gc2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBTY29wZWRDcm9zc0F4
aXNPdmVycmlkZUZvckZsZXhJdGVtOjpJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpObyk7CiAg
ICAgICAgIGF1dG8gbWluQ29udGVudFNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JGbGV4
SXRlbShmbGV4SXRlbSwgU3R5bGU6Ok1pbmltdW1TaXplIHsgQ1NTOjpLZXl3b3JkOjpNaW5Db250
ZW50IHsgfSB9KS52YWx1ZV9vcigwX2x1KTsKICAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1h
eChjb250ZW50U2l6ZSwgbWluQ29udGVudFNpemUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMWZkM2UwZGEyYWE4Li5mZjE5NGM2
MTVmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CYXNlbGluZUFsaWdubWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JkZXJJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyQmxvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE3LDEyICsxMTgs
MzkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsV2lkdGhGb3JBc3BlY3RS
YXRpb0Nyb3NzU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RyZXRjaGVkRmxleEl0ZW1XaXRo
QXNwZWN0UmF0aW8oKSBjb25zdDsKIAorICAgIGNsYXNzIE92ZXJyaWRpbmdTaXplc1Njb3BlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gY2xhc3MgQXhpcyB7IElubGluZSwgQmxvY2ssIEJv
dGggfTsKKworICAgICAgICBPdmVycmlkaW5nU2l6ZXNTY29wZShSZW5kZXJCb3gmLCBBeGlzLCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUgPSBzdGQ6Om51bGxvcHQpOworICAgICAgICB+
T3ZlcnJpZGluZ1NpemVzU2NvcGUoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlbmRlckJv
eCYgbV9ib3g7CisgICAgICAgIEF4aXMgbV9heGlzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbEhlaWdodDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkQ3Jvc3NBeGlzT3Zl
cnJpZGVGb3JGbGV4SXRlbSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIGNsYXNzIEludmFs
aWRhdGVQcmVmZXJyZWRXaWR0aHMgOiBib29sIHsgTm8sIFllcyB9OworICAgICAgICBTY29wZWRD
cm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckZsZXhpYmxlQm94JiwgUmVu
ZGVyQm94JiBmbGV4SXRlbSwgSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyk7CisgICAgICAgIH5T
Y29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtKCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBTZXRGb3JTY29wZTxib29sPiBtX2ludHJpbnNpY1dpZHRoQ29tcHV0YXRpb247CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGluZ1NpemVzU2NvcGU+IG1fb3ZlcnJpZGluZ1Njb3Bl
OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIFJlbmRlckJveCYgbV9mbGV4SXRlbTsKKyAg
ICAgICAgYm9vbCBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzIHsgZmFsc2UgfTsKKyNlbmRpZgor
ICAgIH07CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdp
ZHRoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgU2NvcGVk
Q3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbTsKLQogICAgIHN0cnVjdCBGbGV4QmFzZUFuZEh5
cG90aGV0aWNhbE1haW5TaXplIHsKICAgICAgICAgTGF5b3V0VW5pdCBmbGV4QmFzZUNvbnRlbnRT
aXplOwogICAgICAgICBMYXlvdXRVbml0IGh5cG90aGV0aWNhbE1haW5Db250ZW50U2l6ZTsKQEAg
LTIxMiw3ICsyNDAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY3Jvc3NBeGlzSXNMb2dpY2FsV2lk
dGgoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyRmxleEl0ZW1PdmVycmlkaW5nU2l6ZXMoKTsKICAg
ICBMYXlvdXRVbml0IGlubmVyQ3Jvc3NTaXplRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94JiBm
bGV4SXRlbSkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKFJlbmRlckJveCYsIExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYg
bWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBT
aXplVHlwZT4gTGF5b3V0VW5pdCBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhj
b25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtLCBjb25zdCBTaXplVHlwZSYgY3Jvc3NTaXplTGVuZ3Ro
KSBjb25zdDsKICAgICB2b2lkIE5PREVMRVRFIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yRmxleEl0
ZW0oUmVuZGVyQm94JiBmbGV4SXRlbSwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICBMYXlvdXRV
bml0IGZsZXhCYXNlU2l6ZUZvckZsZXhJdGVtKFJlbmRlckJveCYgZmxleEl0ZW0pOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>479846</attachid>
            <date>2026-05-27 14:00:17 -0700</date>
            <delta_ts>2026-05-28 05:12:32 -0700</delta_ts>
            <desc>[fast-cq]Patch</desc>
            <filename>bug-315662-20260527140016.patch</filename>
            <type>text/plain</type>
            <size>26156</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">RnJvbSBkMmIwZjI4NzdjMzU5MjJiM2VkMmI2MGU4NmIzZTgzNTdlODIyMjI4IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBBbGFuIEJhcmFkbGF5IDx6YWxhbkBhcHBsZS5jb20+CkRhdGU6
IFdlZCwgMjcgTWF5IDIwMjYgMDg6MTY6MzcgLTA3MDAKU3ViamVjdDogW1BBVENIXSBbY2xlYW51
cF0gRm9sZCBjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzIGFuZCB0aGUKIHZpcnR1
YWwgY29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyBpbnRvIG9uZSBub24tdmlydHVh
bCBmdW5jdGlvbgogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMxNTY2
MgoKUmV2aWV3ZWQgYnkgQW50dGkgS29pdmlzdG8uCgpjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dp
Y2FsV2lkdGhzIGFuZCB0aGUgdmlydHVhbCBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzCnNhdCBuZXh0IHRvIGVhY2ggb3RoZXIgb24gUmVuZGVyQmxvY2ssIHdpdGggb3ZlcmxhcHBp
bmcgbmFtZXMgYW5kIG92ZXJsYXBwaW5nIHB1cnBvc2VzOiBib3RoCiJjb21wdXRlIiB0aGUgY2hp
bGQncyAibG9naWNhbCB3aWR0aHMiLCBhbmQgYm90aCBhcmUgcmVhbGx5IGNvbXB1dGluZyBpbnRy
aW5zaWMgKG1pbi1jb250ZW50IC8gbWF4LWNvbnRlbnQpIHNpemVzLCBub3QgdGhlIHNwZWMncyBw
cmVmZXJyZWQgc2l6ZXMuCkZyb20gb3V0c2lkZSwgeW91IGNvdWxkIG5vdCB0ZWxsIHdoaWNoIG9u
ZSB0byBjYWxsLiBUaGUgdHJ1dGggd2FzIHRoYXQgdGhleSB3ZXJlIG5vdCBwZWVycyBidXQgdHdv
IGxheWVycyBvZiB0aGUgc2FtZSBjb21wdXRhdGlvbjoKdGhlIG5vbi12aXJ0dWFsIGZ1bmN0aW9u
IGhhbmRsZWQgdGhlIHNwZWMgYWRqdXN0bWVudHMgKG9ydGhvZ29uYWwgZmxvdyArIHRoZSBleHBs
aWNpdCBtaW4tY29udGVudCAvIG1heC1jb250ZW50IGtleXdvcmQgY29sbGFwc2UgZnJvbQpjc3Mt
c2l6aW5nLTMgI2Jsb2NrLWludHJpbnNpYyksIGFuZCBjYWxsZWQgdGhlIHZpcnR1YWwgZnVuY3Rp
b24gYXMgYSBzdWItc3RlcCB0byByZWFkIHRoZSBjaGlsZCdzIHByZWZlcnJlZCB3aWR0aHMuClRo
ZSBvbmx5IG92ZXJyaWRlIHdhcyBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNoaWxkSW50cmlu
c2ljTG9naWNhbFdpZHRocywgd2hvc2UgZW50aXJlIGpvYiB3YXMgdG8gd3JhcCB0aGUgcmVhZCBp
biBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNvIHRoZQpjaGlsZCBzYXcgdGhl
IGZsZXggbGluZSdzIGNyb3NzIHNpemUgaW4gc2NvcGUuIE9uZSBsYXllcmVkIGNvbmNlcHQsIHR3
byBmdW5jdGlvbnMsIGFuZCB0aGUgbmFtZXMgZGlkIG5vdCBnaXZlIHRoZSByZWFkZXIgYSB3YXkg
dG8ga2VlcCB0aGVtIGFwYXJ0LgoKRm9sZGVkIHRoZSB2aXJ0dWFsIGludG8gdGhlIHJlbmFtZWQg
Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRocyAocmV0dXJuaW5nIHN0ZDo6cGFpciwg
cmVwbGFjaW5nCmJvb2wgKyBvdXQtcGFyYW1zIGZvciBzeW1tZXRyeSB3aXRoIGludHJpbnNpY0xv
Z2ljYWxNYXJnaW5TdGFydEFuZEVuZCBhbmQgdGhlIHJlY2VudGx5LXJlbmFtZWQgY29tcHV0ZUJs
b2NrSW50cmluc2ljTG9naWNhbFdpZHRocwphbmQgY29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0
aHNGb3JGaWVsZHNldExlZ2VuZCkuCgpObyBiZWhhdmlvciBjaGFuZ2UuCgoqIFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oOgoqIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJCbG9jay5jcHA6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUJsb2NrSW50cmlu
c2ljTG9naWNhbFdpZHRocyk6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUNoaWxkSW50
cmluc2ljTG9naWNhbFdpZHRocyk6CihXZWJDb3JlOjpSZW5kZXJCbG9jazo6Y29tcHV0ZUludHJp
bnNpY0xvZ2ljYWxXaWR0aHNGb3JGaWVsZHNldExlZ2VuZCk6CiogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHA6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckZsZXhpYmxlQm94Lmg6CiogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsZXhp
YmxlQm94LmNwcDoKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94OjpPdmVycmlkaW5nU2l6ZXNT
Y29wZTo6T3ZlcnJpZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6UmVuZGVyRmxleGlibGVCb3g6
Ok92ZXJyaWRpbmdTaXplc1Njb3BlOjp+T3ZlcnJpZGluZ1NpemVzU2NvcGUpOgooV2ViQ29yZTo6
UmVuZGVyRmxleGlibGVCb3g6OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OlNj
b3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0pOgooV2ViQ29yZTo6UmVuZGVyRmxleGli
bGVCb3g6OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06On5TY29wZWRDcm9zc0F4
aXNPdmVycmlkZUZvckZsZXhJdGVtKToKKFdlYkNvcmU6OlJlbmRlckZsZXhpYmxlQm94Ojpjb21w
dXRlSW50cmluc2ljTG9naWNhbFdpZHRocyk6Ci0tLQogU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlckJsb2NrLmNwcCAgICAgIHwgIDc0ICsrKysrLS0tLS0KIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCbG9jay5oICAgICAgICB8ICAgNCArLQogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgIHwgIDEwICstCiAuLi4vV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRmxleGlibGVCb3guY3BwICAgfCAxMjkgKysrKysrLS0tLS0tLS0tLS0tCiBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guaCAgfCAgMzMgKysrKy0KIDUg
ZmlsZXMgY2hhbmdlZCwgMTE5IGluc2VydGlvbnMoKyksIDEzMSBkZWxldGlvbnMoLSkKCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmNwcAppbmRleCA5MTA3MDIwOWRkNWUuLjEz
OGI0MjBkMDRmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2suY3BwCkBA
IC0yMzMzLDkgKzIzMzMsNyBAQCBzdGQ6OnBhaXI8TGF5b3V0VW5pdCwgTGF5b3V0VW5pdD4gUmVu
ZGVyQmxvY2s6OmNvbXB1dGVCbG9ja0ludHJpbnNpY0xvZ2ljYWxXaWR0aAogICAgICAgICBhdXRv
IFttYXJnaW5TdGFydCwgbWFyZ2luRW5kXSA9IGludHJpbnNpY0xvZ2ljYWxNYXJnaW5TdGFydEFu
ZEVuZChjaGlsZEJveCk7CiAgICAgICAgIGF1dG8gbWFyZ2luID0gbWFyZ2luU3RhcnQgKyBtYXJn
aW5FbmQ7CiAKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZE1pblByZWZlcnJlZExvZ2ljYWxXaWR0
aDsKLSAgICAgICAgTGF5b3V0VW5pdCBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aDsKLSAg
ICAgICAgY29tcHV0ZUNoaWxkUHJlZmVycmVkTG9naWNhbFdpZHRocyhjb25zdF9jYXN0PFJlbmRl
ckJveCY+KGNoaWxkQm94KSwgY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIGNoaWxkTWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoKTsKKyAgICAgICAgYXV0byBbY2hpbGRNaW5QcmVmZXJyZWRM
b2dpY2FsV2lkdGgsIGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoXSA9IGNvbXB1dGVDaGls
ZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoY29uc3RfY2FzdDxSZW5kZXJCb3gmPihjaGlsZEJveCkp
OwogCiAgICAgICAgIGF1dG8gbG9naWNhbFdpZHRoID0gY2hpbGRNaW5QcmVmZXJyZWRMb2dpY2Fs
V2lkdGggKyBtYXJnaW47CiAgICAgICAgIG1pbkxvZ2ljYWxXaWR0aCA9IHN0ZDo6bWF4KGxvZ2lj
YWxXaWR0aCwgbWluTG9naWNhbFdpZHRoKTsKQEAgLTIzODIsMjMgKzIzODAsMTQgQEAgc3RkOjpw
YWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJsb2NrOjpjb21wdXRlQmxvY2tJbnRy
aW5zaWNMb2dpY2FsV2lkdGgKICAgICByZXR1cm4geyBtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2lj
YWxXaWR0aCB9OwogfQogCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQ2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGQsIExheW91dFVuaXQmIG1pblByZWZlcnJlZExv
Z2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoKSBjb25zdAot
ewotICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkLm1pblByZWZlcnJlZExvZ2lj
YWxXaWR0aCgpOwotICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkLm1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCgpOwotfQotCi12b2lkIFJlbmRlckJsb2NrOjpjb21wdXRlQ2hpbGRQ
cmVmZXJyZWRMb2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGRCb3gsIExheW91dFVuaXQmIG1p
blByZWZlcnJlZExvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoKSBjb25zdAorc3RkOjpwYWlyPExheW91dFVuaXQsIExheW91dFVuaXQ+IFJlbmRlckJsb2Nr
Ojpjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKFJlbmRlckJveCYgY2hpbGRCb3gp
IGNvbnN0CiB7CiAgICAgaWYgKGNoaWxkQm94LmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkgIT0g
aXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSkgewogICAgICAgICAvLyBJZiB0aGUgY2hpbGQgaXMg
YW4gb3J0aG9nb25hbCBmbG93LCBjaGlsZCdzIGhlaWdodCBkZXRlcm1pbmVzIHRoZSB3aWR0aCwK
ICAgICAgICAgLy8gYnV0IHRoZSBoZWlnaHQgaXMgbm90IGF2YWlsYWJsZSB1bnRpbCBsYXlvdXQu
CiAgICAgICAgIC8vIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2Nzcy13cml0aW5nLW1vZGVzLTMv
I29ydGhvZ29uYWwtc2hyaW5rLXRvLWZpdAotICAgICAgICBpZiAoIWNoaWxkQm94Lm5lZWRzTGF5
b3V0KCkpIHsKLSAgICAgICAgICAgIG1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGNoaWxkQm94
LmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9
IGNoaWxkQm94LmxvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
fQorICAgICAgICBpZiAoIWNoaWxkQm94Lm5lZWRzTGF5b3V0KCkpCisgICAgICAgICAgICByZXR1
cm4geyBjaGlsZEJveC5sb2dpY2FsSGVpZ2h0KCksIGNoaWxkQm94LmxvZ2ljYWxIZWlnaHQoKSB9
OwogICAgICAgICBhdXRvJiBjaGlsZEJveFN0eWxlID0gY2hpbGRCb3guc3R5bGUoKTsKICAgICAg
ICAgaWYgKGF1dG8gZml4ZWRDaGlsZEJveFN0eWxlTG9naWNhbFdpZHRoID0gY2hpbGRCb3hTdHls
ZS5sb2dpY2FsV2lkdGgoKS50cnlGaXhlZCgpOyBjaGlsZEJveC5zaG91bGRDb21wdXRlTG9naWNh
bEhlaWdodEZyb21Bc3BlY3RSYXRpbygpICYmIGZpeGVkQ2hpbGRCb3hTdHlsZUxvZ2ljYWxXaWR0
aCkgewogICAgICAgICAgICAgYXV0byBhc3BlY3RSYXRpb1NpemUgPSBibG9ja1NpemVGcm9tQXNw
ZWN0UmF0aW8oCkBAIC0yNDEwLDI4ICsyMzk5LDQ1IEBAIHZvaWQgUmVuZGVyQmxvY2s6OmNvbXB1
dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoUmVuZGVyQm94JiBjaGlsZEJveCwgTGF5b3V0
CiAgICAgICAgICAgICAgICAgc3R5bGUoKS5hc3BlY3RSYXRpbygpLAogICAgICAgICAgICAgICAg
IGlzUmVuZGVyUmVwbGFjZWQoKQogICAgICAgICAgICAgKTsKLSAgICAgICAgICAgIG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IGFzcGVjdFJhdGlvU2l6ZTsKLSAgICAgICAgICAgIG1heFByZWZl
cnJlZExvZ2ljYWxXaWR0aCA9IGFzcGVjdFJhdGlvU2l6ZTsKLSAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIHJldHVybiB7IGFzcGVjdFJhdGlvU2l6ZSwgYXNwZWN0UmF0aW9TaXplIH07
CiAgICAgICAgIH0KICAgICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0V2l0aG91dExheW91dCA9IGNo
aWxkQm94LmNvbXB1dGVMb2dpY2FsSGVpZ2h0Rm9ySW50cmluc2ljV2lkdGhDb250cmlidXRpb24o
KTsKLSAgICAgICAgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbG9naWNhbEhlaWdodFdpdGhv
dXRMYXlvdXQ7Ci0gICAgICAgIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCA9IGxvZ2ljYWxIZWln
aHRXaXRob3V0TGF5b3V0OwotICAgICAgICByZXR1cm47CisgICAgICAgIHJldHVybiB7IGxvZ2lj
YWxIZWlnaHRXaXRob3V0TGF5b3V0LCBsb2dpY2FsSGVpZ2h0V2l0aG91dExheW91dCB9OwogICAg
IH0KLSAgICAKLSAgICBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGNoaWxkQm94
LCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7CiAK
LSAgICAvLyBGb3Igbm9uLXJlcGxhY2VkIGJsb2NrcyBpZiB0aGUgaW5saW5lIHNpemUgaXMgbWlu
fG1heC1jb250ZW50IG9yIGEgZGVmaW5pdGUKLSAgICAvLyBzaXplIHRoZSBtaW58bWF4LWNvbnRl
bnQgY29udHJpYnV0aW9uIGlzIHRoYXQgc2l6ZSBwbHVzIGJvcmRlciwgcGFkZGluZyBhbmQKLSAg
ICAvLyBtYXJnaW4gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1zaXppbmcvI2Jsb2NrLWlu
dHJpbnNpYwotICAgIGlmICghaXM8UmVuZGVyQmxvY2s+KGNoaWxkQm94KSkKLSAgICAgICAgcmV0
dXJuOwotICAgIGF1dG8mIGNvbXB1dGVkSW5saW5lU2l6ZSA9IGNoaWxkQm94LnN0eWxlKCkubG9n
aWNhbFdpZHRoKCk7Ci0gICAgaWYgKGNvbXB1dGVkSW5saW5lU2l6ZS5pc01heENvbnRlbnQoKSkK
LSAgICAgICAgbWluUHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWF4UHJlZmVycmVkTG9naWNhbFdp
ZHRoOwotICAgIGVsc2UgaWYgKGNvbXB1dGVkSW5saW5lU2l6ZS5pc01pbkNvbnRlbnQoKSkKLSAg
ICAgICAgbWF4UHJlZmVycmVkTG9naWNhbFdpZHRoID0gbWluUHJlZmVycmVkTG9naWNhbFdpZHRo
OworICAgIGF1dG8gbWluTG9naWNhbFdpZHRoID0gTGF5b3V0VW5pdCB7IH07CisgICAgYXV0byBt
YXhMb2dpY2FsV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKKworICAgIGF1dG8gY2hpbGRJbnRyaW5z
aWNMb2dpY2FsV2lkdGhzID0gWyZdIHsKKyAgICAgICAgcmV0dXJuIHN0ZDo6cGFpcjxMYXlvdXRV
bml0LCBMYXlvdXRVbml0PiB7IGNoaWxkQm94Lm1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCgpLCBj
aGlsZEJveC5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSB9OworICAgIH07CisgICAgLy8gV2hl
biB0aGlzIGlzIGEgZmxleCBjb250YWluZXIsIHNldCB1cCB0aGUgY3Jvc3MtYXhpcyBzaXplIG92
ZXJyaWRlIG9uIHRoZQorICAgIC8vIGNoaWxkIHNvIHRoYXQgaXRzIHByZWZlcnJlZC13aWR0aHMg
Y29tcHV0YXRpb24gc2VlcyB0aGUgZmxleCBsaW5lJ3MgY3Jvc3MKKyAgICAvLyBzaXplIGluIHNj
b3BlLiBQcmV2aW91c2x5IHRoaXMgd2FzIGEgdmlydHVhbCBob29rIHRoZSBmbGV4IGNvbnRhaW5l
cgorICAgIC8vIG92ZXJyb2RlOyBmb2xkZWQgaW5saW5lIHNpbmNlIGZsZXggaXMgdGhlIG9ubHkg
Y29udGFpbmVyIHRoYXQgbmVlZHMgaXQuCisgICAgaWYgKENoZWNrZWRQdHIgZmxleEJveCA9IGR5
bmFtaWNEb3duY2FzdDxSZW5kZXJGbGV4aWJsZUJveD4odGhpcykpIHsKKyAgICAgICAgYXV0byBm
bGV4U2NvcGUgPSBSZW5kZXJGbGV4aWJsZUJveDo6U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JG
bGV4SXRlbSB7ICpmbGV4Qm94LCBjaGlsZEJveCwgUmVuZGVyRmxleGlibGVCb3g6OlNjb3BlZENy
b3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OkludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHM6Olll
cyB9OworICAgICAgICBzdGQ6OnRpZShtaW5Mb2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCkg
PSBjaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgc3Rk
Ojp0aWUobWluTG9naWNhbFdpZHRoLCBtYXhMb2dpY2FsV2lkdGgpID0gY2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKCk7CisKKyAgICBhdXRvIGFwcGx5QmxvY2tJbnRyaW5zaWNLZXl3b3JkID0g
WyZdIHsKKyAgICAgICAgLy8gRm9yIG5vbi1yZXBsYWNlZCBibG9ja3MgaWYgdGhlIGlubGluZSBz
aXplIGlzIG1pbnxtYXgtY29udGVudCBvciBhIGRlZmluaXRlCisgICAgICAgIC8vIHNpemUgdGhl
IG1pbnxtYXgtY29udGVudCBjb250cmlidXRpb24gaXMgdGhhdCBzaXplIHBsdXMgYm9yZGVyLCBw
YWRkaW5nIGFuZAorICAgICAgICAvLyBtYXJnaW4gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nz
cy1zaXppbmcvI2Jsb2NrLWludHJpbnNpYworICAgICAgICBpZiAoIWlzPFJlbmRlckJsb2NrPihj
aGlsZEJveCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIGF1dG8mIGNvbXB1dGVkSW5s
aW5lU2l6ZSA9IGNoaWxkQm94LnN0eWxlKCkubG9naWNhbFdpZHRoKCk7CisgICAgICAgIGlmIChj
b21wdXRlZElubGluZVNpemUuaXNNYXhDb250ZW50KCkpIHsKKyAgICAgICAgICAgIG1pbkxvZ2lj
YWxXaWR0aCA9IG1heExvZ2ljYWxXaWR0aDsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
fQorICAgICAgICBpZiAoY29tcHV0ZWRJbmxpbmVTaXplLmlzTWluQ29udGVudCgpKQorICAgICAg
ICAgICAgbWF4TG9naWNhbFdpZHRoID0gbWluTG9naWNhbFdpZHRoOworICAgIH07CisgICAgYXBw
bHlCbG9ja0ludHJpbnNpY0tleXdvcmQoKTsKKworICAgIHJldHVybiB7IG1pbkxvZ2ljYWxXaWR0
aCwgbWF4TG9naWNhbFdpZHRoIH07CiB9CiAKIGJvb2wgUmVuZGVyQmxvY2s6Omhhc0xpbmVJZkVt
cHR5KCkgY29uc3QKQEAgLTMzMDEsNyArMzMwNyw3IEBAIHN0ZDo6cGFpcjxMYXlvdXRVbml0LCBM
YXlvdXRVbml0PiBSZW5kZXJCbG9jazo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHNGb3JG
CiAKICAgICBMYXlvdXRVbml0IG1pbkxvZ2ljYWxXaWR0aDsKICAgICBMYXlvdXRVbml0IG1heExv
Z2ljYWxXaWR0aDsKLSAgICBjb21wdXRlQ2hpbGRQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKCpsZWdl
bmQsIG1pbkxvZ2ljYWxXaWR0aCwgbWF4TG9naWNhbFdpZHRoKTsKKyAgICBzdGQ6OnRpZShtaW5M
b2dpY2FsV2lkdGgsIG1heExvZ2ljYWxXaWR0aCkgPSBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dp
Y2FsV2lkdGhzKCpsZWdlbmQpOwogCiAgICAgLy8gVGhlc2UgYXJlIGdvaW5nIHRvIGJlIGFkZGVk
IGluIGxhdGVyLCBzbyB3ZSBzdWJ0cmFjdCB0aGVtIG91dCB0byByZWZsZWN0IHRoZQogICAgIC8v
IGZhY3QgdGhhdCB0aGUgbGVnZW5kIGlzIG91dHNpZGUgdGhlIHNjcm9sbGFibGUgYXJlYS4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrLmgKaW5kZXggZDMwYzQ1M2Q5MTNiLi5hYjY4
MDZmZTc3MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9j
ay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCbG9jay5oCkBAIC0zMjQs
OSArMzI0LDcgQEAgcHJvdGVjdGVkOgogCiAgICAgdm9pZCBwcmVwYXJlUGFnaW5hdGlvbkJlZm9y
ZUJsb2NrTGF5b3V0KFJlbGF5b3V0Q2hpbGRyZW4mKTsKIAotICAgIHZvaWQgY29tcHV0ZUNoaWxk
UHJlZmVycmVkTG9naWNhbFdpZHRocyhSZW5kZXJCb3gmLCBMYXlvdXRVbml0JiBtaW5QcmVmZXJy
ZWRMb2dpY2FsV2lkdGgsIExheW91dFVuaXQmIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgY29u
c3Q7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgY29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdpZHRo
cyhSZW5kZXJCb3gmLCBMYXlvdXRVbml0JiBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIExheW91
dFVuaXQmIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgY29uc3Q7CisgICAgc3RkOjpwYWlyPExh
eW91dFVuaXQsIExheW91dFVuaXQ+IGNvbXB1dGVDaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMo
UmVuZGVyQm94JikgY29uc3Q7CiAKICAgICBSZW5kZXJCbG9ja1JhcmVEYXRhJiBlbnN1cmVCbG9j
a1JhcmVEYXRhKCkgTElGRVRJTUVfQk9VTkQ7CiAgICAgUmVuZGVyQmxvY2tSYXJlRGF0YSogTk9E
RUxFVEUgYmxvY2tSYXJlRGF0YSgpIGNvbnN0IExJRkVUSU1FX0JPVU5EOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxvdy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyQmxvY2tGbG93LmNwcAppbmRleCA0MjUyZGIzNDYzOTguLmQ1
NDE0YzlmN2UzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJs
b2NrRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJsb2NrRmxv
dy5jcHAKQEAgLTUwMDYsOSArNTAwNiw3IEBAIHZvaWQgUmVuZGVyQmxvY2tGbG93Ojpjb21wdXRl
SW5saW5lUHJlZmVycmVkTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2FsCiAgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH07CiAgICAgICAgIGlmIChpc0ludGVybGlu
ZWFyVHlwZUFubm90YXRpb24oKSkgewotICAgICAgICAgICAgYXV0byBhbm5vdGF0aW9uTWluaW11
bUludHJpbnNpY1dpZHRoID0gTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAgICBhdXRvIGFubm90
YXRpb25NYXhpbXVtSW50cmluc2ljV2lkdGggPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAg
IGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQmxvY2s+
KCpjaGlsZCksIGFubm90YXRpb25NaW5pbXVtSW50cmluc2ljV2lkdGgsIGFubm90YXRpb25NYXhp
bXVtSW50cmluc2ljV2lkdGgpOworICAgICAgICAgICAgYXV0byBbYW5ub3RhdGlvbk1pbmltdW1J
bnRyaW5zaWNXaWR0aCwgYW5ub3RhdGlvbk1heGltdW1JbnRyaW5zaWNXaWR0aF0gPSBjb21wdXRl
Q2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGRvd25jYXN0PFJlbmRlckJsb2NrPigqY2hpbGQp
KTsKIAogICAgICAgICAgICAgaWYgKCFydWJ5QmFzZUNvbnRlbnRTdGFjay5pc0VtcHR5KCkpIHsK
ICAgICAgICAgICAgICAgICAvLyBBbm5vdGF0aW9uIGJveCBpcyBhbHdheXMgcHJlY2VkZWQgYnkg
dGhlIGFzc29jaWF0ZWQgcnVieSBiYXNlLgpAQCAtNTA1Miw5ICs1MDUwLDcgQEAgdm9pZCBSZW5k
ZXJCbG9ja0Zsb3c6OmNvbXB1dGVJbmxpbmVQcmVmZXJyZWRMb2dpY2FsV2lkdGhzKExheW91dFVu
aXQmIG1pbkxvZ2ljYWwKIAogICAgICAgICAgICAgcmVzZXRMaW5lRm9yRm9yY2VkTGluZUJyZWFr
KCk7CiAKLSAgICAgICAgICAgIGF1dG8gYmxvY2tNaW5XaWR0aCA9IExheW91dFVuaXQgeyB9Owot
ICAgICAgICAgICAgYXV0byBibG9jTWF4V2lkdGggPSBMYXlvdXRVbml0IHsgfTsKLSAgICAgICAg
ICAgIGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQm94
PigqY2hpbGQpLCBibG9ja01pbldpZHRoLCBibG9jTWF4V2lkdGgpOworICAgICAgICAgICAgYXV0
byBbYmxvY2tNaW5XaWR0aCwgYmxvY01heFdpZHRoXSA9IGNvbXB1dGVDaGlsZEludHJpbnNpY0xv
Z2ljYWxXaWR0aHMoZG93bmNhc3Q8UmVuZGVyQm94PigqY2hpbGQpKTsKIAogICAgICAgICAgICAg
YXV0byBtYXJnaW5zSW5JbmxpbmVEaXJlY3Rpb24gPSBtYXJnaW5JbnRyaW5zaWNMb2dpY2FsV2lk
dGhGb3JDaGlsZChkb3duY2FzdDxSZW5kZXJCb3g+KCpjaGlsZCkpOwogCkBAIC01MTYzLDcgKzUx
NTksNyBAQCB2b2lkIFJlbmRlckJsb2NrRmxvdzo6Y29tcHV0ZUlubGluZVByZWZlcnJlZExvZ2lj
YWxXaWR0aHMoTGF5b3V0VW5pdCYgbWluTG9naWNhbAogICAgICAgICAgICAgICAgIGNoaWxkTWlu
UHJlZmVycmVkTG9naWNhbFdpZHRoID0gZXh0ZW50OwogICAgICAgICAgICAgICAgIGNoaWxkTWF4
UHJlZmVycmVkTG9naWNhbFdpZHRoID0gZXh0ZW50OwogICAgICAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICAgICAgY29tcHV0ZUNoaWxkUHJlZmVycmVkTG9naWNhbFdpZHRocygqYm94LCBjaGls
ZE1pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgY2hpbGRNYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgp
OworICAgICAgICAgICAgICAgIHN0ZDo6dGllKGNoaWxkTWluUHJlZmVycmVkTG9naWNhbFdpZHRo
LCBjaGlsZE1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCkgPSBjb21wdXRlQ2hpbGRJbnRyaW5zaWNM
b2dpY2FsV2lkdGhzKCpib3gpOwogICAgICAgICAgICAgY2hpbGRNaW4gKz0gY2hpbGRNaW5QcmVm
ZXJyZWRMb2dpY2FsV2lkdGguY2VpbFRvRmxvYXQoKTsKICAgICAgICAgICAgIGNoaWxkTWF4ICs9
IGNoaWxkTWF4UHJlZmVycmVkTG9naWNhbFdpZHRoLmNlaWxUb0Zsb2F0KCk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxleGlibGVCb3guY3BwCmluZGV4IDlhMDQ0ZWZi
ZDJiZS4uZTgwZWU2OTFiYmU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyRmxleGlibGVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJGbGV4aWJsZUJveC5jcHAKQEAgLTE4MCw5ICsxODAsNyBAQCB2b2lkIFJlbmRlckZsZXhpYmxl
Qm94Ojpjb21wdXRlSW50cmluc2ljTG9naWNhbFdpZHRocyhMYXlvdXRVbml0JiBtaW5Mb2dpY2Fs
V2lkdAogCiAgICAgICAgIExheW91dFVuaXQgbWFyZ2luID0gbWFyZ2luSW50cmluc2ljTG9naWNh
bFdpZHRoRm9yQ2hpbGQoKmZsZXhJdGVtKTsKIAotICAgICAgICBMYXlvdXRVbml0IG1pblByZWZl
cnJlZExvZ2ljYWxXaWR0aDsKLSAgICAgICAgTGF5b3V0VW5pdCBtYXhQcmVmZXJyZWRMb2dpY2Fs
V2lkdGg7Ci0gICAgICAgIGNvbXB1dGVDaGlsZFByZWZlcnJlZExvZ2ljYWxXaWR0aHMoKmZsZXhJ
dGVtLCBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgsIG1heFByZWZlcnJlZExvZ2ljYWxXaWR0aCk7
CisgICAgICAgIGF1dG8gW21pblByZWZlcnJlZExvZ2ljYWxXaWR0aCwgbWF4UHJlZmVycmVkTG9n
aWNhbFdpZHRoXSA9IGNvbXB1dGVDaGlsZEludHJpbnNpY0xvZ2ljYWxXaWR0aHMoKmZsZXhJdGVt
KTsKIAogICAgICAgICBtaW5QcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWFyZ2luOwogICAgICAg
ICBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGggKz0gbWFyZ2luOwpAQCAtMjM1LDQzICsyMzMsMjkg
QEAgdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUludHJpbnNpY0xvZ2ljYWxXaWR0aHMo
TGF5b3V0VW5pdCYgbWluTG9naWNhbFdpZHQKIC8vCiAvLyBJbiBhbnkgY2FzZSB0aGUgcHJldmlv
dXMgb3ZlcnJpZGluZyBzaXplcyBhcmUgcmVzdG9yZWQgb24gZGVzdHJ1Y3Rpb24gKGluIGNhc2Ug
b2YKIC8vIG5vdCBoYXZpbmcgYSBwcmV2aW91cyB2YWx1ZSBpdCdzIHNpbXBseSBjbGVhcmVkKS4K
LWNsYXNzIE92ZXJyaWRpbmdTaXplc1Njb3BlIHsKLXB1YmxpYzoKLSAgICBlbnVtIGNsYXNzIEF4
aXMgewotICAgICAgICBJbmxpbmUsCi0gICAgICAgIEJsb2NrLAotICAgICAgICBCb3RoCi0gICAg
fTsKLQotICAgIE92ZXJyaWRpbmdTaXplc1Njb3BlKFJlbmRlckJveCYgYm94LCBBeGlzIGF4aXMs
IHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gc2l6ZSA9IHN0ZDo6bnVsbG9wdCkKLSAgICAgICAg
OiBtX2JveChib3gpCi0gICAgICAgICwgbV9heGlzKGF4aXMpCi0gICAgewotICAgICAgICBBU1NF
UlQoIXNpemUgfHwgKGF4aXMgIT0gQXhpczo6Qm90aCkpOwotICAgICAgICBpZiAoYXhpcyA9PSBB
eGlzOjpCb3RoIHx8IGF4aXMgPT0gQXhpczo6SW5saW5lKSB7Ci0gICAgICAgICAgICBtX3ByZXZp
b3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxXaWR0aCA9IGJveC5vdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbFdpZHRoKCk7Ci0gICAgICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19T
SVpFKG1fYm94LCBXaWR0aCwgc2l6ZSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGF4aXMgPT0g
QXhpczo6Qm90aCB8fCBheGlzID09IEF4aXM6OkJsb2NrKSB7Ci0gICAgICAgICAgICBtX3ByZXZp
b3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQgPSBib3gub3ZlcnJpZGluZ0JvcmRl
ckJveExvZ2ljYWxIZWlnaHQoKTsKLSAgICAgICAgICAgIFNFVF9PUl9DTEVBUl9PVkVSUklESU5H
X1NJWkUobV9ib3gsIEhlaWdodCwgc2l6ZSk7Ci0gICAgICAgIH0KK1JlbmRlckZsZXhpYmxlQm94
OjpPdmVycmlkaW5nU2l6ZXNTY29wZTo6T3ZlcnJpZGluZ1NpemVzU2NvcGUoUmVuZGVyQm94JiBi
b3gsIEF4aXMgYXhpcywgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBzaXplKQorICAgIDogbV9i
b3goYm94KQorICAgICwgbV9heGlzKGF4aXMpCit7CisgICAgQVNTRVJUKCFzaXplIHx8IChheGlz
ICE9IEF4aXM6OkJvdGgpKTsKKyAgICBpZiAoYXhpcyA9PSBBeGlzOjpCb3RoIHx8IGF4aXMgPT0g
QXhpczo6SW5saW5lKSB7CisgICAgICAgIG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94TG9n
aWNhbFdpZHRoID0gYm94Lm92ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgoKTsKKyAgICAg
ICAgU0VUX09SX0NMRUFSX09WRVJSSURJTkdfU0laRShtX2JveCwgV2lkdGgsIHNpemUpOwogICAg
IH0KLSAgICB+T3ZlcnJpZGluZ1NpemVzU2NvcGUoKQotICAgIHsKLSAgICAgICAgaWYgKG1fYXhp
cyA9PSBBeGlzOjpJbmxpbmUgfHwgbV9heGlzID09IEF4aXM6OkJvdGgpCi0gICAgICAgICAgICBT
RVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0aCwgbV9wcmV2aW91c092ZXJy
aWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgpOwotCi0gICAgICAgIGlmIChtX2F4aXMgPT0gQXhp
czo6QmxvY2sgfHwgbV9heGlzID09IEF4aXM6OkJvdGgpCi0gICAgICAgICAgICBTRVRfT1JfQ0xF
QVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBIZWlnaHQsIG1fcHJldmlvdXNPdmVycmlkaW5nQm9y
ZGVyQm94TG9naWNhbEhlaWdodCk7CisgICAgaWYgKGF4aXMgPT0gQXhpczo6Qm90aCB8fCBheGlz
ID09IEF4aXM6OkJsb2NrKSB7CisgICAgICAgIG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94
TG9naWNhbEhlaWdodCA9IGJveC5vdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbEhlaWdodCgpOwor
ICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBIZWlnaHQsIHNpemUp
OwogICAgIH0KK30KIAotcHJpdmF0ZToKLSAgICBSZW5kZXJCb3gmIG1fYm94OwotICAgIEF4aXMg
bV9heGlzOwotICAgIHN0ZDo6b3B0aW9uYWw8TGF5b3V0VW5pdD4gbV9wcmV2aW91c092ZXJyaWRp
bmdCb3JkZXJCb3hMb2dpY2FsV2lkdGg7Ci0gICAgc3RkOjpvcHRpb25hbDxMYXlvdXRVbml0PiBt
X3ByZXZpb3VzT3ZlcnJpZGluZ0JvcmRlckJveExvZ2ljYWxIZWlnaHQ7Ci19OworUmVuZGVyRmxl
eGlibGVCb3g6Ok92ZXJyaWRpbmdTaXplc1Njb3BlOjp+T3ZlcnJpZGluZ1NpemVzU2NvcGUoKQor
eworICAgIGlmIChtX2F4aXMgPT0gQXhpczo6SW5saW5lIHx8IG1fYXhpcyA9PSBBeGlzOjpCb3Ro
KQorICAgICAgICBTRVRfT1JfQ0xFQVJfT1ZFUlJJRElOR19TSVpFKG1fYm94LCBXaWR0aCwgbV9w
cmV2aW91c092ZXJyaWRpbmdCb3JkZXJCb3hMb2dpY2FsV2lkdGgpOworCisgICAgaWYgKG1fYXhp
cyA9PSBBeGlzOjpCbG9jayB8fCBtX2F4aXMgPT0gQXhpczo6Qm90aCkKKyAgICAgICAgU0VUX09S
X0NMRUFSX09WRVJSSURJTkdfU0laRShtX2JveCwgSGVpZ2h0LCBtX3ByZXZpb3VzT3ZlcnJpZGlu
Z0JvcmRlckJveExvZ2ljYWxIZWlnaHQpOworfQogCiAvLyBTZXRzIG1faW5GbGV4SXRlbUludHJp
bnNpY1dpZHRoQ29tcHV0YXRpb24gYW5kIGFwcGxpZXMgdGhlIGNvbnRhaW5lcidzIGRlZmluaXRl
CiAvLyBjcm9zcyBzaXplIGFzIHRoZSBmbGV4IGl0ZW0ncyBjcm9zcy1heGlzIG92ZXJyaWRlIHdo
ZW4gYXBwbGljYWJsZS4gQ2xlYXJzIGFsbApAQCAtMjgwLDQ1ICsyNjQsMzIgQEAgcHJpdmF0ZToK
IC8vIFdoZW4gc2V0TmVlZHNQcmVmZXJyZWRXaWR0aHNVcGRhdGUgaXMgdHJ1ZSwgdGhlIGZsZXgg
aXRlbSdzIHByZWZlcnJlZCB3aWR0aHMgYXJlCiAvLyBpbnZhbGlkYXRlZCBzbyB0aGF0IG1pbi9t
YXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKSB3aWxsIHJlY29tcHV0ZSB0aGVtIHdpdGggdGhlCiAv
LyBjcm9zcy1heGlzIG92ZXJyaWRlIGluIHBsYWNlLiBUaGUgZGVzdHJ1Y3RvciBBU1NFUlRzIHRo
ZSBkaXJ0eSBmbGFnIHdhcyBjb25zdW1lZC4KLWVudW0gY2xhc3MgSW52YWxpZGF0ZVByZWZlcnJl
ZFdpZHRocyA6IGJvb2wgeyBObywgWWVzIH07Ci0KLWNsYXNzIFNjb3BlZENyb3NzQXhpc092ZXJy
aWRlRm9yRmxleEl0ZW0gewotcHVibGljOgotICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9y
RmxleEl0ZW0oY29uc3QgUmVuZGVyRmxleGlibGVCb3gmIGZsZXhCb3gsIFJlbmRlckJveCYgZmxl
eEl0ZW0sIEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgaW52YWxpZGF0ZVByZWZlcnJlZFdpZHRo
cykKLSAgICAgICAgOiBtX2ludHJpbnNpY1dpZHRoQ29tcHV0YXRpb24oZmxleEJveC5tX2luRmxl
eEl0ZW1JbnRyaW5zaWNXaWR0aENvbXB1dGF0aW9uLCB0cnVlKQorUmVuZGVyRmxleGlibGVCb3g6
OlNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OlNjb3BlZENyb3NzQXhpc092ZXJy
aWRlRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyRmxleGlibGVCb3gmIGZsZXhCb3gsIFJlbmRlckJv
eCYgZmxleEl0ZW0sIEludmFsaWRhdGVQcmVmZXJyZWRXaWR0aHMgaW52YWxpZGF0ZVByZWZlcnJl
ZFdpZHRocykKKyAgICA6IG1faW50cmluc2ljV2lkdGhDb21wdXRhdGlvbihmbGV4Qm94Lm1faW5G
bGV4SXRlbUludHJpbnNpY1dpZHRoQ29tcHV0YXRpb24sIHRydWUpCiAjaWYgQVNTRVJUX0VOQUJM
RUQKLSAgICAgICAgLCBtX2ZsZXhJdGVtKGZsZXhJdGVtKQorICAgICwgbV9mbGV4SXRlbShmbGV4
SXRlbSkKICNlbmRpZgotICAgIHsKLSAgICAgICAgaWYgKGZsZXhCb3guaGFzRGVmaW5pdGVDcm9z
c1NpemVGb3JGbGV4SXRlbShmbGV4SXRlbSkpIHsKLSAgICAgICAgICAgIGF1dG8gYXhpcyA9IGZs
ZXhCb3gubWFpbkF4aXNJc0ZsZXhJdGVtSW5saW5lQXhpcyhmbGV4SXRlbSkgPyBPdmVycmlkaW5n
U2l6ZXNTY29wZTo6QXhpczo6QmxvY2sgOiBPdmVycmlkaW5nU2l6ZXNTY29wZTo6QXhpczo6SW5s
aW5lOwotICAgICAgICAgICAgbV9vdmVycmlkaW5nU2NvcGUuZW1wbGFjZShmbGV4SXRlbSwgYXhp
cywgZmxleEJveC5pbm5lckNyb3NzU2l6ZUZvckZsZXhJdGVtKGZsZXhJdGVtKSk7Ci0gICAgICAg
ICAgICBpZiAoaW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyA9PSBJbnZhbGlkYXRlUHJlZmVycmVk
V2lkdGhzOjpZZXMpIHsKLSAgICAgICAgICAgICAgICBmbGV4SXRlbS5zZXROZWVkc1ByZWZlcnJl
ZFdpZHRoc1VwZGF0ZShNYXJraW5nQmVoYXZpb3I6Ok1hcmtPbmx5VGhpcyk7Ci0jaWYgQVNTRVJU
X0VOQUJMRUQKLSAgICAgICAgICAgICAgICBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzID0gdHJ1
ZTsKLSNlbmRpZgotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIG1f
b3ZlcnJpZGluZ1Njb3BlLmVtcGxhY2UoZmxleEl0ZW0sIE92ZXJyaWRpbmdTaXplc1Njb3BlOjpB
eGlzOjpCb3RoKTsKLSAgICB9Ci0KLSAgICB+U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4
SXRlbSgpCi0gICAgeworeworICAgIGlmIChmbGV4Qm94Lmhhc0RlZmluaXRlQ3Jvc3NTaXplRm9y
RmxleEl0ZW0oZmxleEl0ZW0pKSB7CisgICAgICAgIGF1dG8gYXhpcyA9IGZsZXhCb3gubWFpbkF4
aXNJc0ZsZXhJdGVtSW5saW5lQXhpcyhmbGV4SXRlbSkgPyBPdmVycmlkaW5nU2l6ZXNTY29wZTo6
QXhpczo6QmxvY2sgOiBPdmVycmlkaW5nU2l6ZXNTY29wZTo6QXhpczo6SW5saW5lOworICAgICAg
ICBtX292ZXJyaWRpbmdTY29wZS5lbXBsYWNlKGZsZXhJdGVtLCBheGlzLCBmbGV4Qm94LmlubmVy
Q3Jvc3NTaXplRm9yRmxleEl0ZW0oZmxleEl0ZW0pKTsKKyAgICAgICAgaWYgKGludmFsaWRhdGVQ
cmVmZXJyZWRXaWR0aHMgPT0gSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6WWVzKSB7CisgICAg
ICAgICAgICBmbGV4SXRlbS5zZXROZWVkc1ByZWZlcnJlZFdpZHRoc1VwZGF0ZShNYXJraW5nQmVo
YXZpb3I6Ok1hcmtPbmx5VGhpcyk7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICAgICAgaWYgKG1f
ZGlkRGlydHlQcmVmZXJyZWRXaWR0aHMpCi0gICAgICAgICAgICBBU1NFUlQoIW1fZmxleEl0ZW0u
bmVlZHNQcmVmZXJyZWRMb2dpY2FsV2lkdGhzVXBkYXRlKCkpOworICAgICAgICAgICAgbV9kaWRE
aXJ0eVByZWZlcnJlZFdpZHRocyA9IHRydWU7CiAjZW5kaWYKLSAgICB9CisgICAgICAgIH0KKyAg
ICB9IGVsc2UKKyAgICAgICAgbV9vdmVycmlkaW5nU2NvcGUuZW1wbGFjZShmbGV4SXRlbSwgT3Zl
cnJpZGluZ1NpemVzU2NvcGU6OkF4aXM6OkJvdGgpOworfQogCi1wcml2YXRlOgotICAgIFNldEZv
clNjb3BlPGJvb2w+IG1faW50cmluc2ljV2lkdGhDb21wdXRhdGlvbjsKLSAgICBzdGQ6Om9wdGlv
bmFsPE92ZXJyaWRpbmdTaXplc1Njb3BlPiBtX292ZXJyaWRpbmdTY29wZTsKK1JlbmRlckZsZXhp
YmxlQm94OjpTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtOjp+U2NvcGVkQ3Jvc3NB
eGlzT3ZlcnJpZGVGb3JGbGV4SXRlbSgpCit7CiAjaWYgQVNTRVJUX0VOQUJMRUQKLSAgICBSZW5k
ZXJCb3gmIG1fZmxleEl0ZW07Ci0gICAgYm9vbCBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzIHsg
ZmFsc2UgfTsKKyAgICBpZiAobV9kaWREaXJ0eVByZWZlcnJlZFdpZHRocykKKyAgICAgICAgQVNT
RVJUKCFtX2ZsZXhJdGVtLm5lZWRzUHJlZmVycmVkTG9naWNhbFdpZHRoc1VwZGF0ZSgpKTsKICNl
bmRpZgotfTsKK30KIAogc3RhdGljIHZvaWQgdXBkYXRlRmxleEl0ZW1EaXJ0eUJpdHNCZWZvcmVM
YXlvdXQoYm9vbCByZWxheW91dEZsZXhJdGVtLCBSZW5kZXJCb3gmIGZsZXhJdGVtKQogewpAQCAt
MzMxLDE2ICszMDIsNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVGbGV4SXRlbURpcnR5Qml0c0JlZm9y
ZUxheW91dChib29sIHJlbGF5b3V0RmxleEl0ZW0sIFJlbmRlckJveAogICAgICAgICBmbGV4SXRl
bS5zZXRDaGlsZE5lZWRzTGF5b3V0KE1hcmtpbmdCZWhhdmlvcjo6TWFya09ubHlUaGlzKTsKIH0K
IAotdm9pZCBSZW5kZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNoaWxkSW50cmluc2ljTG9naWNhbFdp
ZHRocyhSZW5kZXJCb3gmIGZsZXhCb3hDaGlsZCwgTGF5b3V0VW5pdCYgbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBMYXlvdXRVbml0JiBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpIGNvbnN0Ci17
Ci0gICAgLy8gQ2hpbGRyZW4gZXhjbHVkZWQgZnJvbSBub3JtYWwgbGF5b3V0IGFyZSBoYW5kbGVk
IGhlcmUgdG9vIChlLmcuIGxlZ2VuZCB3aGVuIGZpZWxkc2V0IGlzIHNldCB0byBmbGV4KS4KLSAg
ICBBU1NFUlQoZmxleEJveENoaWxkLmlzRmxleEl0ZW0oKSB8fCAoZmxleEJveENoaWxkLnBhcmVu
dCgpID09IHRoaXMgJiYgZmxleEJveENoaWxkLmlzRXhjbHVkZWRGcm9tTm9ybWFsTGF5b3V0KCkp
KTsKLQotICAgIC8vIENvbXB1dGUgcHJlZmVycmVkIHdpZHRocyBvZiB0aGUgY2hpbGQgd2l0aCB0
aGUgY29ycmVjdCBjcm9zcy1heGlzIHNpemUuCi0gICAgU2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVG
b3JGbGV4SXRlbSBzY29wZWRDcm9zc0F4aXNPdmVycmlkZSgqdGhpcywgZmxleEJveENoaWxkLCBJ
bnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpZZXMpOwotICAgIFJlbmRlckJsb2NrOjpjb21wdXRl
Q2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lkdGhzKGZsZXhCb3hDaGlsZCwgbWluUHJlZmVycmVkTG9n
aWNhbFdpZHRoLCBtYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgpOwotfQotCiBzdGQ6Om9wdGlvbmFs
PExheW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94OjpmaXJzdExpbmVCYXNlbGluZSgpIGNvbnN0
CiB7CiAgICAgaWYgKChpc1dyaXRpbmdNb2RlUm9vdCgpICYmICFpc0ZsZXhJdGVtKCkpIHx8ICFt
X251bWJlck9mRmxleEl0ZW1zT25GaXJzdExpbmUgfHwgc2hvdWxkQXBwbHlMYXlvdXRDb250YWlu
bWVudCgpKQpAQCAtMTU4NSw3ICsxNTQ2LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJGbGV4aWJsZUJv
eDo6ZmxleEJhc2VTaXplRm9yRmxleEl0ZW0oUmVuZGVyQm94JiBmbGV4SXRlbSkKIAogICAgIC8v
IFdlIGRvbid0IG5lZWQgdG8gYWRkIHNjcm9sbGJhckxvZ2ljYWxXaWR0aCBoZXJlIGJlY2F1c2Ug
dGhlIHByZWZlcnJlZAogICAgIC8vIHdpZHRoIGluY2x1ZGVzIHRoZSBzY3JvbGxiYXIsIGV2ZW4g
Zm9yIG92ZXJmbG93OiBhdXRvLgotICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0
ZW0gY3Jvc3NTaXplU2NvcGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVycmVkV2lk
dGhzOjpZZXMpOworICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0gY3Jvc3NT
aXplU2NvcGUoKnRoaXMsIGZsZXhJdGVtLCBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJ
dGVtOjpJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpZZXMpOwogICAgIGF1dG8gbWFpbkF4aXNF
eHRlbnQgPSBmbGV4SXRlbS5tYXhQcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICBhdXRvIG1h
aW5BeGlzQm9yZGVyQW5kUGFkZGluZyA9IGlzSG9yaXpvbnRhbEZsb3coKSA/IGZsZXhJdGVtLmhv
cml6b250YWxCb3JkZXJBbmRQYWRkaW5nRXh0ZW50KCkgOiBmbGV4SXRlbS52ZXJ0aWNhbEJvcmRl
ckFuZFBhZGRpbmdFeHRlbnQoKTsKICAgICByZXR1cm4gbWFpbkF4aXNFeHRlbnQgLSBtYWluQXhp
c0JvcmRlckFuZFBhZGRpbmc7CkBAIC0xOTI5LDcgKzE4OTAsNyBAQCBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlVXNlZE1heE1haW5TaXplKFJlbmRl
ckJveCYgZgogICAgIGlmIChtYXguaXNTcGVjaWZpZWQoKSkKICAgICAgICAgcmV0dXJuIGNvbXB1
dGVNYWluQXhpc0V4dGVudEZvckZsZXhJdGVtKGZsZXhJdGVtLCBtYXgpOwogICAgIGlmIChtYXgu
aXNJbnRyaW5zaWNPclN0cmV0Y2goKSkgewotICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVycmlk
ZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwgSW52
YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6Tm8pOworICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVy
cmlkZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwg
U2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbTo6SW52YWxpZGF0ZVByZWZlcnJlZFdp
ZHRoczo6Tm8pOwogICAgICAgICByZXR1cm4gY29tcHV0ZU1haW5BeGlzRXh0ZW50Rm9yRmxleEl0
ZW0oZmxleEl0ZW0sIG1heCk7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBAIC0xOTQ1LDcgKzE5
MDYsNyBAQCBMYXlvdXRVbml0IFJlbmRlckZsZXhpYmxlQm94Ojpjb21wdXRlVXNlZE5vbkF1dG9N
aW5NYWluU2l6ZShSZW5kZXJCb3gmIGZsZXhJdGVtLAogICAgIC8vIHRob3NlIGdvIHRocm91Z2gg
Y29tcHV0ZUNvbnRlbnRCYXNlZE1pbk1haW5TaXplIGluc3RlYWQuCiAgICAgYXV0byBtaW5FeHRl
bnQgPSBbJl0gewogICAgICAgICBpZiAobWluLmlzSW50cmluc2ljT3JTdHJldGNoKCkpIHsKLSAg
ICAgICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0gc2NvcGVkQ3Jvc3NB
eGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpO
byk7CisgICAgICAgICAgICBTY29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNjb3Bl
ZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBmbGV4SXRlbSwgU2NvcGVkQ3Jvc3NBeGlzT3ZlcnJp
ZGVGb3JGbGV4SXRlbTo6SW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6Tm8pOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXB1dGVNYWluQXhpc0V4dGVudEZvckZsZXhJdGVtKGZsZXhJdGVtLCBtaW4p
LnZhbHVlX29yKDBfbHUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjb21wdXRlTWFpbkF4
aXNFeHRlbnRGb3JGbGV4SXRlbShmbGV4SXRlbSwgbWluKS52YWx1ZV9vcigwX2x1KTsKQEAgLTE5
NTMsNyArMTkxNCw3IEBAIExheW91dFVuaXQgUmVuZGVyRmxleGlibGVCb3g6OmNvbXB1dGVVc2Vk
Tm9uQXV0b01pbk1haW5TaXplKFJlbmRlckJveCYgZmxleEl0ZW0sCiAKICAgICAvLyBXZSBtdXN0
IG5ldmVyIHJldHVybiBhIG1pbiBzaXplIHNtYWxsZXIgdGhhbiB0aGUgbWluIHByZWZlcnJlZCBz
aXplIGZvciB0YWJsZXMuCiAgICAgaWYgKGZsZXhJdGVtLmlzUmVuZGVyVGFibGUoKSAmJiBtYWlu
QXhpc0lzRmxleEl0ZW1JbmxpbmVBeGlzKGZsZXhJdGVtKSkgewotICAgICAgICBTY29wZWRDcm9z
c0F4aXNPdmVycmlkZUZvckZsZXhJdGVtIHNjb3BlZENyb3NzQXhpc092ZXJyaWRlKCp0aGlzLCBm
bGV4SXRlbSwgSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRoczo6WWVzKTsKKyAgICAgICAgU2NvcGVk
Q3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbSBzY29wZWRDcm9zc0F4aXNPdmVycmlkZSgqdGhp
cywgZmxleEl0ZW0sIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW06OkludmFsaWRh
dGVQcmVmZXJyZWRXaWR0aHM6Olllcyk7CiAgICAgICAgIG1pbkV4dGVudCA9IHN0ZDo6bWF4KG1p
bkV4dGVudCwgZmxleEl0ZW0ubWluUHJlZmVycmVkTG9naWNhbFdpZHRoKCkpOwogICAgIH0KICAg
ICByZXR1cm4gbWluRXh0ZW50OwpAQCAtMTk3MSw3ICsxOTMyLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJGbGV4aWJsZUJveDo6Y29tcHV0ZUNvbnRlbnRCYXNlZE1pbk1haW5TaXplKFJlbmRlckJveCYg
ZmxleEl0ZW0KICAgICAgICAgY29udGVudFNpemUgPSBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0
UmF0aW9Vc2luZyhmbGV4SXRlbSwgZmxleEl0ZW1Dcm9zc1NpemVMZW5ndGgpOwogCiAgICAgaWYg
KCFjYW5Db21wdXRlU2l6ZVRocm91Z2hBc3BlY3RSYXRpbyB8fCAhZmxleEl0ZW0uaXNSZW5kZXJS
ZXBsYWNlZCgpKSB7Ci0gICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0ZW0g
c2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBJbnZhbGlkYXRlUHJlZmVy
cmVkV2lkdGhzOjpObyk7CisgICAgICAgIFNjb3BlZENyb3NzQXhpc092ZXJyaWRlRm9yRmxleEl0
ZW0gc2NvcGVkQ3Jvc3NBeGlzT3ZlcnJpZGUoKnRoaXMsIGZsZXhJdGVtLCBTY29wZWRDcm9zc0F4
aXNPdmVycmlkZUZvckZsZXhJdGVtOjpJbnZhbGlkYXRlUHJlZmVycmVkV2lkdGhzOjpObyk7CiAg
ICAgICAgIGF1dG8gbWluQ29udGVudFNpemUgPSBjb21wdXRlTWFpbkF4aXNFeHRlbnRGb3JGbGV4
SXRlbShmbGV4SXRlbSwgU3R5bGU6Ok1pbmltdW1TaXplIHsgQ1NTOjpLZXl3b3JkOjpNaW5Db250
ZW50IHsgfSB9KS52YWx1ZV9vcigwX2x1KTsKICAgICAgICAgY29udGVudFNpemUgPSBzdGQ6Om1h
eChjb250ZW50U2l6ZSwgbWluQ29udGVudFNpemUpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckZsZXhpYmxlQm94LmgKaW5kZXggMWZkM2UwZGEyYWE4Li5mZjE5NGM2
MTVmMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJs
ZUJveC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJGbGV4aWJsZUJveC5o
CkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9CYXNlbGluZUFsaWdubWVudC5o
PgogI2luY2x1ZGUgPFdlYkNvcmUvT3JkZXJJdGVyYXRvci5oPgogI2luY2x1ZGUgPFdlYkNvcmUv
UmVuZGVyQmxvY2suaD4KKyNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvV2Vha0hhc2hTZXQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTE3LDEyICsxMTgs
MzkgQEAgcHVibGljOgogICAgIGJvb2wgaGFzRGVmaW5pdGVMb2dpY2FsV2lkdGhGb3JBc3BlY3RS
YXRpb0Nyb3NzU2l6ZSgpIGNvbnN0OwogICAgIGJvb2wgaGFzU3RyZXRjaGVkRmxleEl0ZW1XaXRo
QXNwZWN0UmF0aW8oKSBjb25zdDsKIAorICAgIGNsYXNzIE92ZXJyaWRpbmdTaXplc1Njb3BlIHsK
KyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gY2xhc3MgQXhpcyB7IElubGluZSwgQmxvY2ssIEJv
dGggfTsKKworICAgICAgICBPdmVycmlkaW5nU2l6ZXNTY29wZShSZW5kZXJCb3gmLCBBeGlzLCBz
dGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IHNpemUgPSBzdGQ6Om51bGxvcHQpOworICAgICAgICB+
T3ZlcnJpZGluZ1NpemVzU2NvcGUoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIFJlbmRlckJv
eCYgbV9ib3g7CisgICAgICAgIEF4aXMgbV9heGlzOworICAgICAgICBzdGQ6Om9wdGlvbmFsPExh
eW91dFVuaXQ+IG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVyQm94TG9naWNhbFdpZHRoOworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPExheW91dFVuaXQ+IG1fcHJldmlvdXNPdmVycmlkaW5nQm9yZGVy
Qm94TG9naWNhbEhlaWdodDsKKyAgICB9OworCisgICAgY2xhc3MgU2NvcGVkQ3Jvc3NBeGlzT3Zl
cnJpZGVGb3JGbGV4SXRlbSB7CisgICAgcHVibGljOgorICAgICAgICBlbnVtIGNsYXNzIEludmFs
aWRhdGVQcmVmZXJyZWRXaWR0aHMgOiBib29sIHsgTm8sIFllcyB9OworICAgICAgICBTY29wZWRD
cm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtKGNvbnN0IFJlbmRlckZsZXhpYmxlQm94JiwgUmVu
ZGVyQm94JiBmbGV4SXRlbSwgSW52YWxpZGF0ZVByZWZlcnJlZFdpZHRocyk7CisgICAgICAgIH5T
Y29wZWRDcm9zc0F4aXNPdmVycmlkZUZvckZsZXhJdGVtKCk7CisKKyAgICBwcml2YXRlOgorICAg
ICAgICBTZXRGb3JTY29wZTxib29sPiBtX2ludHJpbnNpY1dpZHRoQ29tcHV0YXRpb247CisgICAg
ICAgIHN0ZDo6b3B0aW9uYWw8T3ZlcnJpZGluZ1NpemVzU2NvcGU+IG1fb3ZlcnJpZGluZ1Njb3Bl
OworI2lmIEFTU0VSVF9FTkFCTEVECisgICAgICAgIFJlbmRlckJveCYgbV9mbGV4SXRlbTsKKyAg
ICAgICAgYm9vbCBtX2RpZERpcnR5UHJlZmVycmVkV2lkdGhzIHsgZmFsc2UgfTsKKyNlbmRpZgor
ICAgIH07CisKIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbXB1dGVJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYgbWF4TG9naWNhbFdp
ZHRoKSBjb25zdCBvdmVycmlkZTsKIAogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgU2NvcGVk
Q3Jvc3NBeGlzT3ZlcnJpZGVGb3JGbGV4SXRlbTsKLQogICAgIHN0cnVjdCBGbGV4QmFzZUFuZEh5
cG90aGV0aWNhbE1haW5TaXplIHsKICAgICAgICAgTGF5b3V0VW5pdCBmbGV4QmFzZUNvbnRlbnRT
aXplOwogICAgICAgICBMYXlvdXRVbml0IGh5cG90aGV0aWNhbE1haW5Db250ZW50U2l6ZTsKQEAg
LTIxMiw3ICsyNDAsNiBAQCBwcml2YXRlOgogICAgIGJvb2wgY3Jvc3NBeGlzSXNMb2dpY2FsV2lk
dGgoKSBjb25zdDsKICAgICB2b2lkIGNsZWFyRmxleEl0ZW1PdmVycmlkaW5nU2l6ZXMoKTsKICAg
ICBMYXlvdXRVbml0IGlubmVyQ3Jvc3NTaXplRm9yRmxleEl0ZW0oY29uc3QgUmVuZGVyQm94JiBm
bGV4SXRlbSkgY29uc3Q7Ci0gICAgdm9pZCBjb21wdXRlQ2hpbGRJbnRyaW5zaWNMb2dpY2FsV2lk
dGhzKFJlbmRlckJveCYsIExheW91dFVuaXQmIG1pbkxvZ2ljYWxXaWR0aCwgTGF5b3V0VW5pdCYg
bWF4TG9naWNhbFdpZHRoKSBjb25zdCBvdmVycmlkZTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBT
aXplVHlwZT4gTGF5b3V0VW5pdCBjb21wdXRlTWFpblNpemVGcm9tQXNwZWN0UmF0aW9Vc2luZyhj
b25zdCBSZW5kZXJCb3gmIGZsZXhJdGVtLCBjb25zdCBTaXplVHlwZSYgY3Jvc3NTaXplTGVuZ3Ro
KSBjb25zdDsKICAgICB2b2lkIE5PREVMRVRFIHNldEZsb3dBd2FyZUxvY2F0aW9uRm9yRmxleEl0
ZW0oUmVuZGVyQm94JiBmbGV4SXRlbSwgY29uc3QgTGF5b3V0UG9pbnQmKTsKICAgICBMYXlvdXRV
bml0IGZsZXhCYXNlU2l6ZUZvckZsZXhJdGVtKFJlbmRlckJveCYgZmxleEl0ZW0pOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>