<?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>237413</bug_id>
          
          <creation_ts>2022-03-03 02:26:50 -0800</creation_ts>
          <short_desc>Simplify pseudo element resolution</short_desc>
          <delta_ts>2022-03-03 09:26:19 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</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>237362</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Antti Koivisto">koivisto</reporter>
          <assigned_to name="Antti Koivisto">koivisto</assigned_to>
          <cc>changseok</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1847800</commentid>
    <comment_count>0</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 02:26:50 -0800</bug_when>
    <thetext>We can add pseudo element styles directly to their parent style instead of having a separate map for that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847801</commentid>
    <comment_count>1</comment_count>
      <attachid>453713</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 02:28:29 -0800</bug_when>
    <thetext>Created attachment 453713
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847829</commentid>
    <comment_count>2</comment_count>
      <attachid>453719</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 04:31:30 -0800</bug_when>
    <thetext>Created attachment 453719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847849</commentid>
    <comment_count>3</comment_count>
      <attachid>453724</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 05:28:42 -0800</bug_when>
    <thetext>Created attachment 453724
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847855</commentid>
    <comment_count>4</comment_count>
      <attachid>453725</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 06:05:31 -0800</bug_when>
    <thetext>Created attachment 453725
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847886</commentid>
    <comment_count>5</comment_count>
      <attachid>453725</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2022-03-03 07:44:48 -0800</bug_when>
    <thetext>Comment on attachment 453725
Patch

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

&gt; Source/WebCore/ChangeLog:64
&gt; +

You probably want to merge the two ChangeLog entries.

&gt; Source/WebCore/rendering/style/RenderStyle.cpp:116
&gt; +    auto newStyle = RenderStyle(style, Clone);

I have a question reading this code: do we prefer this to the more compact `RenderStyle newStyle(style, Clone)`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847893</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-03 07:55:56 -0800</bug_when>
    <thetext>ChangeLog entry in Source/WebCore/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847903</commentid>
    <comment_count>7</comment_count>
      <attachid>453743</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 08:12:06 -0800</bug_when>
    <thetext>Created attachment 453743
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847904</commentid>
    <comment_count>8</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-03-03 08:12:59 -0800</bug_when>
    <thetext>&gt; &gt; +    auto newStyle = RenderStyle(style, Clone);
&gt; 
&gt; I have a question reading this code: do we prefer this to the more compact
&gt; `RenderStyle newStyle(style, Clone)`?

I don&apos;t think there is policy on this but I feel it often reads better like this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847924</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-03 09:25:26 -0800</bug_when>
    <thetext>Committed r290779 (248023@main): &lt;https://commits.webkit.org/248023@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 453743.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1847925</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-03 09:26:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/89758898&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453713</attachid>
            <date>2022-03-03 02:28:29 -0800</date>
            <delta_ts>2022-03-03 04:31:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237413-20220303122827.patch</filename>
            <type>text/plain</type>
            <size>12007</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uNDU4ZjAwZDAyODczMDEyNjBjMDI4MTNiYWI3YWE3
NmVkYzQ2YTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTAzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwc2V1ZG8g
ZWxlbWVudCByZXNvbHV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzc0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBjYW4gYWRkIHBzZXVkbyBlbGVtZW50IHN0eWxlcyBkaXJlY3RseSB0byB0
aGVpciBwYXJlbnQgc3R5bGUgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBtYXAgZm9yIHRo
YXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6
R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0
ZWRDb250ZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDItMjggIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSB3ZWItYW5p
bWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMt
YXJndW1lbnQtMDAxLmh0bWwgaXMgYSB1bmlxdWUgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
M2VjNDUxYTk2MTM3ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uMTU0ZTkxM2E0MWRhNGMz
NzkwMDliOGY4Y2I2ZTNiOGY1MmU2Yjk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC0zMDksMTEgKzMw
OSwxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZQogICAgIGF1dG8mIGVsZW1lbnRVcGRhdGUg
PSB1cGRhdGVzLnVwZGF0ZTsKICAgICBhdXRvIGVsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqZWxlbWVudFVwZGF0ZS5zdHlsZSk7CiAKLSAgICBmb3IgKGF1dG8mIGl0
IDogdXBkYXRlcy5wc2V1ZG9FbGVtZW50VXBkYXRlcykgewotICAgICAgICBhdXRvIHBzZXVkb0lk
ID0gaXQua2V5OwotICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBw
c2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0ZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgZWxlbWVudFVwZGF0ZVN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoKml0LnZhbHVlLnN0eWxlKSk7CisgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUt
PmNhY2hlZFBzZXVkb1N0eWxlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHNldWRvRWxlbWVu
dFN0eWxlIDogKmVsZW1lbnRVcGRhdGUuc3R5bGUtPmNhY2hlZFBzZXVkb1N0eWxlcygpKSB7Cisg
ICAgICAgICAgICBhdXRvIHBzZXVkb0lkID0gcHNldWRvRWxlbWVudFN0eWxlLT5zdHlsZVR5cGUo
KTsKKyAgICAgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IHBzZXVk
b0lkID09IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAg
ICAgICAgIGVsZW1lbnRVcGRhdGVTdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoUmVuZGVyU3R5
bGU6OmNsb25lUHRyKCpwc2V1ZG9FbGVtZW50U3R5bGUpKTsKKyAgICAgICAgfQogICAgIH0KIAog
ICAgIGJvb2wgc2hvdWxkVGVhckRvd25SZW5kZXJlcnMgPSBlbGVtZW50VXBkYXRlLmNoYW5nZSA9
PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlciAmJiAoZWxlbWVudC5yZW5kZXJlcigpIHx8IGVsZW1l
bnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgfHwgZWxlbWVudC5pc0luVG9wTGF5ZXIoKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0
ZXJHZW5lcmF0ZWRDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCmluZGV4IDY0NThkMTRiOGRj
NTY4NjFmMDM3NjBjNWNkMjNkM2JkMmI5MzU2N2EuLjY3ZmE4YTAyMjk4ODllNWI2YTYxNWFhMTlh
MDE2ZGQ1NmZjOTNlZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRl
bnQuY3BwCkBAIC0xMTQsMTQgKzExNCwxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5l
cmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGN1cnJlbnQsCiAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1lbnQtPnJlbmRl
cmVyKCkgOiBudWxscHRyKQogICAgICAgICBtX3VwZGF0ZXIucmVuZGVyVHJlZVBvc2l0aW9uKCku
aW52YWxpZGF0ZU5leHRTaWJsaW5nKCpyZW5kZXJlcik7CiAKLSAgICBhdXRvKiB1cGRhdGUgPSBb
Jl0oKSAtPiBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogewotICAgICAgICBhdXRvIGl0ZXJh
dG9yID0gdXBkYXRlcy5wc2V1ZG9FbGVtZW50VXBkYXRlcy5maW5kKHBzZXVkb0lkKTsKLSAgICAg
ICAgaWYgKGl0ZXJhdG9yICE9IHVwZGF0ZXMucHNldWRvRWxlbWVudFVwZGF0ZXMuZW5kKCkpCi0g
ICAgICAgICAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgcmV0dXJuIG51bGxw
dHI7CisgICAgYXV0byogdXBkYXRlU3R5bGUgPSBbJl0oKSAtPiBjb25zdCBSZW5kZXJTdHlsZSog
eworICAgICAgICBpZiAoIXVwZGF0ZXMudXBkYXRlLnN0eWxlKQorICAgICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CisgICAgICAgIHJldHVybiB1cGRhdGVzLnVwZGF0ZS5zdHlsZS0+Z2V0Q2FjaGVk
UHNldWRvU3R5bGUocHNldWRvSWQpOwogICAgIH0oKTsKIAotICAgIGlmICghbmVlZHNQc2V1ZG9F
bGVtZW50KHVwZGF0ZSkgJiYgIWVsZW1lbnRJc1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVp
cmluZ1BzZXVkb0VsZW1lbnQoJmN1cnJlbnQsIHBzZXVkb0lkKSkgeworICAgIGlmICghbmVlZHNQ
c2V1ZG9FbGVtZW50KHVwZGF0ZVN0eWxlKSAmJiAhZWxlbWVudElzVGFyZ2V0ZWRCeUtleWZyYW1l
RWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVudCgmY3VycmVudCwgcHNldWRvSWQpKSB7CiAgICAg
ICAgIGlmIChwc2V1ZG9FbGVtZW50KSB7CiAgICAgICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNl
dWRvSWQ6OkJlZm9yZSkKICAgICAgICAgICAgICAgICByZW1vdmVCZWZvcmVQc2V1ZG9FbGVtZW50
KGN1cnJlbnQsIG1fdXBkYXRlci5tX2J1aWxkZXIpOwpAQCAtMTMxLDI3ICsxMzAsMzMgQEAgdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVu
dChFbGVtZW50JiBjdXJyZW50LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF1
cGRhdGUgfHwgdXBkYXRlLT5jaGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkKKyAgICBpZiAo
IXVwZGF0ZVN0eWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBhdXRvKiBleGlzdGluZ1N0eWxl
ID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1lbnQtPnJlbmRlclN0eWxlKCkgOiBudWxscHRy
OworICAgIGF1dG8gc3R5bGVDaGFuZ2UgPSBleGlzdGluZ1N0eWxlID8gU3R5bGU6OmRldGVybWlu
ZUNoYW5nZSgqdXBkYXRlU3R5bGUsICpleGlzdGluZ1N0eWxlKSA6IFN0eWxlOjpDaGFuZ2U6OlJl
bmRlcmVyOworCisgICAgaWYgKHN0eWxlQ2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6Ok5vbmUpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIHBzZXVkb0VsZW1lbnQgPSAmY3VycmVudC5lbnN1cmVQc2V1
ZG9FbGVtZW50KHBzZXVkb0lkKTsKIAotICAgIGlmICh1cGRhdGUtPnN0eWxlLT5kaXNwbGF5KCkg
PT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CisgICAgaWYgKHVwZGF0ZVN0eWxlLT5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgIC8vIEZvciBkaXNwbGF5OmNv
bnRlbnRzIHdlIGNyZWF0ZSBhbiBpbmxpbmUgd3JhcHBlciB0aGF0IGluaGVyaXRzIGl0cwogICAg
ICAgICAvLyBzdHlsZSBmcm9tIHRoZSBkaXNwbGF5OmNvbnRlbnRzIHN0eWxlLgogICAgICAgICBh
dXRvIGNvbnRlbnRzU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAgICAgIGNv
bnRlbnRzU3R5bGUtPnNldFN0eWxlVHlwZShwc2V1ZG9JZCk7Ci0gICAgICAgIGNvbnRlbnRzU3R5
bGUtPmluaGVyaXRGcm9tKCp1cGRhdGUtPnN0eWxlKTsKLSAgICAgICAgY29udGVudHNTdHlsZS0+
Y29weUNvbnRlbnRGcm9tKCp1cGRhdGUtPnN0eWxlKTsKKyAgICAgICAgY29udGVudHNTdHlsZS0+
aW5oZXJpdEZyb20oKnVwZGF0ZVN0eWxlKTsKKyAgICAgICAgY29udGVudHNTdHlsZS0+Y29weUNv
bnRlbnRGcm9tKCp1cGRhdGVTdHlsZSk7CiAKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGUg
Y29udGVudHNVcGRhdGUgeyBXVEZNb3ZlKGNvbnRlbnRzU3R5bGUpLCB1cGRhdGUtPmNoYW5nZSwg
dXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRl
cyBjb250ZW50c1VwZGF0ZXMgeyBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlKSwgU3R5bGU6OkRlc2Nl
bmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKKyAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRh
dGUgY29udGVudHNVcGRhdGUgeyBXVEZNb3ZlKGNvbnRlbnRzU3R5bGUpLCBzdHlsZUNoYW5nZSwg
ZmFsc2UgfTsKKyAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIGNvbnRlbnRzVXBkYXRlcyB7
IFdURk1vdmUoY29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5v
bmUgfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxl
bWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZXMpKTsKLSAgICAgICAgcHNldWRvRWxlbWVudC0+
c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS0+
c3R5bGUpKTsKKyAgICAgICAgcHNldWRvRWxlbWVudC0+c3RvcmVEaXNwbGF5Q29udGVudHNTdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoKnVwZGF0ZS0+c3R5bGUpOwotICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9F
bGVtZW50VXBkYXRlIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpLCB1cGRhdGUt
PmNoYW5nZSwgdXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVt
ZW50VXBkYXRlcyBwc2V1ZG9FbGVtZW50VXBkYXRlcyB7IFdURk1vdmUocHNldWRvRWxlbWVudFVw
ZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07CisgICAgICAg
IGF1dG8gcHNldWRvRWxlbWVudFVwZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1
cGRhdGVTdHlsZSk7CisgICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRV
cGRhdGUgeyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSksIHN0eWxlQ2hhbmdlLCBm
YWxzZSB9OworICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZXMgcHNldWRvRWxlbWVudFVwZGF0
ZXMgeyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jl
c29sdmU6Ok5vbmUgfTsKICAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1lbnRSZW5kZXJlcigq
cHNldWRvRWxlbWVudCwgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlcykpOwogICAgICAgICBB
U1NFUlQoIXBzZXVkb0VsZW1lbnQtPmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICB9CkBAIC0x
NjAsMTAgKzE2NSwxMCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50
Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGN1cnJlbnQsCiAgICAgaWYgKCFwc2V1ZG9F
bGVtZW50UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh1cGRhdGUtPmNoYW5n
ZSA9PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcikKLSAgICAgICAgY3JlYXRlQ29udGVudFJlbmRl
cmVycyhtX3VwZGF0ZXIubV9idWlsZGVyLCAqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRl
LT5zdHlsZSwgcHNldWRvSWQpOworICAgIGlmIChzdHlsZUNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdl
OjpSZW5kZXJlcikKKyAgICAgICAgY3JlYXRlQ29udGVudFJlbmRlcmVycyhtX3VwZGF0ZXIubV9i
dWlsZGVyLCAqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlU3R5bGUsIHBzZXVkb0lkKTsK
ICAgICBlbHNlCi0gICAgICAgIHVwZGF0ZVN0eWxlRm9yQ29udGVudFJlbmRlcmVycygqcHNldWRv
RWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlLT5zdHlsZSk7CisgICAgICAgIHVwZGF0ZVN0eWxlRm9y
Q29udGVudFJlbmRlcmVycygqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlU3R5bGUpOwog
CiAgICAgaWYgKG1fdXBkYXRlci5yZW5kZXJWaWV3KCkuaGFzUXVvdGVzTmVlZGluZ1VwZGF0ZSgp
KSB7CiAgICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJR
dW90ZT4oKnBzZXVkb0VsZW1lbnRSZW5kZXJlcikpCkBAIC0xOTUsMTMgKzIwMCwxMyBAQCB2b2lk
IFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVCYWNrZHJvcFJlbmRl
cmVyKFJlbmRlckVsZW1lbnQmCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRyZWVVcGRhdGVyOjpH
ZW5lcmF0ZWRDb250ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQoY29uc3QgU3R5bGU6OkVsZW1lbnRV
cGRhdGUqIHVwZGF0ZSkKK2Jvb2wgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6
Om5lZWRzUHNldWRvRWxlbWVudChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYg
KCF1cGRhdGUpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlm
ICghbV91cGRhdGVyLnJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgpLmNhbkhhdmVHZW5lcmF0
ZWRDaGlsZHJlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwc2V1ZG9FbGVt
ZW50UmVuZGVyZXJJc05lZWRlZCh1cGRhdGUtPnN0eWxlLmdldCgpKSkKKyAgICBpZiAoIXBzZXVk
b0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
ICAgIHJldHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVu
dC5oCmluZGV4IGYzZjAxNmRkNjg3OGMyNTFjOTE4NDlhNTg5MzQ4MTllZmE3ZDgwYWYuLjExMTUy
OWRiZTIwNmYwYTFkNTEwMTM3ZjgzNzhkYTJkZjJjOTgzZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRl
bnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0
ZToKICAgICB2b2lkIHVwZGF0ZVF1b3Rlc1VwVG8oUmVuZGVyUXVvdGUqKTsKICAgICAKLSAgICBi
b29sIG5lZWRzUHNldWRvRWxlbWVudChjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOworICAg
IGJvb2wgbmVlZHNQc2V1ZG9FbGVtZW50KGNvbnN0IFJlbmRlclN0eWxlKik7CiAKICAgICBSZW5k
ZXJUcmVlVXBkYXRlciYgbV91cGRhdGVyOwogICAgIFdlYWtQdHI8UmVuZGVyUXVvdGU+IG1fcHJl
dmlvdXNVcGRhdGVkUXVvdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAKaW5kZXggZWU5Y2IxYTljYzI2NzJlNjgyNTM4MWUwNWY5OTQ4NjNhY2I4ZWZlYi4uYmZi
Nzc4NzVkYjk1Zjg5N2Y4NzFlY2FmZmRmNWI1MjVlMDU2OTNlZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcApAQCAtMjQ5LDE1ICsyNDksMTQgQEAgRWxlbWVu
dFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgUHNldWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgcHNldWRv
VXBkYXRlczsKLSAgICBpZiAoYXV0byBtYXJrZXJFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVk
b1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6Ok1hcmtlcikpCi0gICAgICAgIHBzZXVk
b1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpNYXJrZXIsIFdURk1vdmUoKm1hcmtlckVsZW1lbnRVcGRh
dGUpKTsKLSAgICBpZiAoYXV0byBiZWZvcmVFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0
eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJlZm9yZSkpCi0gICAgICAgIHBzZXVkb1Vw
ZGF0ZXMuc2V0KFBzZXVkb0lkOjpCZWZvcmUsIFdURk1vdmUoKmJlZm9yZUVsZW1lbnRVcGRhdGUp
KTsKLSAgICBpZiAoYXV0byBhZnRlckVsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUo
ZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpKQotICAgICAgICBwc2V1ZG9VcGRhdGVz
LnNldChQc2V1ZG9JZDo6QWZ0ZXIsIFdURk1vdmUoKmFmdGVyRWxlbWVudFVwZGF0ZSkpOwotICAg
IGlmIChhdXRvIGJhY2tkcm9wRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVt
ZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpCYWNrZHJvcCkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMu
c2V0KFBzZXVkb0lkOjpCYWNrZHJvcCwgV1RGTW92ZSgqYmFja2Ryb3BFbGVtZW50VXBkYXRlKSk7
CisgICAgaWYgKGF1dG8gcHNldWRvRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShl
bGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpNYXJrZXIpKQorICAgICAgICB1cGRhdGUuc3R5bGUt
PmFkZENhY2hlZFBzZXVkb1N0eWxlKFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZS0+c3R5bGUp
KTsKKyAgICBpZiAoYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxl
KGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJlZm9yZSkpCisgICAgICAgIHVwZGF0ZS5zdHls
ZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlLT5zdHls
ZSkpOworICAgIGlmIChhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5
bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpKQorICAgICAgICB1cGRhdGUuc3R5
bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZS0+c3R5
bGUpKTsKKyAgICBpZiAoYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0
eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJhY2tkcm9wKSkKKyAgICAgICAgdXBkYXRl
LnN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUt
PnN0eWxlKSk7CiAKICNpZiBFTkFCTEUoVE9VQ0hfQUNUSU9OX1JFR0lPTlMpCiAgICAgLy8gRklY
TUU6IFRyYWNrIHRoaXMgZXhhY3RseS4KQEAgLTI2OSw3ICsyNjgsNyBAQCBFbGVtZW50VXBkYXRl
cyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAg
IG1fZG9jdW1lbnQuc2V0TWF5SGF2ZUVkaXRhYmxlRWxlbWVudHMoKTsKICNlbmRpZgogCi0gICAg
cmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShw
c2V1ZG9VcGRhdGVzKSB9OworICAgIHJldHVybiB7IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFu
dHNUb1Jlc29sdmUgfTsKIH0KIAogc3RkOjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVlUmVz
b2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50
VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVVwZGF0ZS5oCmluZGV4IGMwZDRkMDZlYThmOWE0ODNlYzFhOTk1OTEyMmVjM2Y3MDg4NTll
ZjUuLjI2YTYyMWJjZDI4NGZhZmFiYzJmNDYxZjk4MTEwNWViZTY2NWY1YmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVVcGRhdGUuaApAQCAtNDksMTIgKzQ5LDkgQEAgc3RydWN0IEVsZW1lbnRVcGRh
dGUgewogCiBlbnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNvbHZlIHsgTm9uZSwgQ2hpbGRyZW5X
aXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07CiAKLXVzaW5nIFBzZXVkb0lkVG9F
bGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwgRWxlbWVudFVwZGF0ZSwgSW50SGFz
aDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFpdHM8UHNldWRvSWQ+PjsKLQogc3Ry
dWN0IEVsZW1lbnRVcGRhdGVzIHsKICAgICBFbGVtZW50VXBkYXRlIHVwZGF0ZTsKICAgICBEZXNj
ZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVzb2x2ZSB7IERlc2NlbmRhbnRzVG9SZXNv
bHZlOjpOb25lIH07Ci0gICAgUHNldWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgcHNldWRvRWxlbWVu
dFVwZGF0ZXM7CiB9OwogCiBzdHJ1Y3QgVGV4dFVwZGF0ZSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453719</attachid>
            <date>2022-03-03 04:31:30 -0800</date>
            <delta_ts>2022-03-03 05:28:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237413-20220303143128.patch</filename>
            <type>text/plain</type>
            <size>28147</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uNDU4ZjAwZDAyODczMDEyNjBjMDI4MTNiYWI3YWE3
NmVkYzQ2YTQ3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisyMDIyLTAzLTAzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwc2V1ZG8g
ZWxlbWVudCByZXNvbHV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzc0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBXZSBjYW4gYWRkIHBzZXVkbyBlbGVtZW50IHN0eWxlcyBkaXJlY3RseSB0byB0
aGVpciBwYXJlbnQgc3R5bGUgaW5zdGVhZCBvZiBoYXZpbmcgYSBzZXBhcmF0ZSBtYXAgZm9yIHRo
YXQuCisKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5k
ZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6
R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0
ZWRDb250ZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQpOgorICAg
ICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKIDIwMjItMDItMjggIEFudG9pbmUgUXVpbnQg
IDxncmFvdXRzQHdlYmtpdC5vcmc+CiAKICAgICAgICAgW3dlYi1hbmltYXRpb25zXSB3ZWItYW5p
bWF0aW9ucy9pbnRlcmZhY2VzL0tleWZyYW1lRWZmZWN0L3Byb2Nlc3NpbmctYS1rZXlmcmFtZXMt
YXJndW1lbnQtMDAxLmh0bWwgaXMgYSB1bmlxdWUgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXgg
M2VjNDUxYTk2MTM3ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uZjFkZmUxZWJjZDQ0OTYy
MDJjN2RjZTUwM2YwZjMxNDcyYmRhOTI2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC02OSw5ICs2OSw5
IEBAIFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290
KQogewogfQogCi1SZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQorUmVuZGVyVHJlZVVw
ZGF0ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVt
ZW50VXBkYXRlKiB1cGRhdGUpCiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQotICAgICwgdXBkYXRl
cyh1cGRhdGVzKQorICAgICwgdXBkYXRlKHVwZGF0ZSkKICAgICAsIHJlbmRlclRyZWVQb3NpdGlv
bihlbGVtZW50LnJlbmRlcmVyKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoUmVuZGVyVHJlZVBvc2l0
aW9uKCplbGVtZW50LnJlbmRlcmVyKCkpKSA6IHN0ZDo6bnVsbG9wdCkKIHsKIH0KQEAgLTE2Nyw3
ICsxNjcsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRh
aW5lck5vZGUmIHJvb3QpCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAgICAgICAg
ICAgYXV0byYgdGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAgYXV0byog
dGV4dFVwZGF0ZSA9IG1fc3R5bGVVcGRhdGUtPnRleHRVcGRhdGUodGV4dCk7Ci0gICAgICAgICAg
ICBib29sIGRpZENyZWF0ZVBhcmVudCA9IHBhcmVudCgpLnVwZGF0ZXMgJiYgcGFyZW50KCkudXBk
YXRlcy0+dXBkYXRlLmNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAg
ICAgIGJvb2wgZGlkQ3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlICYmIHBhcmVudCgpLnVw
ZGF0ZS0+Y2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyOwogICAgICAgICAgICAgYm9v
bCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudCgp
LmRpZENyZWF0ZU9yRGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5kYXRhKCkuaXNBbGxTcGVj
aWFsQ2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICAgICAgICAgIGlmIChkaWRDcmVhdGVQ
YXJlbnQgfHwgdGV4dFVwZGF0ZSB8fCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJl
cikKICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0UmVuZGVyZXIodGV4dCwgdGV4dFVwZGF0ZSk7
CkBAIC0xNzksMTggKzE3OSwxOCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5k
ZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAKICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRv
d25jYXN0PEVsZW1lbnQ+KG5vZGUpOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnRVcGRhdGVzID0g
bV9zdHlsZVVwZGF0ZS0+ZWxlbWVudFVwZGF0ZXMoZWxlbWVudCk7CisgICAgICAgIGF1dG8qIGVs
ZW1lbnRVcGRhdGUgPSBtX3N0eWxlVXBkYXRlLT5lbGVtZW50VXBkYXRlKGVsZW1lbnQpOwogCiAg
ICAgICAgIC8vIFdlIGhvcCB0aHJvdWdoIGRpc3BsYXk6IGNvbnRlbnRzIGVsZW1lbnRzIGluIGZp
bmRSZW5kZXJpbmdSb290LCBzbwogICAgICAgICAvLyB0aGVyZSBtYXkgYmUgb3RoZXIgdXBkYXRl
cyBkb3duIHRoZSB0cmVlLgotICAgICAgICBpZiAoIWVsZW1lbnRVcGRhdGVzICYmICFlbGVtZW50
Lmhhc0Rpc3BsYXlDb250ZW50cygpKSB7CisgICAgICAgIGlmICghZWxlbWVudFVwZGF0ZSAmJiAh
ZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSkgewogICAgICAgICAgICAgc3RvcmVQcmV2aW91
c1JlbmRlcmVyKGVsZW1lbnQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdD
aGlsZHJlbigpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoZWxlbWVudFVwZGF0ZXMpCi0gICAgICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxl
bWVudCwgKmVsZW1lbnRVcGRhdGVzKTsKKyAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUpCisgICAg
ICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGUpOwog
CiAgICAgICAgIHN0b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIApAQCAtMjAwLDcgKzIw
MCw3IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVy
Tm9kZSYgcm9vdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAg
cHVzaFBhcmVudChlbGVtZW50LCBlbGVtZW50VXBkYXRlcyk7CisgICAgICAgIHB1c2hQYXJlbnQo
ZWxlbWVudCwgZWxlbWVudFVwZGF0ZSk7CiAKICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CiAg
ICAgfQpAQCAtMjIzLDE4ICsyMjMsMTggQEAgUmVuZGVyVHJlZVBvc2l0aW9uJiBSZW5kZXJUcmVl
VXBkYXRlcjo6cmVuZGVyVHJlZVBvc2l0aW9uKCkKICAgICByZXR1cm4gKnJlbmRlcmluZ1BhcmVu
dCgpLnJlbmRlclRyZWVQb3NpdGlvbjsKIH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cHVz
aFBhcmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVw
ZGF0ZXMpCit2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwdXNoUGFyZW50KEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB1cGRhdGUpCiB7Ci0gICAgbV9wYXJlbnRT
dGFjay5hcHBlbmQoUGFyZW50KGVsZW1lbnQsIHVwZGF0ZXMpKTsKKyAgICBtX3BhcmVudFN0YWNr
LmFwcGVuZChQYXJlbnQoZWxlbWVudCwgdXBkYXRlKSk7CiAKLSAgICB1cGRhdGVCZWZvcmVEZXNj
ZW5kYW50cyhlbGVtZW50LCB1cGRhdGVzKTsKKyAgICB1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhl
bGVtZW50LCB1cGRhdGUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwb3BQYXJlbnQo
KQogewogICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2subGFzdCgpOwogICAgIGlmIChw
YXJlbnQuZWxlbWVudCkKLSAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygqcGFyZW50LmVs
ZW1lbnQsIHBhcmVudC51cGRhdGVzKTsKKyAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygq
cGFyZW50LmVsZW1lbnQsIHBhcmVudC51cGRhdGUpOwogCiAgICAgaWYgKCZwYXJlbnQgIT0gJnJl
bmRlcmluZ1BhcmVudCgpKQogICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5pbnZhbGlkYXRl
TmV4dFNpYmxpbmcoKTsKQEAgLTI1MCwxNiArMjUwLDE2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0
ZXI6OnBvcFBhcmVudHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKQogICAgICAgICBwb3BQYXJlbnQo
KTsKIH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQor
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYg
ZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSkKIHsKLSAgICBpZiAo
dXBkYXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQo
ZWxlbWVudCwgKnVwZGF0ZXMsIFBzZXVkb0lkOjpCZWZvcmUpOworICAgIGlmICh1cGRhdGUpCisg
ICAgICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsICp1
cGRhdGUsIFBzZXVkb0lkOjpCZWZvcmUpOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVt
ZW50VXBkYXRlcyogdXBkYXRlcykKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVy
RGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUq
IHVwZGF0ZSkKIHsKLSAgICBpZiAodXBkYXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgp
LnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgKnVwZGF0ZXMsIFBzZXVkb0lkOjpBZnRlcik7
CisgICAgaWYgKHVwZGF0ZSkKKyAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVk
b0VsZW1lbnQoZWxlbWVudCwgKnVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1dG8q
IHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0y
NjgsNyArMjY4LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5k
YW50cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWwKICAgICBnZW5lcmF0ZWRDb250
ZW50KCkudXBkYXRlQmFja2Ryb3BSZW5kZXJlcigqcmVuZGVyZXIpOwogICAgIG1fYnVpbGRlci51
cGRhdGVBZnRlckRlc2NlbmRhbnRzKCpyZW5kZXJlcik7CiAKLSAgICBpZiAoZWxlbWVudC5oYXND
dXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSAmJiB1cGRhdGVzICYmIHVwZGF0ZXMtPnVwZGF0
ZS5jaGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6UmVuZGVyZXIpCisgICAgaWYgKGVsZW1lbnQuaGFz
Q3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkgJiYgdXBkYXRlICYmIHVwZGF0ZS0+Y2hhbmdl
ID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyKQogICAgICAgICBlbGVtZW50LmRpZEF0dGFjaFJl
bmRlcmVycygpOwogfQogCkBAIC0zMDAsMjAgKzMwMCwyMSBAQCB2b2lkIFJlbmRlclRyZWVVcGRh
dGVyOjp1cGRhdGVSZW5kZXJlclN0eWxlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXJT
dHlsZQogICAgIG1fYnVpbGRlci5ub3JtYWxpemVUcmVlQWZ0ZXJTdHlsZUNoYW5nZShyZW5kZXJl
ciwgb2xkU3R5bGUpOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50
UmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzJiB1
cGRhdGVzKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRl
KQogewogI2lmIEVOQUJMRShDT05URU5UX0NIQU5HRV9PQlNFUlZFUikKICAgICBDb250ZW50Q2hh
bmdlT2JzZXJ2ZXI6OlN0eWxlQ2hhbmdlU2NvcGUgb2JzZXJ2aW5nU2NvcGUobV9kb2N1bWVudCwg
ZWxlbWVudCk7CiAjZW5kaWYKIAotICAgIGF1dG8mIGVsZW1lbnRVcGRhdGUgPSB1cGRhdGVzLnVw
ZGF0ZTsKICAgICBhdXRvIGVsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0
cigqZWxlbWVudFVwZGF0ZS5zdHlsZSk7CiAKLSAgICBmb3IgKGF1dG8mIGl0IDogdXBkYXRlcy5w
c2V1ZG9FbGVtZW50VXBkYXRlcykgewotICAgICAgICBhdXRvIHBzZXVkb0lkID0gaXQua2V5Owot
ICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9JZCA9PSBQ
c2V1ZG9JZDo6QWZ0ZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxlbWVudFVw
ZGF0ZVN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0
LnZhbHVlLnN0eWxlKSk7CisgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUtPmNhY2hlZFBzZXVk
b1N0eWxlcygpKSB7CisgICAgICAgIGZvciAoYXV0byYgcHNldWRvRWxlbWVudFN0eWxlIDogKmVs
ZW1lbnRVcGRhdGUuc3R5bGUtPmNhY2hlZFBzZXVkb1N0eWxlcygpKSB7CisgICAgICAgICAgICBh
dXRvIHBzZXVkb0lkID0gcHNldWRvRWxlbWVudFN0eWxlLT5zdHlsZVR5cGUoKTsKKyAgICAgICAg
ICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IHBzZXVkb0lkID09IFBzZXVk
b0lkOjpBZnRlcikKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGVsZW1l
bnRVcGRhdGVTdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCpwc2V1ZG9FbGVtZW50U3R5bGUpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGJvb2wgc2hv
dWxkVGVhckRvd25SZW5kZXJlcnMgPSBlbGVtZW50VXBkYXRlLmNoYW5nZSA9PSBTdHlsZTo6Q2hh
bmdlOjpSZW5kZXJlciAmJiAoZWxlbWVudC5yZW5kZXJlcigpIHx8IGVsZW1lbnQuaGFzRGlzcGxh
eUNvbnRlbnRzKCkgfHwgZWxlbWVudC5pc0luVG9wTGF5ZXIoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCmluZGV4IGI3
OWIwNTNkZTE5MzRkNDlkYzI5ODRhOWIwMzllNWM0ZDgyYTM4ZmMuLjI2ODY4ZGNhNjQ5MzJhZWVm
ODcwMTBjZjcyZjRjMTI0ZmRjNDU4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oCkBAIC01OCwyNCArNTgsMjQgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9kZSYgcm9vdCk7
CiAgICAgdm9pZCB1cGRhdGVUZXh0UmVuZGVyZXIoVGV4dCYsIGNvbnN0IFN0eWxlOjpUZXh0VXBk
YXRlKik7CiAgICAgdm9pZCBjcmVhdGVUZXh0UmVuZGVyZXIoVGV4dCYsIGNvbnN0IFN0eWxlOjpU
ZXh0VXBkYXRlKik7Ci0gICAgdm9pZCB1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYsIGNv
bnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyYpOworICAgIHZvaWQgdXBkYXRlRWxlbWVudFJlbmRl
cmVyKEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSYpOwogICAgIHZvaWQgdXBk
YXRlUmVuZGVyZXJTdHlsZShSZW5kZXJFbGVtZW50JiwgUmVuZGVyU3R5bGUmJiwgU3R5bGVEaWZm
ZXJlbmNlKTsKICAgICB2b2lkIGNyZWF0ZVJlbmRlcmVyKEVsZW1lbnQmLCBSZW5kZXJTdHlsZSYm
KTsKLSAgICB2b2lkIHVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKEVsZW1lbnQmLCBjb25zdCBTdHls
ZTo6RWxlbWVudFVwZGF0ZXMqKTsKLSAgICB2b2lkIHVwZGF0ZUFmdGVyRGVzY2VuZGFudHMoRWxl
bWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyopOworICAgIHZvaWQgdXBkYXRlQmVm
b3JlRGVzY2VuZGFudHMoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKik7Cisg
ICAgdm9pZCB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxl
bWVudFVwZGF0ZSopOwogICAgIGJvb2wgdGV4dFJlbmRlcmVySXNOZWVkZWQoY29uc3QgVGV4dCYg
dGV4dE5vZGUpOwogICAgIHZvaWQgc3RvcmVQcmV2aW91c1JlbmRlcmVyKE5vZGUmKTsKIAogICAg
IHN0cnVjdCBQYXJlbnQgewogICAgICAgICBFbGVtZW50KiBlbGVtZW50IHsgbnVsbHB0ciB9Owot
ICAgICAgICBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMgeyBudWxscHRyIH07
CisgICAgICAgIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB1cGRhdGUgeyBudWxscHRyIH07
CiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8UmVuZGVyVHJlZVBvc2l0aW9uPiByZW5kZXJUcmVlUG9z
aXRpb247CiAKICAgICAgICAgYm9vbCBkaWRDcmVhdGVPckRlc3Ryb3lDaGlsZFJlbmRlcmVyIHsg
ZmFsc2UgfTsKICAgICAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c0NoaWxkUmVuZGVyZXIgeyBu
dWxscHRyIH07CiAKICAgICAgICAgUGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpOwotICAgICAg
ICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyopOworICAgICAg
ICBQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKik7CiAgICAgfTsK
ICAgICBQYXJlbnQmIHBhcmVudCgpIHsgcmV0dXJuIG1fcGFyZW50U3RhY2subGFzdCgpOyB9CiAg
ICAgUGFyZW50JiByZW5kZXJpbmdQYXJlbnQoKTsKQEAgLTgzLDcgKzgzLDcgQEAgcHJpdmF0ZToK
IAogICAgIEdlbmVyYXRlZENvbnRlbnQmIGdlbmVyYXRlZENvbnRlbnQoKSB7IHJldHVybiAqbV9n
ZW5lcmF0ZWRDb250ZW50OyB9CiAKLSAgICB2b2lkIHB1c2hQYXJlbnQoRWxlbWVudCYsIGNvbnN0
IFN0eWxlOjpFbGVtZW50VXBkYXRlcyopOworICAgIHZvaWQgcHVzaFBhcmVudChFbGVtZW50Jiwg
Y29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsKICAgICB2b2lkIHBvcFBhcmVudCgpOwogICAg
IHZvaWQgcG9wUGFyZW50c1RvRGVwdGgodW5zaWduZWQgZGVwdGgpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0
ZWRDb250ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCmluZGV4IDY0NThkMTRiOGRjNTY4NjFmMDM3
NjBjNWNkMjNkM2JkMmI5MzU2N2EuLmU4YjllZTUyZjA3OGUxMTgxMDE1MjkwYWEzNDQ1MzhkZTM5
Yjc2NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5k
ZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuY3BwCkBA
IC0xMDcsMjEgKzEwNywxNiBAQCBzdGF0aWMgdm9pZCB1cGRhdGVTdHlsZUZvckNvbnRlbnRSZW5k
ZXJlcnMoUmVuZGVyRWxlbWVudCYgcHNldWRvUmVuZGVyZXIsIGNvbnN0CiAgICAgfQogfQogCi12
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVt
ZW50KEVsZW1lbnQmIGN1cnJlbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyYgdXBkYXRl
cywgUHNldWRvSWQgcHNldWRvSWQpCit2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRD
b250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGN1cnJlbnQsIGNvbnN0IFN0eWxl
OjpFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKICAg
ICBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50ID0gcHNldWRvSWQgPT0gUHNldWRvSWQ6OkJl
Zm9yZSA/IGN1cnJlbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpIDogY3VycmVudC5hZnRlclBzZXVk
b0VsZW1lbnQoKTsKIAogICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHBzZXVkb0VsZW1lbnQgPyBw
c2V1ZG9FbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cikKICAgICAgICAgbV91cGRhdGVyLnJl
bmRlclRyZWVQb3NpdGlvbigpLmludmFsaWRhdGVOZXh0U2libGluZygqcmVuZGVyZXIpOwogCi0g
ICAgYXV0byogdXBkYXRlID0gWyZdKCkgLT4gY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHsK
LSAgICAgICAgYXV0byBpdGVyYXRvciA9IHVwZGF0ZXMucHNldWRvRWxlbWVudFVwZGF0ZXMuZmlu
ZChwc2V1ZG9JZCk7Ci0gICAgICAgIGlmIChpdGVyYXRvciAhPSB1cGRhdGVzLnBzZXVkb0VsZW1l
bnRVcGRhdGVzLmVuZCgpKQotICAgICAgICAgICAgcmV0dXJuICZpdGVyYXRvci0+dmFsdWU7Ci0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIH0oKTsKKyAgICBhdXRvKiB1cGRhdGVTdHlsZSA9
IGVsZW1lbnRVcGRhdGUuc3R5bGUgPyBlbGVtZW50VXBkYXRlLnN0eWxlLT5nZXRDYWNoZWRQc2V1
ZG9TdHlsZShwc2V1ZG9JZCkgOiBudWxscHRyOwogCi0gICAgaWYgKCFuZWVkc1BzZXVkb0VsZW1l
bnQodXBkYXRlKSAmJiAhZWxlbWVudElzVGFyZ2V0ZWRCeUtleWZyYW1lRWZmZWN0UmVxdWlyaW5n
UHNldWRvRWxlbWVudCgmY3VycmVudCwgcHNldWRvSWQpKSB7CisgICAgaWYgKCFuZWVkc1BzZXVk
b0VsZW1lbnQodXBkYXRlU3R5bGUpICYmICFlbGVtZW50SXNUYXJnZXRlZEJ5S2V5ZnJhbWVFZmZl
Y3RSZXF1aXJpbmdQc2V1ZG9FbGVtZW50KCZjdXJyZW50LCBwc2V1ZG9JZCkpIHsKICAgICAgICAg
aWYgKHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9J
ZDo6QmVmb3JlKQogICAgICAgICAgICAgICAgIHJlbW92ZUJlZm9yZVBzZXVkb0VsZW1lbnQoY3Vy
cmVudCwgbV91cGRhdGVyLm1fYnVpbGRlcik7CkBAIC0xMzEsMjggKzEyNiwzMiBAQCB2b2lkIFJl
bmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KEVs
ZW1lbnQmIGN1cnJlbnQsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXVwZGF0
ZSB8fCB1cGRhdGUtPmNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdlOjpOb25lKQorICAgIGlmICghdXBk
YXRlU3R5bGUpCisgICAgICAgIHJldHVybjsKKworICAgIGF1dG8qIGV4aXN0aW5nU3R5bGUgPSBw
c2V1ZG9FbGVtZW50ID8gcHNldWRvRWxlbWVudC0+cmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHls
ZSgpIDogbnVsbHB0cjsKKworICAgIGF1dG8gc3R5bGVDaGFuZ2UgPSBleGlzdGluZ1N0eWxlID8g
U3R5bGU6OmRldGVybWluZUNoYW5nZSgqdXBkYXRlU3R5bGUsICpleGlzdGluZ1N0eWxlKSA6IFN0
eWxlOjpDaGFuZ2U6OlJlbmRlcmVyOworICAgIGlmIChzdHlsZUNoYW5nZSA9PSBTdHlsZTo6Q2hh
bmdlOjpOb25lKQogICAgICAgICByZXR1cm47CiAKICAgICBwc2V1ZG9FbGVtZW50ID0gJmN1cnJl
bnQuZW5zdXJlUHNldWRvRWxlbWVudChwc2V1ZG9JZCk7CiAKLSAgICBpZiAodXBkYXRlLT5zdHls
ZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykgeworICAgIGlmICh1cGRhdGVT
dHlsZS0+ZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpDb250ZW50cykgewogICAgICAgICAvLyBG
b3IgZGlzcGxheTpjb250ZW50cyB3ZSBjcmVhdGUgYW4gaW5saW5lIHdyYXBwZXIgdGhhdCBpbmhl
cml0cyBpdHMKICAgICAgICAgLy8gc3R5bGUgZnJvbSB0aGUgZGlzcGxheTpjb250ZW50cyBzdHls
ZS4KICAgICAgICAgYXV0byBjb250ZW50c1N0eWxlID0gUmVuZGVyU3R5bGU6OmNyZWF0ZVB0cigp
OwogICAgICAgICBjb250ZW50c1N0eWxlLT5zZXRTdHlsZVR5cGUocHNldWRvSWQpOwotICAgICAg
ICBjb250ZW50c1N0eWxlLT5pbmhlcml0RnJvbSgqdXBkYXRlLT5zdHlsZSk7Ci0gICAgICAgIGNv
bnRlbnRzU3R5bGUtPmNvcHlDb250ZW50RnJvbSgqdXBkYXRlLT5zdHlsZSk7CisgICAgICAgIGNv
bnRlbnRzU3R5bGUtPmluaGVyaXRGcm9tKCp1cGRhdGVTdHlsZSk7CisgICAgICAgIGNvbnRlbnRz
U3R5bGUtPmNvcHlDb250ZW50RnJvbSgqdXBkYXRlU3R5bGUpOwogCi0gICAgICAgIFN0eWxlOjpF
bGVtZW50VXBkYXRlIGNvbnRlbnRzVXBkYXRlIHsgV1RGTW92ZShjb250ZW50c1N0eWxlKSwgdXBk
YXRlLT5jaGFuZ2UsIHVwZGF0ZS0+cmVjb21wb3NpdGVMYXllciB9OwotICAgICAgICBTdHlsZTo6
RWxlbWVudFVwZGF0ZXMgY29udGVudHNVcGRhdGVzIHsgV1RGTW92ZShjb250ZW50c1VwZGF0ZSks
IFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07Ci0gICAgICAgIG1fdXBk
YXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUoY29udGVu
dHNVcGRhdGVzKSk7Ci0gICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNvbnRlbnRz
U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGUtPnN0eWxlKSk7CisgICAgICAgIFN0
eWxlOjpFbGVtZW50VXBkYXRlIGNvbnRlbnRzVXBkYXRlIHsgV1RGTW92ZShjb250ZW50c1N0eWxl
KSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllciB9OworICAgICAg
ICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3Zl
KGNvbnRlbnRzVXBkYXRlKSk7CisgICAgICAgIHBzZXVkb0VsZW1lbnQtPnN0b3JlRGlzcGxheUNv
bnRlbnRzU3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGVTdHlsZSkpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGF1dG8gcHNldWRvRWxlbWVudFVwZGF0ZVN0eWxlID0gUmVuZGVyU3R5
bGU6OmNsb25lUHRyKCp1cGRhdGUtPnN0eWxlKTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRh
dGUgcHNldWRvRWxlbWVudFVwZGF0ZSB7IFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZVN0eWxl
KSwgdXBkYXRlLT5jaGFuZ2UsIHVwZGF0ZS0+cmVjb21wb3NpdGVMYXllciB9OwotICAgICAgICBT
dHlsZTo6RWxlbWVudFVwZGF0ZXMgcHNldWRvRWxlbWVudFVwZGF0ZXMgeyBXVEZNb3ZlKHBzZXVk
b0VsZW1lbnRVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUsIHsgfSB9
OwotICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50
LCBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVzKSk7CisgICAgICAgIGF1dG8gcHNldWRvRWxl
bWVudFVwZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCp1cGRhdGVTdHlsZSk7Cisg
ICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUgeyBXVEZNb3Zl
KHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSksIHN0eWxlQ2hhbmdlLCBlbGVtZW50VXBkYXRlLnJl
Y29tcG9zaXRlTGF5ZXIgfTsKKyAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1lbnRSZW5kZXJl
cigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlKSk7CiAgICAgICAg
IEFTU0VSVCghcHNldWRvRWxlbWVudC0+aGFzRGlzcGxheUNvbnRlbnRzKCkpOwogICAgIH0KIApA
QCAtMTYwLDEwICsxNTksMTAgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29u
dGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LAogICAgIGlmICghcHNl
dWRvRWxlbWVudFJlbmRlcmVyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAodXBkYXRlLT5j
aGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6UmVuZGVyZXIpCi0gICAgICAgIGNyZWF0ZUNvbnRlbnRS
ZW5kZXJlcnMobV91cGRhdGVyLm1fYnVpbGRlciwgKnBzZXVkb0VsZW1lbnRSZW5kZXJlciwgKnVw
ZGF0ZS0+c3R5bGUsIHBzZXVkb0lkKTsKKyAgICBpZiAoc3R5bGVDaGFuZ2UgPT0gU3R5bGU6OkNo
YW5nZTo6UmVuZGVyZXIpCisgICAgICAgIGNyZWF0ZUNvbnRlbnRSZW5kZXJlcnMobV91cGRhdGVy
Lm1fYnVpbGRlciwgKnBzZXVkb0VsZW1lbnRSZW5kZXJlciwgKnVwZGF0ZVN0eWxlLCBwc2V1ZG9J
ZCk7CiAgICAgZWxzZQotICAgICAgICB1cGRhdGVTdHlsZUZvckNvbnRlbnRSZW5kZXJlcnMoKnBz
ZXVkb0VsZW1lbnRSZW5kZXJlciwgKnVwZGF0ZS0+c3R5bGUpOworICAgICAgICB1cGRhdGVTdHls
ZUZvckNvbnRlbnRSZW5kZXJlcnMoKnBzZXVkb0VsZW1lbnRSZW5kZXJlciwgKnVwZGF0ZVN0eWxl
KTsKIAogICAgIGlmIChtX3VwZGF0ZXIucmVuZGVyVmlldygpLmhhc1F1b3Rlc05lZWRpbmdVcGRh
dGUoKSkgewogICAgICAgICBmb3IgKGF1dG8mIGNoaWxkIDogZGVzY2VuZGFudHNPZlR5cGU8UmVu
ZGVyUXVvdGU+KCpwc2V1ZG9FbGVtZW50UmVuZGVyZXIpKQpAQCAtMTk1LDEzICsxOTQsMTMgQEAg
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlQmFja2Ryb3BS
ZW5kZXJlcihSZW5kZXJFbGVtZW50JgogICAgIH0KIH0KIAotYm9vbCBSZW5kZXJUcmVlVXBkYXRl
cjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50KGNvbnN0IFN0eWxlOjpFbGVt
ZW50VXBkYXRlKiB1cGRhdGUpCitib29sIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250
ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxlKQogewotICAg
IGlmICghdXBkYXRlKQorICAgIGlmICghc3R5bGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAg
ICBpZiAoIW1fdXBkYXRlci5yZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKS5jYW5IYXZlR2Vu
ZXJhdGVkQ2hpbGRyZW4oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGlmICghcHNldWRv
RWxlbWVudFJlbmRlcmVySXNOZWVkZWQodXBkYXRlLT5zdHlsZS5nZXQoKSkpCisgICAgaWYgKCFw
c2V1ZG9FbGVtZW50UmVuZGVyZXJJc05lZWRlZChzdHlsZSkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENv
bnRlbnQuaAppbmRleCBmM2YwMTZkZDY4NzhjMjUxYzkxODQ5YTU4OTM0ODE5ZWZhN2Q4MGFmLi41
Y2Y0ZjlkMWVlMWQ3NjlkYmRhMGFiYTlmOTdiZmFiZjAyMzVlZDcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRD
b250ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oCkBAIC0zOSw3ICszOSw3IEBAIHB1YmxpYzoKICAg
ICBHZW5lcmF0ZWRDb250ZW50KFJlbmRlclRyZWVVcGRhdGVyJik7CiAKICAgICB2b2lkIHVwZGF0
ZUJhY2tkcm9wUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYpOwotICAgIHZvaWQgdXBkYXRlUHNldWRv
RWxlbWVudChFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzJiwgUHNldWRvSWQp
OworICAgIHZvaWQgdXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAgICAgdm9pZCB1cGRhdGVSZW1haW5pbmdRdW90ZXMo
KTsKIAogICAgIHN0YXRpYyB2b2lkIHJlbW92ZUJlZm9yZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYs
IFJlbmRlclRyZWVCdWlsZGVyJik7CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVRdW90ZXNVcFRvKFJlbmRlclF1b3RlKik7CiAgICAgCi0gICAgYm9v
bCBuZWVkc1BzZXVkb0VsZW1lbnQoY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsKKyAgICBi
b29sIG5lZWRzUHNldWRvRWxlbWVudChjb25zdCBSZW5kZXJTdHlsZSopOwogCiAgICAgUmVuZGVy
VHJlZVVwZGF0ZXImIG1fdXBkYXRlcjsKICAgICBXZWFrUHRyPFJlbmRlclF1b3RlPiBtX3ByZXZp
b3VzVXBkYXRlZFF1b3RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwCmluZGV4IGVlOWNiMWE5Y2MyNjcyZTY4MjUzODFlMDVmOTk0ODYzYWNiOGVmZWIuLmEyMWIz
MTY4YTcyNDkzMzc4YjA5YjhmYjRiNDk1OTZkZGQ1M2EwY2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTE3Niw3ICsxNzYsNyBAQCBzdGF0aWMgYm9v
bCBhZmZlY3RzUmVuZGVyZWRTdWJ0cmVlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0
eWxlJiBuZXdTdHlsZQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotc3RhdGljIERlc2NlbmRhbnRz
VG9SZXNvbHZlIGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZShDaGFuZ2UgY2hhbmdlLCBWYWxp
ZGl0eSB2YWxpZGl0eSwgRGVzY2VuZGFudHNUb1Jlc29sdmUgcGFyZW50RGVzY2VuZGFudHNUb1Jl
c29sdmUpCithdXRvIFRyZWVSZXNvbHZlcjo6Y29tcHV0ZURlc2NlbmRhbnRzVG9SZXNvbHZlKENo
YW5nZSBjaGFuZ2UsIFZhbGlkaXR5IHZhbGlkaXR5LCBEZXNjZW5kYW50c1RvUmVzb2x2ZSBwYXJl
bnREZXNjZW5kYW50c1RvUmVzb2x2ZSkgLT4gRGVzY2VuZGFudHNUb1Jlc29sdmUKIHsKICAgICBp
ZiAocGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUgPT0gRGVzY2VuZGFudHNUb1Jlc29sdmU6OkFs
bCkKICAgICAgICAgcmV0dXJuIERlc2NlbmRhbnRzVG9SZXNvbHZlOjpBbGw7CkBAIC0xOTYsNyAr
MTk2LDcgQEAgc3RhdGljIERlc2NlbmRhbnRzVG9SZXNvbHZlIGNvbXB1dGVEZXNjZW5kYW50c1Rv
UmVzb2x2ZShDaGFuZ2UgY2hhbmdlLCBWYWxpZGl0eQogICAgIHJldHVybiBEZXNjZW5kYW50c1Rv
UmVzb2x2ZTo6Tm9uZTsKIH07CiAKLUVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2
ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK2F1dG8gVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KSAtPiBzdGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwgRGVzY2Vu
ZGFudHNUb1Jlc29sdmU+CiB7CiAgICAgaWYgKG1fZGlkU2VlUGVuZGluZ1N0eWxlc2hlZXQgJiYg
IWVsZW1lbnQucmVuZGVyZXIoKSAmJiAhbV9kb2N1bWVudC5pc0lnbm9yaW5nUGVuZGluZ1N0eWxl
c2hlZXRzKCkpIHsKICAgICAgICAgbV9kb2N1bWVudC5zZXRIYXNOb2Rlc1dpdGhNaXNzaW5nU3R5
bGUoKTsKQEAgLTI0OSwxNSArMjQ5LDE0IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6
cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgfQogICAgIH0KIAotICAg
IFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwIHBzZXVkb1VwZGF0ZXM7Ci0gICAgaWYgKGF1dG8g
bWFya2VyRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUs
IFBzZXVkb0lkOjpNYXJrZXIpKQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6
TWFya2VyLCBXVEZNb3ZlKCptYXJrZXJFbGVtZW50VXBkYXRlKSk7Ci0gICAgaWYgKGF1dG8gYmVm
b3JlRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBz
ZXVkb0lkOjpCZWZvcmUpKQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6QmVm
b3JlLCBXVEZNb3ZlKCpiZWZvcmVFbGVtZW50VXBkYXRlKSk7Ci0gICAgaWYgKGF1dG8gYWZ0ZXJF
bGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRv
SWQ6OkFmdGVyKSkKLSAgICAgICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6OkFmdGVyLCBX
VEZNb3ZlKCphZnRlckVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBiYWNrZHJvcEVsZW1l
bnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6
QmFja2Ryb3ApKQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6QmFja2Ryb3As
IFdURk1vdmUoKmJhY2tkcm9wRWxlbWVudFVwZGF0ZSkpOworICAgIGlmIChhdXRvIHBzZXVkb0Vs
ZW1lbnRVcGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9J
ZDo6TWFya2VyKSkKKyAgICAgICAgdXBkYXRlLnN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShX
VEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnN0eWxlKSk7CisgICAgaWYgKGF1dG8gcHNldWRv
RWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVk
b0lkOjpCZWZvcmUpKQorICAgICAgICB1cGRhdGUuc3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxl
KFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZS0+c3R5bGUpKTsKKyAgICBpZiAoYXV0byBwc2V1
ZG9FbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNl
dWRvSWQ6OkFmdGVyKSkKKyAgICAgICAgdXBkYXRlLnN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHls
ZShXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnN0eWxlKSk7CisgICAgaWYgKGF1dG8gcHNl
dWRvRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBz
ZXVkb0lkOjpCYWNrZHJvcCkpCisgICAgICAgIHVwZGF0ZS5zdHlsZS0+YWRkQ2FjaGVkUHNldWRv
U3R5bGUoV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlLT5zdHlsZSkpOwogCiAjaWYgRU5BQkxF
KFRPVUNIX0FDVElPTl9SRUdJT05TKQogICAgIC8vIEZJWE1FOiBUcmFjayB0aGlzIGV4YWN0bHku
CkBAIC0yNjksNyArMjY4LDcgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZl
RWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2RvY3VtZW50LnNldE1heUhhdmVF
ZGl0YWJsZUVsZW1lbnRzKCk7CiAjZW5kaWYKIAotICAgIHJldHVybiB7IFdURk1vdmUodXBkYXRl
KSwgZGVzY2VuZGFudHNUb1Jlc29sdmUsIFdURk1vdmUocHNldWRvVXBkYXRlcykgfTsKKyAgICBy
ZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9SZXNvbHZlIH07CiB9CiAKIHN0
ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gVHJlZVJlc29sdmVyOjpyZXNvbHZlUHNldWRvU3R5
bGUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgRWxlbWVudFVwZGF0ZSYgZWxlbWVudFVwZGF0ZSwg
UHNldWRvSWQgcHNldWRvSWQpCkBAIC00NDcsNyArNDQ2LDcgQEAgc3RhdGljIGJvb2wgc2hvdWxk
UmVzb2x2ZVBzZXVkb0VsZW1lbnQoY29uc3QgUHNldWRvRWxlbWVudCogcHNldWRvRWxlbWVudCkK
ICAgICByZXR1cm4gcHNldWRvRWxlbWVudC0+bmVlZHNTdHlsZVJlY2FsYygpOwogfQogCi1zdGF0
aWMgYm9vbCBzaG91bGRSZXNvbHZlRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBEZXNj
ZW5kYW50c1RvUmVzb2x2ZSBwYXJlbnREZXNjZW5kYW50c1RvUmVzb2x2ZSkKK2Jvb2wgVHJlZVJl
c29sdmVyOjpzaG91bGRSZXNvbHZlRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50LCBEZXNj
ZW5kYW50c1RvUmVzb2x2ZSBwYXJlbnREZXNjZW5kYW50c1RvUmVzb2x2ZSkKIHsKICAgICBpZiAo
ZWxlbWVudC5zdHlsZVZhbGlkaXR5KCkgIT0gVmFsaWRpdHk6OlZhbGlkKQogICAgICAgICByZXR1
cm4gdHJ1ZTsKQEAgLTUwNiw3ICs1MDUsNyBAQCBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBjcmVhdGVJbmhlcml0ZWREaXNwbGF5Q29udGVudHNTdHlsZUlmTmVlZGVkKAogICAg
IHJldHVybiBzdHlsZTsKIH0KIAotc3RhdGljIHZvaWQgcmVzZXREZXNjZW5kYW50U3R5bGVSZWxh
dGlvbnMoRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFudHNU
b1Jlc29sdmUpCit2b2lkIFRyZWVSZXNvbHZlcjo6cmVzZXREZXNjZW5kYW50U3R5bGVSZWxhdGlv
bnMoRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVzY2VuZGFudHNUb1Jl
c29sdmUpCiB7CiAgICAgc3dpdGNoIChkZXNjZW5kYW50c1RvUmVzb2x2ZSkgewogICAgIGNhc2Ug
RGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmU6CkBAIC01NzYsMTcgKzU3NSwxNyBAQCB2b2lkIFRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSgpCiAgICAgICAgICAgICBpZiAoZWxlbWVu
dC5oYXNDdXN0b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSkKICAgICAgICAgICAgICAgICBlbGVt
ZW50LndpbGxSZWNhbGNTdHlsZShwYXJlbnQuY2hhbmdlKTsKIAotICAgICAgICAgICAgYXV0byBl
bGVtZW50VXBkYXRlcyA9IHJlc29sdmVFbGVtZW50KGVsZW1lbnQpOworICAgICAgICAgICAgYXV0
byBbZWxlbWVudFVwZGF0ZSwgZWxlbWVudERlc2NlbmRhbnRzVG9SZXNvbHZlXSA9IHJlc29sdmVF
bGVtZW50KGVsZW1lbnQpOwogCiAgICAgICAgICAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHls
ZVJlc29sdmVDYWxsYmFja3MoKSkKLSAgICAgICAgICAgICAgICBlbGVtZW50LmRpZFJlY2FsY1N0
eWxlKGVsZW1lbnRVcGRhdGVzLnVwZGF0ZS5jaGFuZ2UpOworICAgICAgICAgICAgICAgIGVsZW1l
bnQuZGlkUmVjYWxjU3R5bGUoZWxlbWVudFVwZGF0ZS5jaGFuZ2UpOwogCi0gICAgICAgICAgICBz
dHlsZSA9IGVsZW1lbnRVcGRhdGVzLnVwZGF0ZS5zdHlsZS5nZXQoKTsKLSAgICAgICAgICAgIGNo
YW5nZSA9IGVsZW1lbnRVcGRhdGVzLnVwZGF0ZS5jaGFuZ2U7Ci0gICAgICAgICAgICBkZXNjZW5k
YW50c1RvUmVzb2x2ZSA9IGVsZW1lbnRVcGRhdGVzLmRlc2NlbmRhbnRzVG9SZXNvbHZlOworICAg
ICAgICAgICAgc3R5bGUgPSBlbGVtZW50VXBkYXRlLnN0eWxlLmdldCgpOworICAgICAgICAgICAg
Y2hhbmdlID0gZWxlbWVudFVwZGF0ZS5jaGFuZ2U7CisgICAgICAgICAgICBkZXNjZW5kYW50c1Rv
UmVzb2x2ZSA9IGVsZW1lbnREZXNjZW5kYW50c1RvUmVzb2x2ZTsKIAotICAgICAgICAgICAgaWYg
KGVsZW1lbnRVcGRhdGVzLnVwZGF0ZS5zdHlsZSkKLSAgICAgICAgICAgICAgICBtX3VwZGF0ZS0+
YWRkRWxlbWVudChlbGVtZW50LCBwYXJlbnQuZWxlbWVudCwgV1RGTW92ZShlbGVtZW50VXBkYXRl
cykpOworICAgICAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUuc3R5bGUpCisgICAgICAgICAgICAg
ICAgbV91cGRhdGUtPmFkZEVsZW1lbnQoZWxlbWVudCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUo
ZWxlbWVudFVwZGF0ZSkpOwogCiAgICAgICAgICAgICBjbGVhck5lZWRzU3R5bGVSZXNvbHV0aW9u
KGVsZW1lbnQpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2
ZXIuaAppbmRleCAwMThkNmFkZGMwNDI5OTlhOGMzMTFlY2NlZDc2NmNjNjhmYWJkMTdkLi5lODBh
YjI3MzA1YzJhZGYxM2FiZGVmZjQ5NWUxNDkyNDcwYzYwNTQwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0
eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKQEAgLTY1LDcgKzY1LDggQEAgcHJpdmF0ZToKICAgICBl
bnVtIGNsYXNzIFF1ZXJ5Q29udGFpbmVyQWN0aW9uIDogdWludDhfdCB7IE5vbmUsIENvbnRpbnVl
LCBMYXlvdXQgfTsKICAgICBRdWVyeUNvbnRhaW5lckFjdGlvbiB1cGRhdGVRdWVyeUNvbnRhaW5l
cihFbGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUmKTsKIAotICAgIEVsZW1lbnRVcGRhdGVzIHJl
c29sdmVFbGVtZW50KEVsZW1lbnQmKTsKKyAgICBlbnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNv
bHZlIDogdWludDhfdCB7IE5vbmUsIENoaWxkcmVuV2l0aEV4cGxpY2l0SW5oZXJpdCwgQ2hpbGRy
ZW4sIEFsbCB9OworICAgIHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLCBEZXNjZW5kYW50c1RvUmVz
b2x2ZT4gcmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYpOwogCiAgICAgc3RhdGljIEVsZW1lbnRVcGRh
dGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSwgY29uc3QgUmVzb2x1dGlvbkNvbnRleHQmKTsK
ICAgICBzdGQ6Om9wdGlvbmFsPEVsZW1lbnRVcGRhdGU+IHJlc29sdmVQc2V1ZG9TdHlsZShFbGVt
ZW50JiwgY29uc3QgRWxlbWVudFVwZGF0ZSYsIFBzZXVkb0lkKTsKQEAgLTEwNSw2ICsxMDYsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIHBvcFBhcmVudCgpOwogICAgIHZvaWQgcG9wUGFyZW50c1Rv
RGVwdGgodW5zaWduZWQgZGVwdGgpOwogCisgICAgc3RhdGljIERlc2NlbmRhbnRzVG9SZXNvbHZl
IGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZShDaGFuZ2UsIFZhbGlkaXR5LCBEZXNjZW5kYW50
c1RvUmVzb2x2ZSk7CisgICAgc3RhdGljIGJvb2wgc2hvdWxkUmVzb2x2ZUVsZW1lbnQoY29uc3Qg
RWxlbWVudCYsIERlc2NlbmRhbnRzVG9SZXNvbHZlKTsKKyAgICBzdGF0aWMgdm9pZCByZXNldERl
c2NlbmRhbnRTdHlsZVJlbGF0aW9ucyhFbGVtZW50JiwgRGVzY2VuZGFudHNUb1Jlc29sdmUpOwor
CiAgICAgUmVzb2x1dGlvbkNvbnRleHQgbWFrZVJlc29sdXRpb25Db250ZXh0KCk7CiAgICAgUmVz
b2x1dGlvbkNvbnRleHQgbWFrZVJlc29sdXRpb25Db250ZXh0Rm9yUHNldWRvRWxlbWVudChjb25z
dCBFbGVtZW50VXBkYXRlJik7CiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIHBhcmVudEJveFN0eWxl
KCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKaW5kZXggZGQ2NjYyYzUx
ZjJmZDViNjM0ZTMwNWFmYWE5ZGYyOTY2ZWQzNzhmNi4uMjQyN2IyNjU3NGIwYzJmYWJmMzAwNzQx
ZGRkYmU0YmY4Y2ViOTE4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVV
cGRhdGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcApAQCAt
NDEsNyArNDEsNyBAQCBVcGRhdGU6OlVwZGF0ZShEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAK
LWNvbnN0IEVsZW1lbnRVcGRhdGVzKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0Citjb25zdCBFbGVtZW50VXBkYXRlKiBVcGRhdGU6OmVsZW1lbnRV
cGRhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIHsKICAgICBhdXRvIGl0ID0gbV9l
bGVtZW50cy5maW5kKCZlbGVtZW50KTsKICAgICBpZiAoaXQgPT0gbV9lbGVtZW50cy5lbmQoKSkK
QEAgLTQ5LDcgKzQ5LDcgQEAgY29uc3QgRWxlbWVudFVwZGF0ZXMqIFVwZGF0ZTo6ZWxlbWVudFVw
ZGF0ZXMoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QKICAgICByZXR1cm4gJml0LT52YWx1
ZTsKIH0KIAotRWxlbWVudFVwZGF0ZXMqIFVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMoY29uc3QgRWxl
bWVudCYgZWxlbWVudCkKK0VsZW1lbnRVcGRhdGUqIFVwZGF0ZTo6ZWxlbWVudFVwZGF0ZShjb25z
dCBFbGVtZW50JiBlbGVtZW50KQogewogICAgIGF1dG8gaXQgPSBtX2VsZW1lbnRzLmZpbmQoJmVs
ZW1lbnQpOwogICAgIGlmIChpdCA9PSBtX2VsZW1lbnRzLmVuZCgpKQpAQCAtNjcsOCArNjcsOCBA
QCBjb25zdCBUZXh0VXBkYXRlKiBVcGRhdGU6OnRleHRVcGRhdGUoY29uc3QgVGV4dCYgdGV4dCkg
Y29uc3QKIAogY29uc3QgUmVuZGVyU3R5bGUqIFVwZGF0ZTo6ZWxlbWVudFN0eWxlKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIHVwZGF0ZXMgPSBlbGVtZW50
VXBkYXRlcyhlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIHVwZGF0ZXMtPnVwZGF0ZS5zdHlsZS5n
ZXQoKTsKKyAgICBpZiAoYXV0byogdXBkYXRlID0gZWxlbWVudFVwZGF0ZShlbGVtZW50KSkKKyAg
ICAgICAgcmV0dXJuIHVwZGF0ZS0+c3R5bGUuZ2V0KCk7CiAgICAgYXV0byogcmVuZGVyZXIgPSBl
bGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKICAgICAgICAgcmV0dXJuIG51
bGxwdHI7CkBAIC03NywxNSArNzcsMTUgQEAgY29uc3QgUmVuZGVyU3R5bGUqIFVwZGF0ZTo6ZWxl
bWVudFN0eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAKIFJlbmRlclN0eWxlKiBV
cGRhdGU6OmVsZW1lbnRTdHlsZShjb25zdCBFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmIChh
dXRvKiB1cGRhdGVzID0gZWxlbWVudFVwZGF0ZXMoZWxlbWVudCkpCi0gICAgICAgIHJldHVybiB1
cGRhdGVzLT51cGRhdGUuc3R5bGUuZ2V0KCk7CisgICAgaWYgKGF1dG8qIHVwZGF0ZSA9IGVsZW1l
bnRVcGRhdGUoZWxlbWVudCkpCisgICAgICAgIHJldHVybiB1cGRhdGUtPnN0eWxlLmdldCgpOwog
ICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVy
ZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIHJldHVybiAmcmVuZGVyZXItPm11dGFi
bGVTdHlsZSgpOwogfQogCi12b2lkIFVwZGF0ZTo6YWRkRWxlbWVudChFbGVtZW50JiBlbGVtZW50
LCBFbGVtZW50KiBwYXJlbnQsIEVsZW1lbnRVcGRhdGVzJiYgZWxlbWVudFVwZGF0ZXMpCit2b2lk
IFVwZGF0ZTo6YWRkRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBFbGVtZW50KiBwYXJlbnQsIEVs
ZW1lbnRVcGRhdGUmJiBlbGVtZW50VXBkYXRlKQogewogICAgIEFTU0VSVCghbV9lbGVtZW50cy5j
b250YWlucygmZWxlbWVudCkpOwogICAgIEFTU0VSVChjb21wb3NlZFRyZWVBbmNlc3RvcnMoZWxl
bWVudCkuZmlyc3QoKSA9PSBwYXJlbnQpOwpAQCAtOTMsNyArOTMsNyBAQCB2b2lkIFVwZGF0ZTo6
YWRkRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBFbGVtZW50KiBwYXJlbnQsIEVsZW1lbnRVcGRh
dGVzJiYgZWxlbQogICAgIG1fcm9vdHMucmVtb3ZlKCZlbGVtZW50KTsKICAgICBhZGRQb3NzaWJs
ZVJvb3QocGFyZW50KTsKIAotICAgIG1fZWxlbWVudHMuYWRkKCZlbGVtZW50LCBXVEZNb3ZlKGVs
ZW1lbnRVcGRhdGVzKSk7CisgICAgbV9lbGVtZW50cy5hZGQoJmVsZW1lbnQsIFdURk1vdmUoZWxl
bWVudFVwZGF0ZSkpOwogfQogCiB2b2lkIFVwZGF0ZTo6YWRkVGV4dChUZXh0JiB0ZXh0LCBFbGVt
ZW50KiBwYXJlbnQsIFRleHRVcGRhdGUmJiB0ZXh0VXBkYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VXBkYXRlLmgKaW5kZXggYzBkNGQwNmVhOGY5YTQ4M2VjMWE5OTU5MTIyZWMzZjcwODg1OWVmNS4u
MWY4MjA5ZGM1NzlmZWMwMDg1NDhlYTUyZmJhMjU1ZjQzZDU1MTAxZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVVwZGF0ZS5oCkBAIC00NywxNiArNDcsNiBAQCBzdHJ1Y3QgRWxlbWVudFVwZGF0ZSB7
CiAgICAgYm9vbCByZWNvbXBvc2l0ZUxheWVyIHsgZmFsc2UgfTsKIH07CiAKLWVudW0gY2xhc3Mg
RGVzY2VuZGFudHNUb1Jlc29sdmUgeyBOb25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQs
IENoaWxkcmVuLCBBbGwgfTsKLQotdXNpbmcgUHNldWRvSWRUb0VsZW1lbnRVcGRhdGVNYXAgPSBI
YXNoTWFwPFBzZXVkb0lkLCBFbGVtZW50VXBkYXRlLCBJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpT
dHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+OwotCi1zdHJ1Y3QgRWxlbWVudFVwZGF0ZXMg
ewotICAgIEVsZW1lbnRVcGRhdGUgdXBkYXRlOwotICAgIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRl
c2NlbmRhbnRzVG9SZXNvbHZlIHsgRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmUgfTsKLSAgICBQ
c2V1ZG9JZFRvRWxlbWVudFVwZGF0ZU1hcCBwc2V1ZG9FbGVtZW50VXBkYXRlczsKLX07Ci0KIHN0
cnVjdCBUZXh0VXBkYXRlIHsKICAgICB1bnNpZ25lZCBvZmZzZXQgeyAwIH07CiAgICAgdW5zaWdu
ZWQgbGVuZ3RoIHsgc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpIH07CkBAIC03
MCw4ICs2MCw4IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IExpc3RIYXNoU2V0PFJlZlB0cjxDb250
YWluZXJOb2RlPj4mIHJvb3RzKCkgY29uc3QgeyByZXR1cm4gbV9yb290czsgfQogCi0gICAgY29u
c3QgRWxlbWVudFVwZGF0ZXMqIGVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsK
LSAgICBFbGVtZW50VXBkYXRlcyogZWxlbWVudFVwZGF0ZXMoY29uc3QgRWxlbWVudCYpOworICAg
IGNvbnN0IEVsZW1lbnRVcGRhdGUqIGVsZW1lbnRVcGRhdGUoY29uc3QgRWxlbWVudCYpIGNvbnN0
OworICAgIEVsZW1lbnRVcGRhdGUqIGVsZW1lbnRVcGRhdGUoY29uc3QgRWxlbWVudCYpOwogCiAg
ICAgY29uc3QgVGV4dFVwZGF0ZSogdGV4dFVwZGF0ZShjb25zdCBUZXh0JikgY29uc3Q7CiAKQEAg
LTgzLDcgKzczLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNFbXB0eSgpIGNvbnN0IHsgcmV0dXJu
ICFzaXplKCk7IH0KICAgICB1bnNpZ25lZCBzaXplKCkgY29uc3QgeyByZXR1cm4gbV9lbGVtZW50
cy5zaXplKCkgKyBtX3RleHRzLnNpemUoKTsgfQogCi0gICAgdm9pZCBhZGRFbGVtZW50KEVsZW1l
bnQmLCBFbGVtZW50KiBwYXJlbnQsIEVsZW1lbnRVcGRhdGVzJiYpOworICAgIHZvaWQgYWRkRWxl
bWVudChFbGVtZW50JiwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50VXBkYXRlJiYpOwogICAgIHZv
aWQgYWRkVGV4dChUZXh0JiwgRWxlbWVudCogcGFyZW50LCBUZXh0VXBkYXRlJiYpOwogICAgIHZv
aWQgYWRkVGV4dChUZXh0JiwgVGV4dFVwZGF0ZSYmKTsKIApAQCAtOTIsNyArODIsNyBAQCBwcml2
YXRlOgogCiAgICAgUmVmPERvY3VtZW50PiBtX2RvY3VtZW50OwogICAgIExpc3RIYXNoU2V0PFJl
ZlB0cjxDb250YWluZXJOb2RlPj4gbV9yb290czsKLSAgICBIYXNoTWFwPFJlZlB0cjxjb25zdCBF
bGVtZW50PiwgRWxlbWVudFVwZGF0ZXM+IG1fZWxlbWVudHM7CisgICAgSGFzaE1hcDxSZWZQdHI8
Y29uc3QgRWxlbWVudD4sIEVsZW1lbnRVcGRhdGU+IG1fZWxlbWVudHM7CiAgICAgSGFzaE1hcDxS
ZWZQdHI8Y29uc3QgVGV4dD4sIFRleHRVcGRhdGU+IG1fdGV4dHM7CiB9OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453724</attachid>
            <date>2022-03-03 05:28:42 -0800</date>
            <delta_ts>2022-03-03 06:05:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237413-20220303152840.patch</filename>
            <type>text/plain</type>
            <size>30537</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uZTg1MzdmMzcxNmY0NmE0MWRmYjdmMGQ5YmFjOTIy
ODU1ZGNjZDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAzLTAzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwc2V1ZG8g
ZWxlbWVudCByZXNvbHV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzc0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgRWxlbWVudFVwZGF0ZXMgc3RydWN0IHdpdGggYSBtYXAgdGhhdCBj
b250YWlucyBwc2V1ZG8gZWxlbWVudCB1cGRhdGVzLgorICAgICAgICBJbnN0ZWFkIHVzZSBhIHNp
bmdsZSBFbGVtZW50VXBkYXRlIHN0cnVjdCBhbmQgcGFzcyB0aGUgcHNldWRvIGVsZW1lbnQgc3R5
bGVzCisgICAgICAgIGFzIGNhY2hlZCBwc2V1ZG8gc3R5bGVzIG9mIHRoZSBlbGVtZW50IFJlbmRl
clN0eWxlLiBQcmV2aW91c2x5IFJlbmRlclRyZWVVcGRhdGVyCisgICAgICAgIHdvdWxkIG1vdmUg
dGhlbSB0aGVyZS4KKworICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQ
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRl
clRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnB1c2hQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnBvcFBhcmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVyRGVzY2Vu
ZGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6
R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0
ZWRDb250ZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y29tcHV0ZURlc2NlbmRhbnRzVG9S
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnNob3VsZFJl
c29sdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJl
c2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpU
cmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6c2hvdWxkUmVzb2x2ZUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OnJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxl
VXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpVcGRhdGU6OmVsZW1lbnRVcGRh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VXBkYXRlOjplbGVtZW50U3R5bGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpVcGRhdGU6OmFkZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKKzIwMjItMDMtMDMgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHBzZXVkbyBlbGVtZW50IHJl
c29sdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGNhbiBhZGQgcHNldWRvIGVsZW1lbnQgc3R5bGVzIGRpcmVjdGx5IHRvIHRoZWlyIHBhcmVu
dCBzdHlsZSBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIG1hcCBmb3IgdGhhdC4KKworICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRD
b250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgICogc3R5
bGUvU3R5bGVVcGRhdGUuaDoKKwogMjAyMi0wMi0yOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1hdGlvbnNdIHdlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1hcmd1bWVudC0w
MDEuaHRtbCBpcyBhIHVuaXF1ZSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCAzZWM0NTFhOTYx
Mzc4NTQ1NTg1ZDY3M2RmYmI5YmQ4ODg1MzJlMjkwLi5mMWRmZTFlYmNkNDQ5NjIwMmM3ZGNlNTAz
ZjBmMzE0NzJiZGE5MjY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTY5LDkgKzY5LDkgQEAgUmVuZGVy
VHJlZVVwZGF0ZXI6OlBhcmVudDo6UGFyZW50KENvbnRhaW5lck5vZGUmIHJvb3QpCiB7CiB9CiAK
LVJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChFbGVtZW50JiBlbGVtZW50LCBjb25z
dCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCitSZW5kZXJUcmVlVXBkYXRlcjo6UGFy
ZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUq
IHVwZGF0ZSkKICAgICA6IGVsZW1lbnQoJmVsZW1lbnQpCi0gICAgLCB1cGRhdGVzKHVwZGF0ZXMp
CisgICAgLCB1cGRhdGUodXBkYXRlKQogICAgICwgcmVuZGVyVHJlZVBvc2l0aW9uKGVsZW1lbnQu
cmVuZGVyZXIoKSA/IHN0ZDo6bWFrZV9vcHRpb25hbChSZW5kZXJUcmVlUG9zaXRpb24oKmVsZW1l
bnQucmVuZGVyZXIoKSkpIDogc3RkOjpudWxsb3B0KQogewogfQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9kZSYg
cm9vdCkKICAgICAgICAgaWYgKGlzPFRleHQ+KG5vZGUpKSB7CiAgICAgICAgICAgICBhdXRvJiB0
ZXh0ID0gZG93bmNhc3Q8VGV4dD4obm9kZSk7CiAgICAgICAgICAgICBhdXRvKiB0ZXh0VXBkYXRl
ID0gbV9zdHlsZVVwZGF0ZS0+dGV4dFVwZGF0ZSh0ZXh0KTsKLSAgICAgICAgICAgIGJvb2wgZGlk
Q3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlcyAmJiBwYXJlbnQoKS51cGRhdGVzLT51cGRh
dGUuY2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyOworICAgICAgICAgICAgYm9vbCBk
aWRDcmVhdGVQYXJlbnQgPSBwYXJlbnQoKS51cGRhdGUgJiYgcGFyZW50KCkudXBkYXRlLT5jaGFu
Z2UgPT0gU3R5bGU6OkNoYW5nZTo6UmVuZGVyZXI7CiAgICAgICAgICAgICBib29sIG1heU5lZWRV
cGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyID0gcmVuZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRl
T3JEZXN0cm95Q2hpbGRSZW5kZXJlciAmJiB0ZXh0LmRhdGEoKS5pc0FsbFNwZWNpYWxDaGFyYWN0
ZXJzPGlzSFRNTFNwYWNlPigpOwogICAgICAgICAgICAgaWYgKGRpZENyZWF0ZVBhcmVudCB8fCB0
ZXh0VXBkYXRlIHx8IG1heU5lZWRVcGRhdGVXaGl0ZXNwYWNlT25seVJlbmRlcmVyKQogICAgICAg
ICAgICAgICAgIHVwZGF0ZVRleHRSZW5kZXJlcih0ZXh0LCB0ZXh0VXBkYXRlKTsKQEAgLTE3OSwx
OCArMTc5LDE4IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29u
dGFpbmVyTm9kZSYgcm9vdCkKIAogICAgICAgICBhdXRvJiBlbGVtZW50ID0gZG93bmNhc3Q8RWxl
bWVudD4obm9kZSk7CiAKLSAgICAgICAgYXV0byogZWxlbWVudFVwZGF0ZXMgPSBtX3N0eWxlVXBk
YXRlLT5lbGVtZW50VXBkYXRlcyhlbGVtZW50KTsKKyAgICAgICAgYXV0byogZWxlbWVudFVwZGF0
ZSA9IG1fc3R5bGVVcGRhdGUtPmVsZW1lbnRVcGRhdGUoZWxlbWVudCk7CiAKICAgICAgICAgLy8g
V2UgaG9wIHRocm91Z2ggZGlzcGxheTogY29udGVudHMgZWxlbWVudHMgaW4gZmluZFJlbmRlcmlu
Z1Jvb3QsIHNvCiAgICAgICAgIC8vIHRoZXJlIG1heSBiZSBvdGhlciB1cGRhdGVzIGRvd24gdGhl
IHRyZWUuCi0gICAgICAgIGlmICghZWxlbWVudFVwZGF0ZXMgJiYgIWVsZW1lbnQuaGFzRGlzcGxh
eUNvbnRlbnRzKCkpIHsKKyAgICAgICAgaWYgKCFlbGVtZW50VXBkYXRlICYmICFlbGVtZW50Lmhh
c0Rpc3BsYXlDb250ZW50cygpKSB7CiAgICAgICAgICAgICBzdG9yZVByZXZpb3VzUmVuZGVyZXIo
ZWxlbWVudCk7CiAgICAgICAgICAgICBpdC50cmF2ZXJzZU5leHRTa2lwcGluZ0NoaWxkcmVuKCk7
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChlbGVtZW50
VXBkYXRlcykKLSAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxl
bWVudFVwZGF0ZXMpOworICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZSkKKyAgICAgICAgICAgIHVw
ZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVudFVwZGF0ZSk7CiAKICAgICAgICAg
c3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1lbnQpOwogCkBAIC0yMDAsNyArMjAwLDcgQEAgdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBwdXNoUGFyZW50
KGVsZW1lbnQsIGVsZW1lbnRVcGRhdGVzKTsKKyAgICAgICAgcHVzaFBhcmVudChlbGVtZW50LCBl
bGVtZW50VXBkYXRlKTsKIAogICAgICAgICBpdC50cmF2ZXJzZU5leHQoKTsKICAgICB9CkBAIC0y
MjMsMTggKzIyMywxOCBAQCBSZW5kZXJUcmVlUG9zaXRpb24mIFJlbmRlclRyZWVVcGRhdGVyOjpy
ZW5kZXJUcmVlUG9zaXRpb24oKQogICAgIHJldHVybiAqcmVuZGVyaW5nUGFyZW50KCkucmVuZGVy
VHJlZVBvc2l0aW9uOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwdXNoUGFyZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcykKK3Zv
aWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnB1c2hQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
U3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSkKIHsKLSAgICBtX3BhcmVudFN0YWNrLmFwcGVu
ZChQYXJlbnQoZWxlbWVudCwgdXBkYXRlcykpOworICAgIG1fcGFyZW50U3RhY2suYXBwZW5kKFBh
cmVudChlbGVtZW50LCB1cGRhdGUpKTsKIAotICAgIHVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKGVs
ZW1lbnQsIHVwZGF0ZXMpOworICAgIHVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKGVsZW1lbnQsIHVw
ZGF0ZSk7CiB9CiAKIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnBvcFBhcmVudCgpCiB7CiAgICAg
YXV0byYgcGFyZW50ID0gbV9wYXJlbnRTdGFjay5sYXN0KCk7CiAgICAgaWYgKHBhcmVudC5lbGVt
ZW50KQotICAgICAgICB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKCpwYXJlbnQuZWxlbWVudCwgcGFy
ZW50LnVwZGF0ZXMpOworICAgICAgICB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKCpwYXJlbnQuZWxl
bWVudCwgcGFyZW50LnVwZGF0ZSk7CiAKICAgICBpZiAoJnBhcmVudCAhPSAmcmVuZGVyaW5nUGFy
ZW50KCkpCiAgICAgICAgIHJlbmRlclRyZWVQb3NpdGlvbigpLmludmFsaWRhdGVOZXh0U2libGlu
ZygpOwpAQCAtMjUwLDE2ICsyNTAsMTYgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cG9wUGFy
ZW50c1RvRGVwdGgodW5zaWduZWQgZGVwdGgpCiAgICAgICAgIHBvcFBhcmVudCgpOwogfQogCi12
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhFbGVtZW50JiBl
bGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCit2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhFbGVtZW50JiBlbGVtZW50LCBj
b25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogdXBkYXRlKQogewotICAgIGlmICh1cGRhdGVzKQot
ICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChlbGVtZW50LCAq
dXBkYXRlcywgUHNldWRvSWQ6OkJlZm9yZSk7CisgICAgaWYgKHVwZGF0ZSkKKyAgICAgICAgZ2Vu
ZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgKnVwZGF0ZSwgUHNl
dWRvSWQ6OkJlZm9yZSk7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVy
RGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVz
KiB1cGRhdGVzKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50
cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogdXBkYXRlKQog
ewotICAgIGlmICh1cGRhdGVzKQotICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNl
dWRvRWxlbWVudChlbGVtZW50LCAqdXBkYXRlcywgUHNldWRvSWQ6OkFmdGVyKTsKKyAgICBpZiAo
dXBkYXRlKQorICAgICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRlUHNldWRvRWxlbWVudChl
bGVtZW50LCAqdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIpOwogCiAgICAgYXV0byogcmVuZGVyZXIg
PSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikKQEAgLTI2OCw3ICsyNjgs
NyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbAogICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRh
dGVCYWNrZHJvcFJlbmRlcmVyKCpyZW5kZXJlcik7CiAgICAgbV9idWlsZGVyLnVwZGF0ZUFmdGVy
RGVzY2VuZGFudHMoKnJlbmRlcmVyKTsKIAotICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxl
UmVzb2x2ZUNhbGxiYWNrcygpICYmIHVwZGF0ZXMgJiYgdXBkYXRlcy0+dXBkYXRlLmNoYW5nZSA9
PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcikKKyAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHls
ZVJlc29sdmVDYWxsYmFja3MoKSAmJiB1cGRhdGUgJiYgdXBkYXRlLT5jaGFuZ2UgPT0gU3R5bGU6
OkNoYW5nZTo6UmVuZGVyZXIpCiAgICAgICAgIGVsZW1lbnQuZGlkQXR0YWNoUmVuZGVyZXJzKCk7
CiB9CiAKQEAgLTMwMCwyMCArMzAwLDIxIEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0
ZVJlbmRlcmVyU3R5bGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIFJlbmRlclN0eWxlCiAgICAg
bV9idWlsZGVyLm5vcm1hbGl6ZVRyZWVBZnRlclN0eWxlQ2hhbmdlKHJlbmRlcmVyLCBvbGRTdHls
ZSk7CiB9CiAKLXZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcihF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMmIHVwZGF0ZXMpCit2
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUpCiB7CiAjaWYg
RU5BQkxFKENPTlRFTlRfQ0hBTkdFX09CU0VSVkVSKQogICAgIENvbnRlbnRDaGFuZ2VPYnNlcnZl
cjo6U3R5bGVDaGFuZ2VTY29wZSBvYnNlcnZpbmdTY29wZShtX2RvY3VtZW50LCBlbGVtZW50KTsK
ICNlbmRpZgogCi0gICAgYXV0byYgZWxlbWVudFVwZGF0ZSA9IHVwZGF0ZXMudXBkYXRlOwogICAg
IGF1dG8gZWxlbWVudFVwZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCplbGVtZW50
VXBkYXRlLnN0eWxlKTsKIAotICAgIGZvciAoYXV0byYgaXQgOiB1cGRhdGVzLnBzZXVkb0VsZW1l
bnRVcGRhdGVzKSB7Ci0gICAgICAgIGF1dG8gcHNldWRvSWQgPSBpdC5rZXk7Ci0gICAgICAgIGlm
IChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IHBzZXVkb0lkID09IFBzZXVkb0lkOjpB
ZnRlcikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbGVtZW50VXBkYXRlU3R5bGUt
PmFkZENhY2hlZFBzZXVkb1N0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cigqaXQudmFsdWUuc3R5
bGUpKTsKKyAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZS0+Y2FjaGVkUHNldWRvU3R5bGVzKCkp
IHsKKyAgICAgICAgZm9yIChhdXRvJiBwc2V1ZG9FbGVtZW50U3R5bGUgOiAqZWxlbWVudFVwZGF0
ZS5zdHlsZS0+Y2FjaGVkUHNldWRvU3R5bGVzKCkpIHsKKyAgICAgICAgICAgIGF1dG8gcHNldWRv
SWQgPSBwc2V1ZG9FbGVtZW50U3R5bGUtPnN0eWxlVHlwZSgpOworICAgICAgICAgICAgaWYgKHBz
ZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVy
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgZWxlbWVudFVwZGF0ZVN0
eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnBzZXVkb0Vs
ZW1lbnRTdHlsZSkpOworICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBzaG91bGRUZWFyRG93
blJlbmRlcmVycyA9IGVsZW1lbnRVcGRhdGUuY2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRl
cmVyICYmIChlbGVtZW50LnJlbmRlcmVyKCkgfHwgZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMo
KSB8fCBlbGVtZW50LmlzSW5Ub3BMYXllcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmgKaW5kZXggYjc5YjA1M2RlMTkz
NGQ0OWRjMjk4NGE5YjAzOWU1YzRkODJhMzhmYy4uMjY4NjhkY2E2NDkzMmFlZWY4NzAxMGNmNzJm
NGMxMjRmZGM0NTgxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmgKQEAgLTU4LDI0ICs1OCwyNCBAQCBwcml2YXRlOgog
ICAgIHZvaWQgdXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KTsKICAgICB2b2lk
IHVwZGF0ZVRleHRSZW5kZXJlcihUZXh0JiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUqKTsKICAg
ICB2b2lkIGNyZWF0ZVRleHRSZW5kZXJlcihUZXh0JiwgY29uc3QgU3R5bGU6OlRleHRVcGRhdGUq
KTsKLSAgICB2b2lkIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiwgY29uc3QgU3R5bGU6
OkVsZW1lbnRVcGRhdGVzJik7CisgICAgdm9pZCB1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVu
dCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJik7CiAgICAgdm9pZCB1cGRhdGVSZW5kZXJl
clN0eWxlKFJlbmRlckVsZW1lbnQmLCBSZW5kZXJTdHlsZSYmLCBTdHlsZURpZmZlcmVuY2UpOwog
ICAgIHZvaWQgY3JlYXRlUmVuZGVyZXIoRWxlbWVudCYsIFJlbmRlclN0eWxlJiYpOwotICAgIHZv
aWQgdXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50
VXBkYXRlcyopOwotICAgIHZvaWQgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50JiwgY29u
c3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKik7CisgICAgdm9pZCB1cGRhdGVCZWZvcmVEZXNjZW5k
YW50cyhFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsKKyAgICB2b2lkIHVw
ZGF0ZUFmdGVyRGVzY2VuZGFudHMoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRl
Kik7CiAgICAgYm9vbCB0ZXh0UmVuZGVyZXJJc05lZWRlZChjb25zdCBUZXh0JiB0ZXh0Tm9kZSk7
CiAgICAgdm9pZCBzdG9yZVByZXZpb3VzUmVuZGVyZXIoTm9kZSYpOwogCiAgICAgc3RydWN0IFBh
cmVudCB7CiAgICAgICAgIEVsZW1lbnQqIGVsZW1lbnQgeyBudWxscHRyIH07Ci0gICAgICAgIGNv
bnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyogdXBkYXRlcyB7IG51bGxwdHIgfTsKKyAgICAgICAg
Y29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSB7IG51bGxwdHIgfTsKICAgICAgICAg
c3RkOjpvcHRpb25hbDxSZW5kZXJUcmVlUG9zaXRpb24+IHJlbmRlclRyZWVQb3NpdGlvbjsKIAog
ICAgICAgICBib29sIGRpZENyZWF0ZU9yRGVzdHJveUNoaWxkUmVuZGVyZXIgeyBmYWxzZSB9Owog
ICAgICAgICBSZW5kZXJPYmplY3QqIHByZXZpb3VzQ2hpbGRSZW5kZXJlciB7IG51bGxwdHIgfTsK
IAogICAgICAgICBQYXJlbnQoQ29udGFpbmVyTm9kZSYgcm9vdCk7Ci0gICAgICAgIFBhcmVudChF
bGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKik7CisgICAgICAgIFBhcmVudChF
bGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsKICAgICB9OwogICAgIFBhcmVu
dCYgcGFyZW50KCkgeyByZXR1cm4gbV9wYXJlbnRTdGFjay5sYXN0KCk7IH0KICAgICBQYXJlbnQm
IHJlbmRlcmluZ1BhcmVudCgpOwpAQCAtODMsNyArODMsNyBAQCBwcml2YXRlOgogCiAgICAgR2Vu
ZXJhdGVkQ29udGVudCYgZ2VuZXJhdGVkQ29udGVudCgpIHsgcmV0dXJuICptX2dlbmVyYXRlZENv
bnRlbnQ7IH0KIAotICAgIHZvaWQgcHVzaFBhcmVudChFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGVzKik7CisgICAgdm9pZCBwdXNoUGFyZW50KEVsZW1lbnQmLCBjb25zdCBTdHls
ZTo6RWxlbWVudFVwZGF0ZSopOwogICAgIHZvaWQgcG9wUGFyZW50KCk7CiAgICAgdm9pZCBwb3BQ
YXJlbnRzVG9EZXB0aCh1bnNpZ25lZCBkZXB0aCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVy
R2VuZXJhdGVkQ29udGVudC5jcHAKaW5kZXggNjQ1OGQxNGI4ZGM1Njg2MWYwMzc2MGM1Y2QyM2Qz
YmQyYjkzNTY3YS4uZThiOWVlNTJmMDc4ZTExODEwMTUyOTBhYTM0NDUzOGRlMzliNzY2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyR2VuZXJhdGVkQ29udGVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAKQEAgLTEwNywyMSAr
MTA3LDE2IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZVN0eWxlRm9yQ29udGVudFJlbmRlcmVycyhSZW5k
ZXJFbGVtZW50JiBwc2V1ZG9SZW5kZXJlciwgY29uc3QKICAgICB9CiB9CiAKLXZvaWQgUmVuZGVy
VHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVu
dCYgY3VycmVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzJiB1cGRhdGVzLCBQc2V1ZG9J
ZCBwc2V1ZG9JZCkKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVw
ZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRV
cGRhdGUmIGVsZW1lbnRVcGRhdGUsIFBzZXVkb0lkIHBzZXVkb0lkKQogewogICAgIFBzZXVkb0Vs
ZW1lbnQqIHBzZXVkb0VsZW1lbnQgPSBwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlID8gY3Vy
cmVudC5iZWZvcmVQc2V1ZG9FbGVtZW50KCkgOiBjdXJyZW50LmFmdGVyUHNldWRvRWxlbWVudCgp
OwogCiAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1l
bnQtPnJlbmRlcmVyKCkgOiBudWxscHRyKQogICAgICAgICBtX3VwZGF0ZXIucmVuZGVyVHJlZVBv
c2l0aW9uKCkuaW52YWxpZGF0ZU5leHRTaWJsaW5nKCpyZW5kZXJlcik7CiAKLSAgICBhdXRvKiB1
cGRhdGUgPSBbJl0oKSAtPiBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogewotICAgICAgICBh
dXRvIGl0ZXJhdG9yID0gdXBkYXRlcy5wc2V1ZG9FbGVtZW50VXBkYXRlcy5maW5kKHBzZXVkb0lk
KTsKLSAgICAgICAgaWYgKGl0ZXJhdG9yICE9IHVwZGF0ZXMucHNldWRvRWxlbWVudFVwZGF0ZXMu
ZW5kKCkpCi0gICAgICAgICAgICByZXR1cm4gJml0ZXJhdG9yLT52YWx1ZTsKLSAgICAgICAgcmV0
dXJuIG51bGxwdHI7Ci0gICAgfSgpOworICAgIGF1dG8qIHVwZGF0ZVN0eWxlID0gZWxlbWVudFVw
ZGF0ZS5zdHlsZSA/IGVsZW1lbnRVcGRhdGUuc3R5bGUtPmdldENhY2hlZFBzZXVkb1N0eWxlKHBz
ZXVkb0lkKSA6IG51bGxwdHI7CiAKLSAgICBpZiAoIW5lZWRzUHNldWRvRWxlbWVudCh1cGRhdGUp
ICYmICFlbGVtZW50SXNUYXJnZXRlZEJ5S2V5ZnJhbWVFZmZlY3RSZXF1aXJpbmdQc2V1ZG9FbGVt
ZW50KCZjdXJyZW50LCBwc2V1ZG9JZCkpIHsKKyAgICBpZiAoIW5lZWRzUHNldWRvRWxlbWVudCh1
cGRhdGVTdHlsZSkgJiYgIWVsZW1lbnRJc1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVpcmlu
Z1BzZXVkb0VsZW1lbnQoJmN1cnJlbnQsIHBzZXVkb0lkKSkgewogICAgICAgICBpZiAocHNldWRv
RWxlbWVudCkgewogICAgICAgICAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUp
CiAgICAgICAgICAgICAgICAgcmVtb3ZlQmVmb3JlUHNldWRvRWxlbWVudChjdXJyZW50LCBtX3Vw
ZGF0ZXIubV9idWlsZGVyKTsKQEAgLTEzMSwyOCArMTI2LDMyIEBAIHZvaWQgUmVuZGVyVHJlZVVw
ZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYgY3Vy
cmVudCwKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmICghdXBkYXRlIHx8IHVwZGF0
ZS0+Y2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6Ok5vbmUpCisgICAgaWYgKCF1cGRhdGVTdHlsZSkK
KyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogZXhpc3RpbmdTdHlsZSA9IHBzZXVkb0VsZW1l
bnQgPyBwc2V1ZG9FbGVtZW50LT5yZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCkgOiBudWxs
cHRyOworCisgICAgYXV0byBzdHlsZUNoYW5nZSA9IGV4aXN0aW5nU3R5bGUgPyBTdHlsZTo6ZGV0
ZXJtaW5lQ2hhbmdlKCp1cGRhdGVTdHlsZSwgKmV4aXN0aW5nU3R5bGUpIDogU3R5bGU6OkNoYW5n
ZTo6UmVuZGVyZXI7CisgICAgaWYgKHN0eWxlQ2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6Ok5vbmUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHBzZXVkb0VsZW1lbnQgPSAmY3VycmVudC5lbnN1cmVQ
c2V1ZG9FbGVtZW50KHBzZXVkb0lkKTsKIAotICAgIGlmICh1cGRhdGUtPnN0eWxlLT5kaXNwbGF5
KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CisgICAgaWYgKHVwZGF0ZVN0eWxlLT5kaXNw
bGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzKSB7CiAgICAgICAgIC8vIEZvciBkaXNwbGF5
OmNvbnRlbnRzIHdlIGNyZWF0ZSBhbiBpbmxpbmUgd3JhcHBlciB0aGF0IGluaGVyaXRzIGl0cwog
ICAgICAgICAvLyBzdHlsZSBmcm9tIHRoZSBkaXNwbGF5OmNvbnRlbnRzIHN0eWxlLgogICAgICAg
ICBhdXRvIGNvbnRlbnRzU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y3JlYXRlUHRyKCk7CiAgICAgICAg
IGNvbnRlbnRzU3R5bGUtPnNldFN0eWxlVHlwZShwc2V1ZG9JZCk7Ci0gICAgICAgIGNvbnRlbnRz
U3R5bGUtPmluaGVyaXRGcm9tKCp1cGRhdGUtPnN0eWxlKTsKLSAgICAgICAgY29udGVudHNTdHls
ZS0+Y29weUNvbnRlbnRGcm9tKCp1cGRhdGUtPnN0eWxlKTsKKyAgICAgICAgY29udGVudHNTdHls
ZS0+aW5oZXJpdEZyb20oKnVwZGF0ZVN0eWxlKTsKKyAgICAgICAgY29udGVudHNTdHlsZS0+Y29w
eUNvbnRlbnRGcm9tKCp1cGRhdGVTdHlsZSk7CiAKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRh
dGUgY29udGVudHNVcGRhdGUgeyBXVEZNb3ZlKGNvbnRlbnRzU3R5bGUpLCB1cGRhdGUtPmNoYW5n
ZSwgdXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50VXBk
YXRlcyBjb250ZW50c1VwZGF0ZXMgeyBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlKSwgU3R5bGU6OkRl
c2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKLSAgICAgICAgbV91cGRhdGVyLnVwZGF0
ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZXMp
KTsKLSAgICAgICAgcHNldWRvRWxlbWVudC0+c3RvcmVEaXNwbGF5Q29udGVudHNTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZS0+c3R5bGUpKTsKKyAgICAgICAgU3R5bGU6OkVsZW1l
bnRVcGRhdGUgY29udGVudHNVcGRhdGUgeyBXVEZNb3ZlKGNvbnRlbnRzU3R5bGUpLCBzdHlsZUNo
YW5nZSwgZWxlbWVudFVwZGF0ZS5yZWNvbXBvc2l0ZUxheWVyIH07CisgICAgICAgIG1fdXBkYXRl
ci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUoY29udGVudHNV
cGRhdGUpKTsKKyAgICAgICAgcHNldWRvRWxlbWVudC0+c3RvcmVEaXNwbGF5Q29udGVudHNTdHls
ZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKSk7CiAgICAgfSBlbHNlIHsKLSAg
ICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIoKnVwZGF0ZS0+c3R5bGUpOwotICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBwc2V1ZG9F
bGVtZW50VXBkYXRlIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5bGUpLCB1cGRhdGUt
PmNoYW5nZSwgdXBkYXRlLT5yZWNvbXBvc2l0ZUxheWVyIH07Ci0gICAgICAgIFN0eWxlOjpFbGVt
ZW50VXBkYXRlcyBwc2V1ZG9FbGVtZW50VXBkYXRlcyB7IFdURk1vdmUocHNldWRvRWxlbWVudFVw
ZGF0ZSksIFN0eWxlOjpEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSwgeyB9IH07Ci0gICAgICAg
IG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1vdmUo
cHNldWRvRWxlbWVudFVwZGF0ZXMpKTsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRl
U3R5bGUgPSBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKnVwZGF0ZVN0eWxlKTsKKyAgICAgICAgU3R5
bGU6OkVsZW1lbnRVcGRhdGUgcHNldWRvRWxlbWVudFVwZGF0ZSB7IFdURk1vdmUocHNldWRvRWxl
bWVudFVwZGF0ZVN0eWxlKSwgc3R5bGVDaGFuZ2UsIGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVM
YXllciB9OworICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRlcmVyKCpwc2V1ZG9F
bGVtZW50LCBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGUpKTsKICAgICAgICAgQVNTRVJUKCFw
c2V1ZG9FbGVtZW50LT5oYXNEaXNwbGF5Q29udGVudHMoKSk7CiAgICAgfQogCkBAIC0xNjAsMTAg
KzE1OSwxMCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRh
dGVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmIGN1cnJlbnQsCiAgICAgaWYgKCFwc2V1ZG9FbGVtZW50
UmVuZGVyZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmICh1cGRhdGUtPmNoYW5nZSA9PSBT
dHlsZTo6Q2hhbmdlOjpSZW5kZXJlcikKLSAgICAgICAgY3JlYXRlQ29udGVudFJlbmRlcmVycyht
X3VwZGF0ZXIubV9idWlsZGVyLCAqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlLT5zdHls
ZSwgcHNldWRvSWQpOworICAgIGlmIChzdHlsZUNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdlOjpSZW5k
ZXJlcikKKyAgICAgICAgY3JlYXRlQ29udGVudFJlbmRlcmVycyhtX3VwZGF0ZXIubV9idWlsZGVy
LCAqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlU3R5bGUsIHBzZXVkb0lkKTsKICAgICBl
bHNlCi0gICAgICAgIHVwZGF0ZVN0eWxlRm9yQ29udGVudFJlbmRlcmVycygqcHNldWRvRWxlbWVu
dFJlbmRlcmVyLCAqdXBkYXRlLT5zdHlsZSk7CisgICAgICAgIHVwZGF0ZVN0eWxlRm9yQ29udGVu
dFJlbmRlcmVycygqcHNldWRvRWxlbWVudFJlbmRlcmVyLCAqdXBkYXRlU3R5bGUpOwogCiAgICAg
aWYgKG1fdXBkYXRlci5yZW5kZXJWaWV3KCkuaGFzUXVvdGVzTmVlZGluZ1VwZGF0ZSgpKSB7CiAg
ICAgICAgIGZvciAoYXV0byYgY2hpbGQgOiBkZXNjZW5kYW50c09mVHlwZTxSZW5kZXJRdW90ZT4o
KnBzZXVkb0VsZW1lbnRSZW5kZXJlcikpCkBAIC0xOTUsMTMgKzE5NCwxMyBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVCYWNrZHJvcFJlbmRlcmVyKFJl
bmRlckVsZW1lbnQmCiAgICAgfQogfQogCi1ib29sIFJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0
ZWRDb250ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQoY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUq
IHVwZGF0ZSkKK2Jvb2wgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6Om5lZWRz
UHNldWRvRWxlbWVudChjb25zdCBSZW5kZXJTdHlsZSogc3R5bGUpCiB7Ci0gICAgaWYgKCF1cGRh
dGUpCisgICAgaWYgKCFzdHlsZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmICghbV91
cGRhdGVyLnJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgpLmNhbkhhdmVHZW5lcmF0ZWRDaGls
ZHJlbigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKCFwc2V1ZG9FbGVtZW50UmVu
ZGVyZXJJc05lZWRlZCh1cGRhdGUtPnN0eWxlLmdldCgpKSkKKyAgICBpZiAoIXBzZXVkb0VsZW1l
bnRSZW5kZXJlcklzTmVlZGVkKHN0eWxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIHJl
dHVybiB0cnVlOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oCmlu
ZGV4IGYzZjAxNmRkNjg3OGMyNTFjOTE4NDlhNTg5MzQ4MTllZmE3ZDgwYWYuLjVjZjRmOWQxZWUx
ZDc2OWRiZGEwYWJhOWY5N2JmYWJmMDIzNWVkNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmgKQEAgLTM5LDcgKzM5LDcgQEAgcHVibGljOgogICAgIEdlbmVyYXRl
ZENvbnRlbnQoUmVuZGVyVHJlZVVwZGF0ZXImKTsKIAogICAgIHZvaWQgdXBkYXRlQmFja2Ryb3BS
ZW5kZXJlcihSZW5kZXJFbGVtZW50Jik7Ci0gICAgdm9pZCB1cGRhdGVQc2V1ZG9FbGVtZW50KEVs
ZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMmLCBQc2V1ZG9JZCk7CisgICAgdm9p
ZCB1cGRhdGVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0
ZSYsIFBzZXVkb0lkKTsKICAgICB2b2lkIHVwZGF0ZVJlbWFpbmluZ1F1b3RlcygpOwogCiAgICAg
c3RhdGljIHZvaWQgcmVtb3ZlQmVmb3JlUHNldWRvRWxlbWVudChFbGVtZW50JiwgUmVuZGVyVHJl
ZUJ1aWxkZXImKTsKQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICB2b2lk
IHVwZGF0ZVF1b3Rlc1VwVG8oUmVuZGVyUXVvdGUqKTsKICAgICAKLSAgICBib29sIG5lZWRzUHNl
dWRvRWxlbWVudChjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOworICAgIGJvb2wgbmVlZHNQ
c2V1ZG9FbGVtZW50KGNvbnN0IFJlbmRlclN0eWxlKik7CiAKICAgICBSZW5kZXJUcmVlVXBkYXRl
ciYgbV91cGRhdGVyOwogICAgIFdlYWtQdHI8UmVuZGVyUXVvdGU+IG1fcHJldmlvdXNVcGRhdGVk
UXVvdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKaW5kZXgg
ZWU5Y2IxYTljYzI2NzJlNjgyNTM4MWUwNWY5OTQ4NjNhY2I4ZWZlYi4uYmVmZTc1OTA3NDQ1ZDFi
YmEzMTdjYWUxYTAxYjEyNTI4NzhiMGI4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5
bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcApAQCAtMTc2LDcgKzE3Niw3IEBAIHN0YXRpYyBib29sIGFmZmVjdHNS
ZW5kZXJlZFN1YnRyZWUoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0
eWxlCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1zdGF0aWMgRGVzY2VuZGFudHNUb1Jlc29sdmUg
Y29tcHV0ZURlc2NlbmRhbnRzVG9SZXNvbHZlKENoYW5nZSBjaGFuZ2UsIFZhbGlkaXR5IHZhbGlk
aXR5LCBEZXNjZW5kYW50c1RvUmVzb2x2ZSBwYXJlbnREZXNjZW5kYW50c1RvUmVzb2x2ZSkKK2F1
dG8gVHJlZVJlc29sdmVyOjpjb21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUoQ2hhbmdlIGNoYW5n
ZSwgVmFsaWRpdHkgdmFsaWRpdHksIERlc2NlbmRhbnRzVG9SZXNvbHZlIHBhcmVudERlc2NlbmRh
bnRzVG9SZXNvbHZlKSAtPiBEZXNjZW5kYW50c1RvUmVzb2x2ZQogewogICAgIGlmIChwYXJlbnRE
ZXNjZW5kYW50c1RvUmVzb2x2ZSA9PSBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsKQogICAgICAg
ICByZXR1cm4gRGVzY2VuZGFudHNUb1Jlc29sdmU6OkFsbDsKQEAgLTE5Niw3ICsxOTYsNyBAQCBz
dGF0aWMgRGVzY2VuZGFudHNUb1Jlc29sdmUgY29tcHV0ZURlc2NlbmRhbnRzVG9SZXNvbHZlKENo
YW5nZSBjaGFuZ2UsIFZhbGlkaXR5CiAgICAgcmV0dXJuIERlc2NlbmRhbnRzVG9SZXNvbHZlOjpO
b25lOwogfTsKIAotRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChF
bGVtZW50JiBlbGVtZW50KQorYXV0byBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpIC0+IHN0ZDo6cGFpcjxFbGVtZW50VXBkYXRlLCBEZXNjZW5kYW50c1RvUmVz
b2x2ZT4KIHsKICAgICBpZiAobV9kaWRTZWVQZW5kaW5nU3R5bGVzaGVldCAmJiAhZWxlbWVudC5y
ZW5kZXJlcigpICYmICFtX2RvY3VtZW50LmlzSWdub3JpbmdQZW5kaW5nU3R5bGVzaGVldHMoKSkg
ewogICAgICAgICBtX2RvY3VtZW50LnNldEhhc05vZGVzV2l0aE1pc3NpbmdTdHlsZSgpOwpAQCAt
MjQ5LDE1ICsyNDksMjEgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxl
bWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICB9CiAgICAgfQogCi0gICAgUHNldWRvSWRU
b0VsZW1lbnRVcGRhdGVNYXAgcHNldWRvVXBkYXRlczsKLSAgICBpZiAoYXV0byBtYXJrZXJFbGVt
ZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6
Ok1hcmtlcikpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpNYXJrZXIsIFdU
Rk1vdmUoKm1hcmtlckVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBiZWZvcmVFbGVtZW50
VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJl
Zm9yZSkpCi0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCZWZvcmUsIFdURk1v
dmUoKmJlZm9yZUVsZW1lbnRVcGRhdGUpKTsKLSAgICBpZiAoYXV0byBhZnRlckVsZW1lbnRVcGRh
dGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QWZ0ZXIp
KQotICAgICAgICBwc2V1ZG9VcGRhdGVzLnNldChQc2V1ZG9JZDo6QWZ0ZXIsIFdURk1vdmUoKmFm
dGVyRWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGJhY2tkcm9wRWxlbWVudFVwZGF0ZSA9
IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpCYWNrZHJvcCkp
Ci0gICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpCYWNrZHJvcCwgV1RGTW92ZSgq
YmFja2Ryb3BFbGVtZW50VXBkYXRlKSk7CisgICAgYXV0byByZXNvbHZlQW5kQWRkUHNldWRvRWxl
bWVudFN0eWxlID0gWyZdKFBzZXVkb0lkIHBzZXVkb0lkKSB7CisgICAgICAgIGF1dG8gcHNldWRv
RWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIHBzZXVk
b0lkKTsKKyAgICAgICAgaWYgKCFwc2V1ZG9FbGVtZW50VXBkYXRlKQorICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAocHNldWRvRWxlbWVudFVwZGF0ZS0+Y2hhbmdlICE9IENoYW5nZTo6
Tm9uZSkKKyAgICAgICAgICAgIHVwZGF0ZS5jaGFuZ2UgPSBzdGQ6Om1heCh1cGRhdGUuY2hhbmdl
LCBDaGFuZ2U6Ok5vbkluaGVyaXRlZCk7CisgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VXBkYXRl
LT5yZWNvbXBvc2l0ZUxheWVyKQorICAgICAgICAgICAgdXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIg
PSB0cnVlOworICAgICAgICB1cGRhdGUuc3R5bGUtPmFkZENhY2hlZFBzZXVkb1N0eWxlKFdURk1v
dmUocHNldWRvRWxlbWVudFVwZGF0ZS0+c3R5bGUpKTsKKyAgICB9OworCisgICAgcmVzb2x2ZUFu
ZEFkZFBzZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6TWFya2VyKTsKKyAgICByZXNvbHZlQW5k
QWRkUHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCZWZvcmUpOworICAgIHJlc29sdmVBbmRB
ZGRQc2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6OkFmdGVyKTsKKyAgICByZXNvbHZlQW5kQWRk
UHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpCYWNrZHJvcCk7CiAKICNpZiBFTkFCTEUoVE9V
Q0hfQUNUSU9OX1JFR0lPTlMpCiAgICAgLy8gRklYTUU6IFRyYWNrIHRoaXMgZXhhY3RseS4KQEAg
LTI2OSw3ICsyNzUsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0TWF5SGF2ZUVkaXRh
YmxlRWxlbWVudHMoKTsKICNlbmRpZgogCi0gICAgcmV0dXJuIHsgV1RGTW92ZSh1cGRhdGUpLCBk
ZXNjZW5kYW50c1RvUmVzb2x2ZSwgV1RGTW92ZShwc2V1ZG9VcGRhdGVzKSB9OworICAgIHJldHVy
biB7IFdURk1vdmUodXBkYXRlKSwgZGVzY2VuZGFudHNUb1Jlc29sdmUgfTsKIH0KIAogc3RkOjpv
cHRpb25hbDxFbGVtZW50VXBkYXRlPiBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlLCBQc2V1
ZG9JZCBwc2V1ZG9JZCkKQEAgLTQ0Nyw3ICs0NTMsNyBAQCBzdGF0aWMgYm9vbCBzaG91bGRSZXNv
bHZlUHNldWRvRWxlbWVudChjb25zdCBQc2V1ZG9FbGVtZW50KiBwc2V1ZG9FbGVtZW50KQogICAg
IHJldHVybiBwc2V1ZG9FbGVtZW50LT5uZWVkc1N0eWxlUmVjYWxjKCk7CiB9CiAKLXN0YXRpYyBi
b29sIHNob3VsZFJlc29sdmVFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIERlc2NlbmRh
bnRzVG9SZXNvbHZlIHBhcmVudERlc2NlbmRhbnRzVG9SZXNvbHZlKQorYm9vbCBUcmVlUmVzb2x2
ZXI6OnNob3VsZFJlc29sdmVFbGVtZW50KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIERlc2NlbmRh
bnRzVG9SZXNvbHZlIHBhcmVudERlc2NlbmRhbnRzVG9SZXNvbHZlKQogewogICAgIGlmIChlbGVt
ZW50LnN0eWxlVmFsaWRpdHkoKSAhPSBWYWxpZGl0eTo6VmFsaWQpCiAgICAgICAgIHJldHVybiB0
cnVlOwpAQCAtNTA2LDcgKzUxMiw3IEBAIHN0YXRpYyBzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5
bGU+IGNyZWF0ZUluaGVyaXRlZERpc3BsYXlDb250ZW50c1N0eWxlSWZOZWVkZWQoCiAgICAgcmV0
dXJuIHN0eWxlOwogfQogCi1zdGF0aWMgdm9pZCByZXNldERlc2NlbmRhbnRTdHlsZVJlbGF0aW9u
cyhFbGVtZW50JiBlbGVtZW50LCBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVz
b2x2ZSkKK3ZvaWQgVHJlZVJlc29sdmVyOjpyZXNldERlc2NlbmRhbnRTdHlsZVJlbGF0aW9ucyhF
bGVtZW50JiBlbGVtZW50LCBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVzb2x2
ZSkKIHsKICAgICBzd2l0Y2ggKGRlc2NlbmRhbnRzVG9SZXNvbHZlKSB7CiAgICAgY2FzZSBEZXNj
ZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZToKQEAgLTU3NiwxNyArNTgyLDE3IEBAIHZvaWQgVHJlZVJl
c29sdmVyOjpyZXNvbHZlQ29tcG9zZWRUcmVlKCkKICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhh
c0N1c3RvbVN0eWxlUmVzb2x2ZUNhbGxiYWNrcygpKQogICAgICAgICAgICAgICAgIGVsZW1lbnQu
d2lsbFJlY2FsY1N0eWxlKHBhcmVudC5jaGFuZ2UpOwogCi0gICAgICAgICAgICBhdXRvIGVsZW1l
bnRVcGRhdGVzID0gcmVzb2x2ZUVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgICAgICBhdXRvIFtl
bGVtZW50VXBkYXRlLCBlbGVtZW50RGVzY2VuZGFudHNUb1Jlc29sdmVdID0gcmVzb2x2ZUVsZW1l
bnQoZWxlbWVudCk7CiAKICAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0N1c3RvbVN0eWxlUmVz
b2x2ZUNhbGxiYWNrcygpKQotICAgICAgICAgICAgICAgIGVsZW1lbnQuZGlkUmVjYWxjU3R5bGUo
ZWxlbWVudFVwZGF0ZXMudXBkYXRlLmNoYW5nZSk7CisgICAgICAgICAgICAgICAgZWxlbWVudC5k
aWRSZWNhbGNTdHlsZShlbGVtZW50VXBkYXRlLmNoYW5nZSk7CiAKLSAgICAgICAgICAgIHN0eWxl
ID0gZWxlbWVudFVwZGF0ZXMudXBkYXRlLnN0eWxlLmdldCgpOwotICAgICAgICAgICAgY2hhbmdl
ID0gZWxlbWVudFVwZGF0ZXMudXBkYXRlLmNoYW5nZTsKLSAgICAgICAgICAgIGRlc2NlbmRhbnRz
VG9SZXNvbHZlID0gZWxlbWVudFVwZGF0ZXMuZGVzY2VuZGFudHNUb1Jlc29sdmU7CisgICAgICAg
ICAgICBzdHlsZSA9IGVsZW1lbnRVcGRhdGUuc3R5bGUuZ2V0KCk7CisgICAgICAgICAgICBjaGFu
Z2UgPSBlbGVtZW50VXBkYXRlLmNoYW5nZTsKKyAgICAgICAgICAgIGRlc2NlbmRhbnRzVG9SZXNv
bHZlID0gZWxlbWVudERlc2NlbmRhbnRzVG9SZXNvbHZlOwogCi0gICAgICAgICAgICBpZiAoZWxl
bWVudFVwZGF0ZXMudXBkYXRlLnN0eWxlKQotICAgICAgICAgICAgICAgIG1fdXBkYXRlLT5hZGRF
bGVtZW50KGVsZW1lbnQsIHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRVcGRhdGVzKSk7
CisgICAgICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZS5zdHlsZSkKKyAgICAgICAgICAgICAgICBt
X3VwZGF0ZS0+YWRkRWxlbWVudChlbGVtZW50LCBwYXJlbnQuZWxlbWVudCwgV1RGTW92ZShlbGVt
ZW50VXBkYXRlKSk7CiAKICAgICAgICAgICAgIGNsZWFyTmVlZHNTdHlsZVJlc29sdXRpb24oZWxl
bWVudCk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5o
CmluZGV4IDAxOGQ2YWRkYzA0Mjk5OWE4YzMxMWVjY2VkNzY2Y2M2OGZhYmQxN2QuLmU4MGFiMjcz
MDVjMmFkZjEzYWJkZWZmNDk1ZTE0OTI0NzBjNjA1NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuaApAQCAtNjUsNyArNjUsOCBAQCBwcml2YXRlOgogICAgIGVudW0g
Y2xhc3MgUXVlcnlDb250YWluZXJBY3Rpb24gOiB1aW50OF90IHsgTm9uZSwgQ29udGludWUsIExh
eW91dCB9OwogICAgIFF1ZXJ5Q29udGFpbmVyQWN0aW9uIHVwZGF0ZVF1ZXJ5Q29udGFpbmVyKEVs
ZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYpOwogCi0gICAgRWxlbWVudFVwZGF0ZXMgcmVzb2x2
ZUVsZW1lbnQoRWxlbWVudCYpOworICAgIGVudW0gY2xhc3MgRGVzY2VuZGFudHNUb1Jlc29sdmUg
OiB1aW50OF90IHsgTm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwg
QWxsIH07CisgICAgc3RkOjpwYWlyPEVsZW1lbnRVcGRhdGUsIERlc2NlbmRhbnRzVG9SZXNvbHZl
PiByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7CiAKICAgICBzdGF0aWMgRWxlbWVudFVwZGF0ZSBj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiwg
Y29uc3QgU3R5bGVhYmxlJiwgQ2hhbmdlLCBjb25zdCBSZXNvbHV0aW9uQ29udGV4dCYpOwogICAg
IHN0ZDo6b3B0aW9uYWw8RWxlbWVudFVwZGF0ZT4gcmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQm
LCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwpAQCAtMTA1LDYgKzEwNiwxMCBAQCBw
cml2YXRlOgogICAgIHZvaWQgcG9wUGFyZW50KCk7CiAgICAgdm9pZCBwb3BQYXJlbnRzVG9EZXB0
aCh1bnNpZ25lZCBkZXB0aCk7CiAKKyAgICBzdGF0aWMgRGVzY2VuZGFudHNUb1Jlc29sdmUgY29t
cHV0ZURlc2NlbmRhbnRzVG9SZXNvbHZlKENoYW5nZSwgVmFsaWRpdHksIERlc2NlbmRhbnRzVG9S
ZXNvbHZlKTsKKyAgICBzdGF0aWMgYm9vbCBzaG91bGRSZXNvbHZlRWxlbWVudChjb25zdCBFbGVt
ZW50JiwgRGVzY2VuZGFudHNUb1Jlc29sdmUpOworICAgIHN0YXRpYyB2b2lkIHJlc2V0RGVzY2Vu
ZGFudFN0eWxlUmVsYXRpb25zKEVsZW1lbnQmLCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CisKICAg
ICBSZXNvbHV0aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNvbnRleHQoKTsKICAgICBSZXNvbHV0
aW9uQ29udGV4dCBtYWtlUmVzb2x1dGlvbkNvbnRleHRGb3JQc2V1ZG9FbGVtZW50KGNvbnN0IEVs
ZW1lbnRVcGRhdGUmKTsKICAgICBjb25zdCBSZW5kZXJTdHlsZSogcGFyZW50Qm94U3R5bGUoKSBj
b25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAppbmRleCBkZDY2NjJjNTFmMmZk
NWI2MzRlMzA1YWZhYTlkZjI5NjZlZDM3OGY2Li4yNDI3YjI2NTc0YjBjMmZhYmYzMDA3NDFkZGRi
ZTRiZjhjZWI5MThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCkBAIC00MSw3
ICs0MSw3IEBAIFVwZGF0ZTo6VXBkYXRlKERvY3VtZW50JiBkb2N1bWVudCkKIHsKIH0KIAotY29u
c3QgRWxlbWVudFVwZGF0ZXMqIFVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMoY29uc3QgRWxlbWVudCYg
ZWxlbWVudCkgY29uc3QKK2NvbnN0IEVsZW1lbnRVcGRhdGUqIFVwZGF0ZTo6ZWxlbWVudFVwZGF0
ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdAogewogICAgIGF1dG8gaXQgPSBtX2VsZW1l
bnRzLmZpbmQoJmVsZW1lbnQpOwogICAgIGlmIChpdCA9PSBtX2VsZW1lbnRzLmVuZCgpKQpAQCAt
NDksNyArNDksNyBAQCBjb25zdCBFbGVtZW50VXBkYXRlcyogVXBkYXRlOjplbGVtZW50VXBkYXRl
cyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdAogICAgIHJldHVybiAmaXQtPnZhbHVlOwog
fQogCi1FbGVtZW50VXBkYXRlcyogVXBkYXRlOjplbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50
JiBlbGVtZW50KQorRWxlbWVudFVwZGF0ZSogVXBkYXRlOjplbGVtZW50VXBkYXRlKGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7CiAgICAgYXV0byBpdCA9IG1fZWxlbWVudHMuZmluZCgmZWxlbWVu
dCk7CiAgICAgaWYgKGl0ID09IG1fZWxlbWVudHMuZW5kKCkpCkBAIC02Nyw4ICs2Nyw4IEBAIGNv
bnN0IFRleHRVcGRhdGUqIFVwZGF0ZTo6dGV4dFVwZGF0ZShjb25zdCBUZXh0JiB0ZXh0KSBjb25z
dAogCiBjb25zdCBSZW5kZXJTdHlsZSogVXBkYXRlOjplbGVtZW50U3R5bGUoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogdXBkYXRlcyA9IGVsZW1lbnRVcGRh
dGVzKGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gdXBkYXRlcy0+dXBkYXRlLnN0eWxlLmdldCgp
OworICAgIGlmIChhdXRvKiB1cGRhdGUgPSBlbGVtZW50VXBkYXRlKGVsZW1lbnQpKQorICAgICAg
ICByZXR1cm4gdXBkYXRlLT5zdHlsZS5nZXQoKTsKICAgICBhdXRvKiByZW5kZXJlciA9IGVsZW1l
bnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKQEAgLTc3LDE1ICs3NywxNSBAQCBjb25zdCBSZW5kZXJTdHlsZSogVXBkYXRlOjplbGVtZW50
U3R5bGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkgY29uc3QKIAogUmVuZGVyU3R5bGUqIFVwZGF0
ZTo6ZWxlbWVudFN0eWxlKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKGF1dG8q
IHVwZGF0ZXMgPSBlbGVtZW50VXBkYXRlcyhlbGVtZW50KSkKLSAgICAgICAgcmV0dXJuIHVwZGF0
ZXMtPnVwZGF0ZS5zdHlsZS5nZXQoKTsKKyAgICBpZiAoYXV0byogdXBkYXRlID0gZWxlbWVudFVw
ZGF0ZShlbGVtZW50KSkKKyAgICAgICAgcmV0dXJuIHVwZGF0ZS0+c3R5bGUuZ2V0KCk7CiAgICAg
YXV0byogcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCk7CiAgICAgaWYgKCFyZW5kZXJlcikK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcmV0dXJuICZyZW5kZXJlci0+bXV0YWJsZVN0
eWxlKCk7CiB9CiAKLXZvaWQgVXBkYXRlOjphZGRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIEVs
ZW1lbnQqIHBhcmVudCwgRWxlbWVudFVwZGF0ZXMmJiBlbGVtZW50VXBkYXRlcykKK3ZvaWQgVXBk
YXRlOjphZGRFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIEVsZW1lbnQqIHBhcmVudCwgRWxlbWVu
dFVwZGF0ZSYmIGVsZW1lbnRVcGRhdGUpCiB7CiAgICAgQVNTRVJUKCFtX2VsZW1lbnRzLmNvbnRh
aW5zKCZlbGVtZW50KSk7CiAgICAgQVNTRVJUKGNvbXBvc2VkVHJlZUFuY2VzdG9ycyhlbGVtZW50
KS5maXJzdCgpID09IHBhcmVudCk7CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgVXBkYXRlOjphZGRF
bGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIEVsZW1lbnQqIHBhcmVudCwgRWxlbWVudFVwZGF0ZXMm
JiBlbGVtCiAgICAgbV9yb290cy5yZW1vdmUoJmVsZW1lbnQpOwogICAgIGFkZFBvc3NpYmxlUm9v
dChwYXJlbnQpOwogCi0gICAgbV9lbGVtZW50cy5hZGQoJmVsZW1lbnQsIFdURk1vdmUoZWxlbWVu
dFVwZGF0ZXMpKTsKKyAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgV1RGTW92ZShlbGVtZW50
VXBkYXRlKSk7CiB9CiAKIHZvaWQgVXBkYXRlOjphZGRUZXh0KFRleHQmIHRleHQsIEVsZW1lbnQq
IHBhcmVudCwgVGV4dFVwZGF0ZSYmIHRleHRVcGRhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRh
dGUuaAppbmRleCBjMGQ0ZDA2ZWE4ZjlhNDgzZWMxYTk5NTkxMjJlYzNmNzA4ODU5ZWY1Li4xZjgy
MDlkYzU3OWZlYzAwODU0OGVhNTJmYmEyNTVmNDNkNTUxMDFkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmgKQEAgLTQ3LDE2ICs0Nyw2IEBAIHN0cnVjdCBFbGVtZW50VXBkYXRlIHsKICAg
ICBib29sIHJlY29tcG9zaXRlTGF5ZXIgeyBmYWxzZSB9OwogfTsKIAotZW51bSBjbGFzcyBEZXNj
ZW5kYW50c1RvUmVzb2x2ZSB7IE5vbmUsIENoaWxkcmVuV2l0aEV4cGxpY2l0SW5oZXJpdCwgQ2hp
bGRyZW4sIEFsbCB9OwotCi11c2luZyBQc2V1ZG9JZFRvRWxlbWVudFVwZGF0ZU1hcCA9IEhhc2hN
YXA8UHNldWRvSWQsIEVsZW1lbnRVcGRhdGUsIEludEhhc2g8UHNldWRvSWQ+LCBXVEY6OlN0cm9u
Z0VudW1IYXNoVHJhaXRzPFBzZXVkb0lkPj47Ci0KLXN0cnVjdCBFbGVtZW50VXBkYXRlcyB7Ci0g
ICAgRWxlbWVudFVwZGF0ZSB1cGRhdGU7Ci0gICAgRGVzY2VuZGFudHNUb1Jlc29sdmUgZGVzY2Vu
ZGFudHNUb1Jlc29sdmUgeyBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6Tm9uZSB9OwotICAgIFBzZXVk
b0lkVG9FbGVtZW50VXBkYXRlTWFwIHBzZXVkb0VsZW1lbnRVcGRhdGVzOwotfTsKLQogc3RydWN0
IFRleHRVcGRhdGUgewogICAgIHVuc2lnbmVkIG9mZnNldCB7IDAgfTsKICAgICB1bnNpZ25lZCBs
ZW5ndGggeyBzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgfTsKQEAgLTcwLDgg
KzYwLDggQEAgcHVibGljOgogCiAgICAgY29uc3QgTGlzdEhhc2hTZXQ8UmVmUHRyPENvbnRhaW5l
ck5vZGU+PiYgcm9vdHMoKSBjb25zdCB7IHJldHVybiBtX3Jvb3RzOyB9CiAKLSAgICBjb25zdCBF
bGVtZW50VXBkYXRlcyogZWxlbWVudFVwZGF0ZXMoY29uc3QgRWxlbWVudCYpIGNvbnN0OwotICAg
IEVsZW1lbnRVcGRhdGVzKiBlbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50Jik7CisgICAgY29u
c3QgRWxlbWVudFVwZGF0ZSogZWxlbWVudFVwZGF0ZShjb25zdCBFbGVtZW50JikgY29uc3Q7Cisg
ICAgRWxlbWVudFVwZGF0ZSogZWxlbWVudFVwZGF0ZShjb25zdCBFbGVtZW50Jik7CiAKICAgICBj
b25zdCBUZXh0VXBkYXRlKiB0ZXh0VXBkYXRlKGNvbnN0IFRleHQmKSBjb25zdDsKIApAQCAtODMs
NyArNzMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gIXNp
emUoKTsgfQogICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJldHVybiBtX2VsZW1lbnRzLnNp
emUoKSArIG1fdGV4dHMuc2l6ZSgpOyB9CiAKLSAgICB2b2lkIGFkZEVsZW1lbnQoRWxlbWVudCYs
IEVsZW1lbnQqIHBhcmVudCwgRWxlbWVudFVwZGF0ZXMmJik7CisgICAgdm9pZCBhZGRFbGVtZW50
KEVsZW1lbnQmLCBFbGVtZW50KiBwYXJlbnQsIEVsZW1lbnRVcGRhdGUmJik7CiAgICAgdm9pZCBh
ZGRUZXh0KFRleHQmLCBFbGVtZW50KiBwYXJlbnQsIFRleHRVcGRhdGUmJik7CiAgICAgdm9pZCBh
ZGRUZXh0KFRleHQmLCBUZXh0VXBkYXRlJiYpOwogCkBAIC05Miw3ICs4Miw3IEBAIHByaXZhdGU6
CiAKICAgICBSZWY8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTGlzdEhhc2hTZXQ8UmVmUHRy
PENvbnRhaW5lck5vZGU+PiBtX3Jvb3RzOwotICAgIEhhc2hNYXA8UmVmUHRyPGNvbnN0IEVsZW1l
bnQ+LCBFbGVtZW50VXBkYXRlcz4gbV9lbGVtZW50czsKKyAgICBIYXNoTWFwPFJlZlB0cjxjb25z
dCBFbGVtZW50PiwgRWxlbWVudFVwZGF0ZT4gbV9lbGVtZW50czsKICAgICBIYXNoTWFwPFJlZlB0
cjxjb25zdCBUZXh0PiwgVGV4dFVwZGF0ZT4gbV90ZXh0czsKIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453725</attachid>
            <date>2022-03-03 06:05:31 -0800</date>
            <delta_ts>2022-03-03 08:12:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237413-20220303160530.patch</filename>
            <type>text/plain</type>
            <size>34001</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uZTg1MzdmMzcxNmY0NmE0MWRmYjdmMGQ5YmFjOTIy
ODU1ZGNjZDIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY3IEBACisyMDIyLTAzLTAzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwc2V1ZG8g
ZWxlbWVudCByZXNvbHV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzc0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBSZW1vdmUgRWxlbWVudFVwZGF0ZXMgc3RydWN0IHdpdGggYSBtYXAgdGhhdCBj
b250YWlucyBwc2V1ZG8gZWxlbWVudCB1cGRhdGVzLgorICAgICAgICBJbnN0ZWFkIHVzZSBhIHNp
bmdsZSBFbGVtZW50VXBkYXRlIHN0cnVjdCBhbmQgcGFzcyB0aGUgcHNldWRvIGVsZW1lbnQgc3R5
bGVzCisgICAgICAgIGFzIGNhY2hlZCBwc2V1ZG8gc3R5bGVzIG9mIHRoZSBlbGVtZW50IFJlbmRl
clN0eWxlLiBQcmV2aW91c2x5IFJlbmRlclRyZWVVcGRhdGVyCisgICAgICAgIHdvdWxkIG1vdmUg
dGhlbSB0aGVyZS4KKworICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQ
YXJlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRl
clRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnB1c2hQYXJlbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnBvcFBhcmVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVyRGVzY2Vu
ZGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUVsZW1l
bnRSZW5kZXJlcik6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmg6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6
R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50
KToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0
ZWRDb250ZW50Lmg6CisgICAgICAgICogc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6Y29tcHV0ZURlc2NlbmRhbnRzVG9S
ZXNvbHZlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnNob3VsZFJl
c29sdmVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJl
c2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpU
cmVlUmVzb2x2ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5
bGU6OmNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6c2hvdWxkUmVzb2x2ZUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGU6OnJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oOgorICAgICAgICAqIHN0eWxlL1N0eWxl
VXBkYXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpVcGRhdGU6OmVsZW1lbnRVcGRh
dGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VXBkYXRlOjplbGVtZW50U3R5bGUgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFN0eWxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpVcGRhdGU6OmFkZEVsZW1lbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMgY29uc3QpOiBEZWxldGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0ZXMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN0eWxlL1N0eWxlVXBkYXRlLmg6CisKKzIwMjItMDMtMDMgIEFudHRpIEtvaXZpc3Rv
ICA8YW50dGlAYXBwbGUuY29tPgorCisgICAgICAgIFNpbXBsaWZ5IHBzZXVkbyBlbGVtZW50IHJl
c29sdXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzNzQxMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFdlIGNhbiBhZGQgcHNldWRvIGVsZW1lbnQgc3R5bGVzIGRpcmVjdGx5IHRvIHRoZWlyIHBhcmVu
dCBzdHlsZSBpbnN0ZWFkIG9mIGhhdmluZyBhIHNlcGFyYXRlIG1hcCBmb3IgdGhhdC4KKworICAg
ICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRD
b250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRy
ZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQpOgorICAgICAg
ICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQu
aDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudCk6CisgICAgICAgICogc3R5
bGUvU3R5bGVVcGRhdGUuaDoKKwogMjAyMi0wMi0yOCAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1hdGlvbnNdIHdlYi1hbmltYXRpb25zL2lu
dGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1hcmd1bWVudC0w
MDEuaHRtbCBpcyBhIHVuaXF1ZSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBlOGY0NGY1MjBkNzg2ZThhNmI0ZTI4YTJiZWEx
ODU5ZTZmOTc4ZjY3Li40YzQzM2Q3MmExZGEwZWE4Y2RlN2VkZTI5NjAyZTM3MGYyNGFkMDk4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5jcHAKQEAg
LTExMSw2ICsxMTEsMjAgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25lKGNvbnN0IFJl
bmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gUmVuZGVyU3R5bGUoc3R5bGUsIENsb25lKTsK
IH0KIAorUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25lSW5jbHVkaW5nUHNldWRvRWxlbWVu
dHMoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8gbmV3U3R5bGUgPSBSZW5k
ZXJTdHlsZShzdHlsZSwgQ2xvbmUpOworCisgICAgaWYgKCFzdHlsZS5tX2NhY2hlZFBzZXVkb1N0
eWxlcykKKyAgICAgICAgcmV0dXJuIG5ld1N0eWxlOworCisgICAgZm9yIChhdXRvJiBwc2V1ZG9F
bGVtZW50U3R5bGUgOiAqc3R5bGUubV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKKyAgICAgICAgYXV0
byBjbG9uZSA9IG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KGNsb25lSW5jbHVkaW5nUHNldWRvRWxl
bWVudHMoKnBzZXVkb0VsZW1lbnRTdHlsZSkpOworICAgICAgICBuZXdTdHlsZS5hZGRDYWNoZWRQ
c2V1ZG9TdHlsZShXVEZNb3ZlKGNsb25lKSk7CisgICAgfQorICAgIHJldHVybiBuZXdTdHlsZTsK
K30KKwogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIo
Y29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHJldHVybiBtYWtlVW5pcXVlPFJlbmRl
clN0eWxlPihzdHlsZSwgQ2xvbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
UmVuZGVyU3R5bGUuaAppbmRleCAwOTA1OGY3OWNlNzE3NTUwMzRmZGE4NDhkNDJhYzZhOTkyZDQ0
ZTY4Li5hN2Y2NzUxZWY4MmE1NmJkYmMxYzdkMmViNmRkYjkyOThlMzU0M2E3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTUxLDYgKzE1MSw3
IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBjcmVh
dGVQdHIoKTsKIAogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjbG9uZShjb25zdCBSZW5kZXJTdHls
ZSYpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjbG9uZUluY2x1ZGluZ1BzZXVkb0VsZW1lbnRz
KGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4gY2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIHN0YXRpYyBSZW5kZXJT
dHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRlclN0eWxlJiBw
YXJlbnRTdHlsZSwgRGlzcGxheVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggM2VjNDUxYTk2MTM3
ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uZDA5YTEyOTVhN2I5MzMyMzZiMTg2ZWZhMDdh
ZGFmNzIzOGQxNWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0
aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
dXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC02OSw5ICs2OSw5IEBAIFJlbmRlclRy
ZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290KQogewogfQogCi1S
ZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3Qg
U3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQorUmVuZGVyVHJlZVVwZGF0ZXI6OlBhcmVu
dDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB1
cGRhdGUpCiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQotICAgICwgdXBkYXRlcyh1cGRhdGVzKQor
ICAgICwgdXBkYXRlKHVwZGF0ZSkKICAgICAsIHJlbmRlclRyZWVQb3NpdGlvbihlbGVtZW50LnJl
bmRlcmVyKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoUmVuZGVyVHJlZVBvc2l0aW9uKCplbGVtZW50
LnJlbmRlcmVyKCkpKSA6IHN0ZDo6bnVsbG9wdCkKIHsKIH0KQEAgLTE2Nyw3ICsxNjcsNyBAQCB2
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJv
b3QpCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAgICAgICAgICAgYXV0byYgdGV4
dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAgYXV0byogdGV4dFVwZGF0ZSA9
IG1fc3R5bGVVcGRhdGUtPnRleHRVcGRhdGUodGV4dCk7Ci0gICAgICAgICAgICBib29sIGRpZENy
ZWF0ZVBhcmVudCA9IHBhcmVudCgpLnVwZGF0ZXMgJiYgcGFyZW50KCkudXBkYXRlcy0+dXBkYXRl
LmNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAgICAgIGJvb2wgZGlk
Q3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlICYmIHBhcmVudCgpLnVwZGF0ZS0+Y2hhbmdl
ID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyOwogICAgICAgICAgICAgYm9vbCBtYXlOZWVkVXBk
YXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudCgpLmRpZENyZWF0ZU9y
RGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5kYXRhKCkuaXNBbGxTcGVjaWFsQ2hhcmFjdGVy
czxpc0hUTUxTcGFjZT4oKTsKICAgICAgICAgICAgIGlmIChkaWRDcmVhdGVQYXJlbnQgfHwgdGV4
dFVwZGF0ZSB8fCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlcikKICAgICAgICAg
ICAgICAgICB1cGRhdGVUZXh0UmVuZGVyZXIodGV4dCwgdGV4dFVwZGF0ZSk7CkBAIC0xNzksMTgg
KzE3OSwxOCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRh
aW5lck5vZGUmIHJvb3QpCiAKICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25jYXN0PEVsZW1l
bnQ+KG5vZGUpOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnRVcGRhdGVzID0gbV9zdHlsZVVwZGF0
ZS0+ZWxlbWVudFVwZGF0ZXMoZWxlbWVudCk7CisgICAgICAgIGF1dG8qIGVsZW1lbnRVcGRhdGUg
PSBtX3N0eWxlVXBkYXRlLT5lbGVtZW50VXBkYXRlKGVsZW1lbnQpOwogCiAgICAgICAgIC8vIFdl
IGhvcCB0aHJvdWdoIGRpc3BsYXk6IGNvbnRlbnRzIGVsZW1lbnRzIGluIGZpbmRSZW5kZXJpbmdS
b290LCBzbwogICAgICAgICAvLyB0aGVyZSBtYXkgYmUgb3RoZXIgdXBkYXRlcyBkb3duIHRoZSB0
cmVlLgotICAgICAgICBpZiAoIWVsZW1lbnRVcGRhdGVzICYmICFlbGVtZW50Lmhhc0Rpc3BsYXlD
b250ZW50cygpKSB7CisgICAgICAgIGlmICghZWxlbWVudFVwZGF0ZSAmJiAhZWxlbWVudC5oYXNE
aXNwbGF5Q29udGVudHMoKSkgewogICAgICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVs
ZW1lbnQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGlsZHJlbigpOwog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoZWxlbWVudFVw
ZGF0ZXMpCi0gICAgICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1l
bnRVcGRhdGVzKTsKKyAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUpCisgICAgICAgICAgICB1cGRh
dGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGUpOwogCiAgICAgICAgIHN0
b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIApAQCAtMjAwLDcgKzIwMCw3IEBAIHZvaWQg
UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9kZSYgcm9vdCkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcHVzaFBhcmVudChl
bGVtZW50LCBlbGVtZW50VXBkYXRlcyk7CisgICAgICAgIHB1c2hQYXJlbnQoZWxlbWVudCwgZWxl
bWVudFVwZGF0ZSk7CiAKICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CiAgICAgfQpAQCAtMjIz
LDE4ICsyMjMsMTggQEAgUmVuZGVyVHJlZVBvc2l0aW9uJiBSZW5kZXJUcmVlVXBkYXRlcjo6cmVu
ZGVyVHJlZVBvc2l0aW9uKCkKICAgICByZXR1cm4gKnJlbmRlcmluZ1BhcmVudCgpLnJlbmRlclRy
ZWVQb3NpdGlvbjsKIH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cHVzaFBhcmVudChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0ZXMpCit2b2lk
IFJlbmRlclRyZWVVcGRhdGVyOjpwdXNoUGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
eWxlOjpFbGVtZW50VXBkYXRlKiB1cGRhdGUpCiB7Ci0gICAgbV9wYXJlbnRTdGFjay5hcHBlbmQo
UGFyZW50KGVsZW1lbnQsIHVwZGF0ZXMpKTsKKyAgICBtX3BhcmVudFN0YWNrLmFwcGVuZChQYXJl
bnQoZWxlbWVudCwgdXBkYXRlKSk7CiAKLSAgICB1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhlbGVt
ZW50LCB1cGRhdGVzKTsKKyAgICB1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhlbGVtZW50LCB1cGRh
dGUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwb3BQYXJlbnQoKQogewogICAgIGF1
dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2subGFzdCgpOwogICAgIGlmIChwYXJlbnQuZWxlbWVu
dCkKLSAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygqcGFyZW50LmVsZW1lbnQsIHBhcmVu
dC51cGRhdGVzKTsKKyAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygqcGFyZW50LmVsZW1l
bnQsIHBhcmVudC51cGRhdGUpOwogCiAgICAgaWYgKCZwYXJlbnQgIT0gJnJlbmRlcmluZ1BhcmVu
dCgpKQogICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5pbnZhbGlkYXRlTmV4dFNpYmxpbmco
KTsKQEAgLTI1MCwxNiArMjUwLDE2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnBvcFBhcmVu
dHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKQogICAgICAgICBwb3BQYXJlbnQoKTsKIH0KIAotdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQordm9pZCBSZW5kZXJU
cmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSkKIHsKLSAgICBpZiAodXBkYXRlcykKLSAg
ICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgKnVw
ZGF0ZXMsIFBzZXVkb0lkOjpCZWZvcmUpOworICAgIGlmICh1cGRhdGUpCisgICAgICAgIGdlbmVy
YXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsICp1cGRhdGUsIFBzZXVk
b0lkOjpCZWZvcmUpOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVBZnRlckRl
c2NlbmRhbnRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyog
dXBkYXRlcykKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVyRGVzY2VuZGFudHMo
RWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSkKIHsK
LSAgICBpZiAodXBkYXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVk
b0VsZW1lbnQoZWxlbWVudCwgKnVwZGF0ZXMsIFBzZXVkb0lkOjpBZnRlcik7CisgICAgaWYgKHVw
ZGF0ZSkKKyAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxl
bWVudCwgKnVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1dG8qIHJlbmRlcmVyID0g
ZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0yNjgsNyArMjY4LDcg
QEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWwKICAgICBnZW5lcmF0ZWRDb250ZW50KCkudXBkYXRl
QmFja2Ryb3BSZW5kZXJlcigqcmVuZGVyZXIpOwogICAgIG1fYnVpbGRlci51cGRhdGVBZnRlckRl
c2NlbmRhbnRzKCpyZW5kZXJlcik7CiAKLSAgICBpZiAoZWxlbWVudC5oYXNDdXN0b21TdHlsZVJl
c29sdmVDYWxsYmFja3MoKSAmJiB1cGRhdGVzICYmIHVwZGF0ZXMtPnVwZGF0ZS5jaGFuZ2UgPT0g
U3R5bGU6OkNoYW5nZTo6UmVuZGVyZXIpCisgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVS
ZXNvbHZlQ2FsbGJhY2tzKCkgJiYgdXBkYXRlICYmIHVwZGF0ZS0+Y2hhbmdlID09IFN0eWxlOjpD
aGFuZ2U6OlJlbmRlcmVyKQogICAgICAgICBlbGVtZW50LmRpZEF0dGFjaFJlbmRlcmVycygpOwog
fQogCkBAIC0zMDAsMjEgKzMwMCwxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJlclN0eWxlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXJTdHlsZQogICAgIG1f
YnVpbGRlci5ub3JtYWxpemVUcmVlQWZ0ZXJTdHlsZUNoYW5nZShyZW5kZXJlciwgb2xkU3R5bGUp
OwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzJiB1cGRhdGVzKQordm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQogewogI2lmIEVO
QUJMRShDT05URU5UX0NIQU5HRV9PQlNFUlZFUikKICAgICBDb250ZW50Q2hhbmdlT2JzZXJ2ZXI6
OlN0eWxlQ2hhbmdlU2NvcGUgb2JzZXJ2aW5nU2NvcGUobV9kb2N1bWVudCwgZWxlbWVudCk7CiAj
ZW5kaWYKIAotICAgIGF1dG8mIGVsZW1lbnRVcGRhdGUgPSB1cGRhdGVzLnVwZGF0ZTsKLSAgICBh
dXRvIGVsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqZWxlbWVudFVw
ZGF0ZS5zdHlsZSk7Ci0KLSAgICBmb3IgKGF1dG8mIGl0IDogdXBkYXRlcy5wc2V1ZG9FbGVtZW50
VXBkYXRlcykgewotICAgICAgICBhdXRvIHBzZXVkb0lkID0gaXQua2V5OwotICAgICAgICBpZiAo
cHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0
ZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxlbWVudFVwZGF0ZVN0eWxlLT5h
ZGRDYWNoZWRQc2V1ZG9TdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LnZhbHVlLnN0eWxl
KSk7Ci0gICAgfQorICAgIGF1dG8gZWxlbWVudFVwZGF0ZVN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lSW5jbHVkaW5nUHNldWRvRWxlbWVudHMoKmVsZW1lbnRVcGRhdGUuc3R5bGUpOwogCiAgICAg
Ym9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9IGVsZW1lbnRVcGRhdGUuY2hhbmdlID09IFN0
eWxlOjpDaGFuZ2U6OlJlbmRlcmVyICYmIChlbGVtZW50LnJlbmRlcmVyKCkgfHwgZWxlbWVudC5o
YXNEaXNwbGF5Q29udGVudHMoKSB8fCBlbGVtZW50LmlzSW5Ub3BMYXllcigpKTsKICAgICBpZiAo
c2hvdWxkVGVhckRvd25SZW5kZXJlcnMpIHsKQEAgLTMzMiw3ICszMjQsNyBAQCB2b2lkIFJlbmRl
clRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgY29u
c3QgU3R5bGU6OkVsZQogCiAgICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSBlbGVtZW50VXBk
YXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzOwogICAgIGlmICho
YXNEaXNwbGF5Q29udGVudHMpCi0gICAgICAgIGVsZW1lbnQuc3RvcmVEaXNwbGF5Q29udGVudHNT
dHlsZShXVEZNb3ZlKGVsZW1lbnRVcGRhdGVTdHlsZSkpOworICAgICAgICBlbGVtZW50LnN0b3Jl
RGlzcGxheUNvbnRlbnRzU3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RGTW92ZShlbGVt
ZW50VXBkYXRlU3R5bGUpKSk7CiAgICAgZWxzZQogICAgICAgICBlbGVtZW50LnJlc2V0Q29tcHV0
ZWRTdHlsZSgpOwogCkBAIC0zNDAsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGUK
ICAgICBpZiAoc2hvdWxkQ3JlYXRlTmV3UmVuZGVyZXIpIHsKICAgICAgICAgaWYgKGVsZW1lbnQu
aGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgICAgICBlbGVtZW50Lndp
bGxBdHRhY2hSZW5kZXJlcnMoKTsKLSAgICAgICAgY3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgV1RG
TW92ZSgqZWxlbWVudFVwZGF0ZVN0eWxlKSk7CisgICAgICAgIGNyZWF0ZVJlbmRlcmVyKGVsZW1l
bnQsIFdURk1vdmUoZWxlbWVudFVwZGF0ZVN0eWxlKSk7CiAKICAgICAgICAgcmVuZGVyaW5nUGFy
ZW50KCkuZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciA9IHRydWU7CiAgICAgICAgIHJl
dHVybjsKQEAgLTM1MSwxOSArMzQzLDE5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0
ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlCiAgICAg
YXV0byYgcmVuZGVyZXIgPSAqZWxlbWVudC5yZW5kZXJlcigpOwogCiAgICAgaWYgKGVsZW1lbnRV
cGRhdGUucmVjb21wb3NpdGVMYXllcikgewotICAgICAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJl
bmRlcmVyLCBXVEZNb3ZlKCplbGVtZW50VXBkYXRlU3R5bGUpLCBTdHlsZURpZmZlcmVuY2U6OlJl
Y29tcG9zaXRlTGF5ZXIpOworICAgICAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJlbmRlcmVyLCBX
VEZNb3ZlKGVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6UmVjb21wb3NpdGVM
YXllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudFVwZGF0ZS5j
aGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkgewotICAgICAgICBpZiAocHNldWRvU3R5bGVD
YWNoZUlzSW52YWxpZCgmcmVuZGVyZXIsIGVsZW1lbnRVcGRhdGVTdHlsZS5nZXQoKSkpIHsKLSAg
ICAgICAgICAgIHVwZGF0ZVJlbmRlcmVyU3R5bGUocmVuZGVyZXIsIFdURk1vdmUoKmVsZW1lbnRV
cGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOworICAgICAgICBpZiAocHNldWRv
U3R5bGVDYWNoZUlzSW52YWxpZCgmcmVuZGVyZXIsICZlbGVtZW50VXBkYXRlU3R5bGUpKSB7Cisg
ICAgICAgICAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJlbmRlcmVyLCBXVEZNb3ZlKGVsZW1lbnRV
cGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOwogICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1cGRhdGVSZW5kZXJl
clN0eWxlKHJlbmRlcmVyLCBXVEZNb3ZlKCplbGVtZW50VXBkYXRlU3R5bGUpLCBTdHlsZURpZmZl
cmVuY2U6OkVxdWFsKTsKKyAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJlbmRlcmVyLCBXVEZNb3Zl
KGVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOwogfQogCiB2b2lk
IFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBSZW5k
ZXJTdHlsZSYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuaAppbmRleCBiNzliMDUzZGUxOTM0ZDQ5ZGMyOTg0YTli
MDM5ZTVjNGQ4MmEzOGZjLi4yNjg2OGRjYTY0OTMyYWVlZjg3MDEwY2Y3MmY0YzEyNGZkYzQ1ODEy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuaApAQCAtNTgsMjQgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAgdm9pZCB1cGRh
dGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpOwogICAgIHZvaWQgdXBkYXRlVGV4dFJl
bmRlcmVyKFRleHQmLCBjb25zdCBTdHlsZTo6VGV4dFVwZGF0ZSopOwogICAgIHZvaWQgY3JlYXRl
VGV4dFJlbmRlcmVyKFRleHQmLCBjb25zdCBTdHlsZTo6VGV4dFVwZGF0ZSopOwotICAgIHZvaWQg
dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0
ZXMmKTsKKyAgICB2b2lkIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiwgY29uc3QgU3R5
bGU6OkVsZW1lbnRVcGRhdGUmKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyU3R5bGUoUmVuZGVy
RWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIFN0eWxlRGlmZmVyZW5jZSk7CiAgICAgdm9pZCBjcmVh
dGVSZW5kZXJlcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7Ci0gICAgdm9pZCB1cGRhdGVCZWZv
cmVEZXNjZW5kYW50cyhFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKik7Ci0g
ICAgdm9pZCB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxl
bWVudFVwZGF0ZXMqKTsKKyAgICB2b2lkIHVwZGF0ZUJlZm9yZURlc2NlbmRhbnRzKEVsZW1lbnQm
LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOworICAgIHZvaWQgdXBkYXRlQWZ0ZXJEZXNj
ZW5kYW50cyhFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsKICAgICBib29s
IHRleHRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFRleHQmIHRleHROb2RlKTsKICAgICB2b2lkIHN0
b3JlUHJldmlvdXNSZW5kZXJlcihOb2RlJik7CiAKICAgICBzdHJ1Y3QgUGFyZW50IHsKICAgICAg
ICAgRWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3QgU3R5bGU6OkVs
ZW1lbnRVcGRhdGVzKiB1cGRhdGVzIHsgbnVsbHB0ciB9OworICAgICAgICBjb25zdCBTdHlsZTo6
RWxlbWVudFVwZGF0ZSogdXBkYXRlIHsgbnVsbHB0ciB9OwogICAgICAgICBzdGQ6Om9wdGlvbmFs
PFJlbmRlclRyZWVQb3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOwogCiAgICAgICAgIGJvb2wg
ZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciB7IGZhbHNlIH07CiAgICAgICAgIFJlbmRl
ck9iamVjdCogcHJldmlvdXNDaGlsZFJlbmRlcmVyIHsgbnVsbHB0ciB9OwogCiAgICAgICAgIFBh
cmVudChDb250YWluZXJOb2RlJiByb290KTsKLSAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBjb25z
dCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqKTsKKyAgICAgICAgUGFyZW50KEVsZW1lbnQmLCBjb25z
dCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOwogICAgIH07CiAgICAgUGFyZW50JiBwYXJlbnQoKSB7
IHJldHVybiBtX3BhcmVudFN0YWNrLmxhc3QoKTsgfQogICAgIFBhcmVudCYgcmVuZGVyaW5nUGFy
ZW50KCk7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBHZW5lcmF0ZWRDb250ZW50
JiBnZW5lcmF0ZWRDb250ZW50KCkgeyByZXR1cm4gKm1fZ2VuZXJhdGVkQ29udGVudDsgfQogCi0g
ICAgdm9pZCBwdXNoUGFyZW50KEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMq
KTsKKyAgICB2b2lkIHB1c2hQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBk
YXRlKik7CiAgICAgdm9pZCBwb3BQYXJlbnQoKTsKICAgICB2b2lkIHBvcFBhcmVudHNUb0RlcHRo
KHVuc2lnbmVkIGRlcHRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250
ZW50LmNwcAppbmRleCA2NDU4ZDE0YjhkYzU2ODYxZjAzNzYwYzVjZDIzZDNiZDJiOTM1NjdhLi5l
OGI5ZWU1MmYwNzhlMTE4MTAxNTI5MGFhMzQ0NTM4ZGUzOWI3NjY2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRD
b250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcApAQCAtMTA3LDIxICsxMDcsMTYgQEAgc3Rh
dGljIHZvaWQgdXBkYXRlU3R5bGVGb3JDb250ZW50UmVuZGVyZXJzKFJlbmRlckVsZW1lbnQmIHBz
ZXVkb1JlbmRlcmVyLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6
R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LCBj
b25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMmIHVwZGF0ZXMsIFBzZXVkb0lkIHBzZXVkb0lkKQor
dm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxl
bWVudChFbGVtZW50JiBjdXJyZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSYgZWxlbWVu
dFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgUHNldWRvRWxlbWVudCogcHNldWRv
RWxlbWVudCA9IHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgPyBjdXJyZW50LmJlZm9yZVBz
ZXVkb0VsZW1lbnQoKSA6IGN1cnJlbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CiAKICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBwc2V1ZG9FbGVtZW50ID8gcHNldWRvRWxlbWVudC0+cmVuZGVyZXIo
KSA6IG51bGxwdHIpCiAgICAgICAgIG1fdXBkYXRlci5yZW5kZXJUcmVlUG9zaXRpb24oKS5pbnZh
bGlkYXRlTmV4dFNpYmxpbmcoKnJlbmRlcmVyKTsKIAotICAgIGF1dG8qIHVwZGF0ZSA9IFsmXSgp
IC0+IGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB7Ci0gICAgICAgIGF1dG8gaXRlcmF0b3Ig
PSB1cGRhdGVzLnBzZXVkb0VsZW1lbnRVcGRhdGVzLmZpbmQocHNldWRvSWQpOwotICAgICAgICBp
ZiAoaXRlcmF0b3IgIT0gdXBkYXRlcy5wc2V1ZG9FbGVtZW50VXBkYXRlcy5lbmQoKSkKLSAgICAg
ICAgICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsK
LSAgICB9KCk7CisgICAgYXV0byogdXBkYXRlU3R5bGUgPSBlbGVtZW50VXBkYXRlLnN0eWxlID8g
ZWxlbWVudFVwZGF0ZS5zdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRvSWQpIDogbnVs
bHB0cjsKIAotICAgIGlmICghbmVlZHNQc2V1ZG9FbGVtZW50KHVwZGF0ZSkgJiYgIWVsZW1lbnRJ
c1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVpcmluZ1BzZXVkb0VsZW1lbnQoJmN1cnJlbnQs
IHBzZXVkb0lkKSkgeworICAgIGlmICghbmVlZHNQc2V1ZG9FbGVtZW50KHVwZGF0ZVN0eWxlKSAm
JiAhZWxlbWVudElzVGFyZ2V0ZWRCeUtleWZyYW1lRWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVu
dCgmY3VycmVudCwgcHNldWRvSWQpKSB7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50KSB7CiAg
ICAgICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKICAgICAgICAgICAg
ICAgICByZW1vdmVCZWZvcmVQc2V1ZG9FbGVtZW50KGN1cnJlbnQsIG1fdXBkYXRlci5tX2J1aWxk
ZXIpOwpAQCAtMTMxLDI4ICsxMjYsMzIgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJh
dGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LAogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF1cGRhdGUgfHwgdXBkYXRlLT5jaGFuZ2UgPT0g
U3R5bGU6OkNoYW5nZTo6Tm9uZSkKKyAgICBpZiAoIXVwZGF0ZVN0eWxlKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRvKiBleGlzdGluZ1N0eWxlID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0Vs
ZW1lbnQtPnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSA6IG51bGxwdHI7CisKKyAgICBh
dXRvIHN0eWxlQ2hhbmdlID0gZXhpc3RpbmdTdHlsZSA/IFN0eWxlOjpkZXRlcm1pbmVDaGFuZ2Uo
KnVwZGF0ZVN0eWxlLCAqZXhpc3RpbmdTdHlsZSkgOiBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcjsK
KyAgICBpZiAoc3R5bGVDaGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgcHNldWRvRWxlbWVudCA9ICZjdXJyZW50LmVuc3VyZVBzZXVkb0VsZW1lbnQo
cHNldWRvSWQpOwogCi0gICAgaWYgKHVwZGF0ZS0+c3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNwbGF5
VHlwZTo6Q29udGVudHMpIHsKKyAgICBpZiAodXBkYXRlU3R5bGUtPmRpc3BsYXkoKSA9PSBEaXNw
bGF5VHlwZTo6Q29udGVudHMpIHsKICAgICAgICAgLy8gRm9yIGRpc3BsYXk6Y29udGVudHMgd2Ug
Y3JlYXRlIGFuIGlubGluZSB3cmFwcGVyIHRoYXQgaW5oZXJpdHMgaXRzCiAgICAgICAgIC8vIHN0
eWxlIGZyb20gdGhlIGRpc3BsYXk6Y29udGVudHMgc3R5bGUuCiAgICAgICAgIGF1dG8gY29udGVu
dHNTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICAgICAgY29udGVudHNTdHls
ZS0+c2V0U3R5bGVUeXBlKHBzZXVkb0lkKTsKLSAgICAgICAgY29udGVudHNTdHlsZS0+aW5oZXJp
dEZyb20oKnVwZGF0ZS0+c3R5bGUpOwotICAgICAgICBjb250ZW50c1N0eWxlLT5jb3B5Q29udGVu
dEZyb20oKnVwZGF0ZS0+c3R5bGUpOworICAgICAgICBjb250ZW50c1N0eWxlLT5pbmhlcml0RnJv
bSgqdXBkYXRlU3R5bGUpOworICAgICAgICBjb250ZW50c1N0eWxlLT5jb3B5Q29udGVudEZyb20o
KnVwZGF0ZVN0eWxlKTsKIAotICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBjb250ZW50c1Vw
ZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRhdGUtPnJl
Y29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIGNvbnRlbnRz
VXBkYXRlcyB7IFdURk1vdmUoY29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2VuZGFudHNUb1Jl
c29sdmU6Ok5vbmUsIHsgfSB9OwotICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxlbWVudFJlbmRl
cmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlcykpOwotICAgICAgICBw
c2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJlbmRlclN0eWxlOjpjbG9u
ZVB0cigqdXBkYXRlLT5zdHlsZSkpOworICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBjb250
ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHN0eWxlQ2hhbmdlLCBlbGVtZW50
VXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgfTsKKyAgICAgICAgbV91cGRhdGVyLnVwZGF0ZUVsZW1l
bnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0ZSkpOworICAg
ICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJlbmRlclN0eWxl
OjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpKTsKICAgICB9IGVsc2UgewotICAgICAgICBhdXRvIHBz
ZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlLT5z
dHlsZSk7Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1lbnRVcGRhdGUg
eyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1cGRh
dGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVzIHBz
ZXVkb0VsZW1lbnRVcGRhdGVzIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlKSwgU3R5bGU6
OkRlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKLSAgICAgICAgbV91cGRhdGVyLnVw
ZGF0ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShwc2V1ZG9FbGVtZW50
VXBkYXRlcykpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRl
clN0eWxlOjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpOworICAgICAgICBTdHlsZTo6RWxlbWVudFVw
ZGF0ZSBwc2V1ZG9FbGVtZW50VXBkYXRlIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRlU3R5
bGUpLCBzdHlsZUNoYW5nZSwgZWxlbWVudFVwZGF0ZS5yZWNvbXBvc2l0ZUxheWVyIH07CisgICAg
ICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1lbnQsIFdURk1v
dmUocHNldWRvRWxlbWVudFVwZGF0ZSkpOwogICAgICAgICBBU1NFUlQoIXBzZXVkb0VsZW1lbnQt
Pmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICB9CiAKQEAgLTE2MCwxMCArMTU5LDEwIEBAIHZv
aWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBzZXVkb0VsZW1l
bnQoRWxlbWVudCYgY3VycmVudCwKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVwZGF0ZS0+Y2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6
OlJlbmRlcmVyKQotICAgICAgICBjcmVhdGVDb250ZW50UmVuZGVyZXJzKG1fdXBkYXRlci5tX2J1
aWxkZXIsICpwc2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1cGRhdGUtPnN0eWxlLCBwc2V1ZG9JZCk7
CisgICAgaWYgKHN0eWxlQ2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyKQorICAgICAg
ICBjcmVhdGVDb250ZW50UmVuZGVyZXJzKG1fdXBkYXRlci5tX2J1aWxkZXIsICpwc2V1ZG9FbGVt
ZW50UmVuZGVyZXIsICp1cGRhdGVTdHlsZSwgcHNldWRvSWQpOwogICAgIGVsc2UKLSAgICAgICAg
dXBkYXRlU3R5bGVGb3JDb250ZW50UmVuZGVyZXJzKCpwc2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1
cGRhdGUtPnN0eWxlKTsKKyAgICAgICAgdXBkYXRlU3R5bGVGb3JDb250ZW50UmVuZGVyZXJzKCpw
c2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1cGRhdGVTdHlsZSk7CiAKICAgICBpZiAobV91cGRhdGVy
LnJlbmRlclZpZXcoKS5oYXNRdW90ZXNOZWVkaW5nVXBkYXRlKCkpIHsKICAgICAgICAgZm9yIChh
dXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlclF1b3RlPigqcHNldWRvRWxlbWVu
dFJlbmRlcmVyKSkKQEAgLTE5NSwxMyArMTk0LDEzIEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6
OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZUJhY2tkcm9wUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYK
ICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6Om5l
ZWRzUHNldWRvRWxlbWVudChjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogdXBkYXRlKQorYm9v
bCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1ZG9FbGVtZW50
KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBpZiAoIXVwZGF0ZSkKKyAgICBpZiAo
IXN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFtX3VwZGF0ZXIucmVuZGVy
VHJlZVBvc2l0aW9uKCkucGFyZW50KCkuY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVuKCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVk
KHVwZGF0ZS0+c3R5bGUuZ2V0KCkpKQorICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNO
ZWVkZWQoc3R5bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIHRydWU7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJl
ZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBk
YXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgKaW5kZXggZjNmMDE2ZGQ2
ODc4YzI1MWM5MTg0OWE1ODkzNDgxOWVmYTdkODBhZi4uNWNmNGY5ZDFlZTFkNzY5ZGJkYTBhYmE5
Zjk3YmZhYmYwMjM1ZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRl
bnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdGVkQ29udGVudChSZW5k
ZXJUcmVlVXBkYXRlciYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNrZHJvcFJlbmRlcmVyKFJlbmRl
ckVsZW1lbnQmKTsKLSAgICB2b2lkIHVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0
IFN0eWxlOjpFbGVtZW50VXBkYXRlcyYsIFBzZXVkb0lkKTsKKyAgICB2b2lkIHVwZGF0ZVBzZXVk
b0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQp
OwogICAgIHZvaWQgdXBkYXRlUmVtYWluaW5nUXVvdGVzKCk7CiAKICAgICBzdGF0aWMgdm9pZCBy
ZW1vdmVCZWZvcmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBSZW5kZXJUcmVlQnVpbGRlciYpOwpA
QCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlUXVvdGVz
VXBUbyhSZW5kZXJRdW90ZSopOwogICAgIAotICAgIGJvb2wgbmVlZHNQc2V1ZG9FbGVtZW50KGNv
bnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKik7CisgICAgYm9vbCBuZWVkc1BzZXVkb0VsZW1lbnQo
Y29uc3QgUmVuZGVyU3R5bGUqKTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyJiBtX3VwZGF0ZXI7
CiAgICAgV2Vha1B0cjxSZW5kZXJRdW90ZT4gbV9wcmV2aW91c1VwZGF0ZWRRdW90ZTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCBlZTljYjFhOWNjMjY3
MmU2ODI1MzgxZTA1Zjk5NDg2M2FjYjhlZmViLi5iZWZlNzU5MDc0NDVkMWJiYTMxN2NhZTFhMDFi
MTI1Mjg3OGIwYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVS
ZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
Y3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRlcmVkU3VidHJl
ZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUKICAgICByZXR1
cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBEZXNjZW5kYW50c1RvUmVzb2x2ZSBjb21wdXRlRGVzY2Vu
ZGFudHNUb1Jlc29sdmUoQ2hhbmdlIGNoYW5nZSwgVmFsaWRpdHkgdmFsaWRpdHksIERlc2NlbmRh
bnRzVG9SZXNvbHZlIHBhcmVudERlc2NlbmRhbnRzVG9SZXNvbHZlKQorYXV0byBUcmVlUmVzb2x2
ZXI6OmNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZShDaGFuZ2UgY2hhbmdlLCBWYWxpZGl0eSB2
YWxpZGl0eSwgRGVzY2VuZGFudHNUb1Jlc29sdmUgcGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUp
IC0+IERlc2NlbmRhbnRzVG9SZXNvbHZlCiB7CiAgICAgaWYgKHBhcmVudERlc2NlbmRhbnRzVG9S
ZXNvbHZlID09IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpBbGwpCiAgICAgICAgIHJldHVybiBEZXNj
ZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRpYyBEZXNjZW5k
YW50c1RvUmVzb2x2ZSBjb21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUoQ2hhbmdlIGNoYW5nZSwg
VmFsaWRpdHkKICAgICByZXR1cm4gRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmU7CiB9OwogCi1F
bGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQpCithdXRvIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkg
LT4gc3RkOjpwYWlyPEVsZW1lbnRVcGRhdGUsIERlc2NlbmRhbnRzVG9SZXNvbHZlPgogewogICAg
IGlmIChtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ICYmICFlbGVtZW50LnJlbmRlcmVyKCkgJiYg
IW1fZG9jdW1lbnQuaXNJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cygpKSB7CiAgICAgICAgIG1f
ZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTWlzc2luZ1N0eWxlKCk7CkBAIC0yNDksMTUgKzI0OSwy
MSBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1lbnQm
IGVsZW1lbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQc2V1ZG9JZFRvRWxlbWVudFVwZGF0
ZU1hcCBwc2V1ZG9VcGRhdGVzOwotICAgIGlmIChhdXRvIG1hcmtlckVsZW1lbnRVcGRhdGUgPSBy
ZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6TWFya2VyKSkKLSAg
ICAgICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6Ok1hcmtlciwgV1RGTW92ZSgqbWFya2Vy
RWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGJlZm9yZUVsZW1lbnRVcGRhdGUgPSByZXNv
bHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3JlKSkKLSAgICAg
ICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6OkJlZm9yZSwgV1RGTW92ZSgqYmVmb3JlRWxl
bWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGFmdGVyRWxlbWVudFVwZGF0ZSA9IHJlc29sdmVQ
c2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpBZnRlcikpCi0gICAgICAgIHBz
ZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpBZnRlciwgV1RGTW92ZSgqYWZ0ZXJFbGVtZW50VXBk
YXRlKSk7Ci0gICAgaWYgKGF1dG8gYmFja2Ryb3BFbGVtZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVk
b1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJhY2tkcm9wKSkKLSAgICAgICAgcHNl
dWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6OkJhY2tkcm9wLCBXVEZNb3ZlKCpiYWNrZHJvcEVsZW1l
bnRVcGRhdGUpKTsKKyAgICBhdXRvIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50U3R5bGUgPSBb
Jl0oUHNldWRvSWQgcHNldWRvSWQpIHsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVtZW50VXBkYXRl
ID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgcHNldWRvSWQpOworICAgICAg
ICBpZiAoIXBzZXVkb0VsZW1lbnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmIChwc2V1ZG9FbGVtZW50VXBkYXRlLT5jaGFuZ2UgIT0gQ2hhbmdlOjpOb25lKQorICAgICAg
ICAgICAgdXBkYXRlLmNoYW5nZSA9IHN0ZDo6bWF4KHVwZGF0ZS5jaGFuZ2UsIENoYW5nZTo6Tm9u
SW5oZXJpdGVkKTsKKyAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnJlY29tcG9zaXRl
TGF5ZXIpCisgICAgICAgICAgICB1cGRhdGUucmVjb21wb3NpdGVMYXllciA9IHRydWU7CisgICAg
ICAgIHVwZGF0ZS5zdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoV1RGTW92ZShwc2V1ZG9FbGVt
ZW50VXBkYXRlLT5zdHlsZSkpOworICAgIH07CisKKyAgICByZXNvbHZlQW5kQWRkUHNldWRvRWxl
bWVudFN0eWxlKFBzZXVkb0lkOjpNYXJrZXIpOworICAgIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVt
ZW50U3R5bGUoUHNldWRvSWQ6OkJlZm9yZSk7CisgICAgcmVzb2x2ZUFuZEFkZFBzZXVkb0VsZW1l
bnRTdHlsZShQc2V1ZG9JZDo6QWZ0ZXIpOworICAgIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50
U3R5bGUoUHNldWRvSWQ6OkJhY2tkcm9wKTsKIAogI2lmIEVOQUJMRShUT1VDSF9BQ1RJT05fUkVH
SU9OUykKICAgICAvLyBGSVhNRTogVHJhY2sgdGhpcyBleGFjdGx5LgpAQCAtMjY5LDcgKzI3NSw3
IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkKICAgICAgICAgbV9kb2N1bWVudC5zZXRNYXlIYXZlRWRpdGFibGVFbGVtZW50cygp
OwogI2VuZGlmCiAKLSAgICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2NlbmRhbnRzVG9S
ZXNvbHZlLCBXVEZNb3ZlKHBzZXVkb1VwZGF0ZXMpIH07CisgICAgcmV0dXJuIHsgV1RGTW92ZSh1
cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSB9OwogfQogCiBzdGQ6Om9wdGlvbmFsPEVsZW1l
bnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIFBzZXVkb0lkIHBzZXVkb0lk
KQpAQCAtNDQ3LDcgKzQ1Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlc29sdmVQc2V1ZG9FbGVt
ZW50KGNvbnN0IFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCiAgICAgcmV0dXJuIHBzZXVk
b0VsZW1lbnQtPm5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotc3RhdGljIGJvb2wgc2hvdWxkUmVz
b2x2ZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNUb1Jlc29sdmUg
cGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUpCitib29sIFRyZWVSZXNvbHZlcjo6c2hvdWxkUmVz
b2x2ZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNUb1Jlc29sdmUg
cGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUpCiB7CiAgICAgaWYgKGVsZW1lbnQuc3R5bGVWYWxp
ZGl0eSgpICE9IFZhbGlkaXR5OjpWYWxpZCkKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC01MDYs
NyArNTEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gY3JlYXRlSW5o
ZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGVJZk5lZWRlZCgKICAgICByZXR1cm4gc3R5bGU7CiB9
CiAKLXN0YXRpYyB2b2lkIHJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKEVsZW1lbnQmIGVs
ZW1lbnQsIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlKQordm9pZCBU
cmVlUmVzb2x2ZXI6OnJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKEVsZW1lbnQmIGVsZW1l
bnQsIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlKQogewogICAgIHN3
aXRjaCAoZGVzY2VuZGFudHNUb1Jlc29sdmUpIHsKICAgICBjYXNlIERlc2NlbmRhbnRzVG9SZXNv
bHZlOjpOb25lOgpAQCAtNTc2LDE3ICs1ODIsMTcgQEAgdm9pZCBUcmVlUmVzb2x2ZXI6OnJlc29s
dmVDb21wb3NlZFRyZWUoKQogICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVS
ZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC53aWxsUmVjYWxjU3R5
bGUocGFyZW50LmNoYW5nZSk7CiAKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudFVwZGF0ZXMgPSBy
ZXNvbHZlRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIGF1dG8gW2VsZW1lbnRVcGRhdGUs
IGVsZW1lbnREZXNjZW5kYW50c1RvUmVzb2x2ZV0gPSByZXNvbHZlRWxlbWVudChlbGVtZW50KTsK
IAogICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tz
KCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5kaWRSZWNhbGNTdHlsZShlbGVtZW50VXBkYXRl
cy51cGRhdGUuY2hhbmdlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmRpZFJlY2FsY1N0eWxl
KGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKIAotICAgICAgICAgICAgc3R5bGUgPSBlbGVtZW50VXBk
YXRlcy51cGRhdGUuc3R5bGUuZ2V0KCk7Ci0gICAgICAgICAgICBjaGFuZ2UgPSBlbGVtZW50VXBk
YXRlcy51cGRhdGUuY2hhbmdlOwotICAgICAgICAgICAgZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBl
bGVtZW50VXBkYXRlcy5kZXNjZW5kYW50c1RvUmVzb2x2ZTsKKyAgICAgICAgICAgIHN0eWxlID0g
ZWxlbWVudFVwZGF0ZS5zdHlsZS5nZXQoKTsKKyAgICAgICAgICAgIGNoYW5nZSA9IGVsZW1lbnRV
cGRhdGUuY2hhbmdlOworICAgICAgICAgICAgZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBlbGVtZW50
RGVzY2VuZGFudHNUb1Jlc29sdmU7CiAKLSAgICAgICAgICAgIGlmIChlbGVtZW50VXBkYXRlcy51
cGRhdGUuc3R5bGUpCi0gICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZEVsZW1lbnQoZWxlbWVu
dCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUoZWxlbWVudFVwZGF0ZXMpKTsKKyAgICAgICAgICAg
IGlmIChlbGVtZW50VXBkYXRlLnN0eWxlKQorICAgICAgICAgICAgICAgIG1fdXBkYXRlLT5hZGRF
bGVtZW50KGVsZW1lbnQsIHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRVcGRhdGUpKTsK
IAogICAgICAgICAgICAgY2xlYXJOZWVkc1N0eWxlUmVzb2x1dGlvbihlbGVtZW50KTsKICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5kZXggMDE4ZDZh
ZGRjMDQyOTk5YThjMzExZWNjZWQ3NjZjYzY4ZmFiZDE3ZC4uZTgwYWIyNzMwNWMyYWRmMTNhYmRl
ZmY0OTVlMTQ5MjQ3MGM2MDU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNv
bHZlci5oCkBAIC02NSw3ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFzcyBRdWVyeUNv
bnRhaW5lckFjdGlvbiA6IHVpbnQ4X3QgeyBOb25lLCBDb250aW51ZSwgTGF5b3V0IH07CiAgICAg
UXVlcnlDb250YWluZXJBY3Rpb24gdXBkYXRlUXVlcnlDb250YWluZXIoRWxlbWVudCYsIGNvbnN0
IFJlbmRlclN0eWxlJik7CiAKLSAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVudChFbGVt
ZW50Jik7CisgICAgZW51bSBjbGFzcyBEZXNjZW5kYW50c1RvUmVzb2x2ZSA6IHVpbnQ4X3QgeyBO
b25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQsIENoaWxkcmVuLCBBbGwgfTsKKyAgICBz
dGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwgRGVzY2VuZGFudHNUb1Jlc29sdmU+IHJlc29sdmVFbGVt
ZW50KEVsZW1lbnQmKTsKIAogICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0ZUFuaW1hdGVk
RWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBTdHlsZWFi
bGUmLCBDaGFuZ2UsIGNvbnN0IFJlc29sdXRpb25Db250ZXh0Jik7CiAgICAgc3RkOjpvcHRpb25h
bDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVsZW1l
bnRVcGRhdGUmLCBQc2V1ZG9JZCk7CkBAIC0xMDUsNiArMTA2LDEwIEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwb3BQYXJlbnQoKTsKICAgICB2b2lkIHBvcFBhcmVudHNUb0RlcHRoKHVuc2lnbmVkIGRl
cHRoKTsKIAorICAgIHN0YXRpYyBEZXNjZW5kYW50c1RvUmVzb2x2ZSBjb21wdXRlRGVzY2VuZGFu
dHNUb1Jlc29sdmUoQ2hhbmdlLCBWYWxpZGl0eSwgRGVzY2VuZGFudHNUb1Jlc29sdmUpOworICAg
IHN0YXRpYyBib29sIHNob3VsZFJlc29sdmVFbGVtZW50KGNvbnN0IEVsZW1lbnQmLCBEZXNjZW5k
YW50c1RvUmVzb2x2ZSk7CisgICAgc3RhdGljIHZvaWQgcmVzZXREZXNjZW5kYW50U3R5bGVSZWxh
dGlvbnMoRWxlbWVudCYsIERlc2NlbmRhbnRzVG9SZXNvbHZlKTsKKwogICAgIFJlc29sdXRpb25D
b250ZXh0IG1ha2VSZXNvbHV0aW9uQ29udGV4dCgpOwogICAgIFJlc29sdXRpb25Db250ZXh0IG1h
a2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVudFVwZGF0ZSYp
OwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSgpIGNvbnN0OwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCmluZGV4IGRkNjY2MmM1MWYyZmQ1YjYzNGUzMDVhZmFh
OWRmMjk2NmVkMzc4ZjYuLjI0MjdiMjY1NzRiMGMyZmFiZjMwMDc0MWRkZGJlNGJmOGNlYjkxOGQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKQEAgLTQxLDcgKzQxLDcgQEAgVXBk
YXRlOjpVcGRhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi1jb25zdCBFbGVtZW50VXBk
YXRlcyogVXBkYXRlOjplbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25z
dAorY29uc3QgRWxlbWVudFVwZGF0ZSogVXBkYXRlOjplbGVtZW50VXBkYXRlKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fZWxlbWVudHMuZmluZCgmZWxl
bWVudCk7CiAgICAgaWYgKGl0ID09IG1fZWxlbWVudHMuZW5kKCkpCkBAIC00OSw3ICs0OSw3IEBA
IGNvbnN0IEVsZW1lbnRVcGRhdGVzKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1l
bnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuICZpdC0+dmFsdWU7CiB9CiAKLUVsZW1lbnRV
cGRhdGVzKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCitF
bGVtZW50VXBkYXRlKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGUoY29uc3QgRWxlbWVudCYgZWxlbWVu
dCkKIHsKICAgICBhdXRvIGl0ID0gbV9lbGVtZW50cy5maW5kKCZlbGVtZW50KTsKICAgICBpZiAo
aXQgPT0gbV9lbGVtZW50cy5lbmQoKSkKQEAgLTY3LDggKzY3LDggQEAgY29uc3QgVGV4dFVwZGF0
ZSogVXBkYXRlOjp0ZXh0VXBkYXRlKGNvbnN0IFRleHQmIHRleHQpIGNvbnN0CiAKIGNvbnN0IFJl
bmRlclN0eWxlKiBVcGRhdGU6OmVsZW1lbnRTdHlsZShjb25zdCBFbGVtZW50JiBlbGVtZW50KSBj
b25zdAogewotICAgIGlmIChhdXRvKiB1cGRhdGVzID0gZWxlbWVudFVwZGF0ZXMoZWxlbWVudCkp
Ci0gICAgICAgIHJldHVybiB1cGRhdGVzLT51cGRhdGUuc3R5bGUuZ2V0KCk7CisgICAgaWYgKGF1
dG8qIHVwZGF0ZSA9IGVsZW1lbnRVcGRhdGUoZWxlbWVudCkpCisgICAgICAgIHJldHVybiB1cGRh
dGUtPnN0eWxlLmdldCgpOwogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigp
OwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtNzcsMTUg
Kzc3LDE1IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBVcGRhdGU6OmVsZW1lbnRTdHlsZShjb25zdCBF
bGVtZW50JiBlbGVtZW50KSBjb25zdAogCiBSZW5kZXJTdHlsZSogVXBkYXRlOjplbGVtZW50U3R5
bGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoYXV0byogdXBkYXRlcyA9IGVs
ZW1lbnRVcGRhdGVzKGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gdXBkYXRlcy0+dXBkYXRlLnN0
eWxlLmdldCgpOworICAgIGlmIChhdXRvKiB1cGRhdGUgPSBlbGVtZW50VXBkYXRlKGVsZW1lbnQp
KQorICAgICAgICByZXR1cm4gdXBkYXRlLT5zdHlsZS5nZXQoKTsKICAgICBhdXRvKiByZW5kZXJl
ciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICByZXR1cm4gJnJlbmRlcmVyLT5tdXRhYmxlU3R5bGUoKTsKIH0KIAot
dm9pZCBVcGRhdGU6OmFkZEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50
LCBFbGVtZW50VXBkYXRlcyYmIGVsZW1lbnRVcGRhdGVzKQordm9pZCBVcGRhdGU6OmFkZEVsZW1l
bnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50VXBkYXRlJiYgZWxl
bWVudFVwZGF0ZSkKIHsKICAgICBBU1NFUlQoIW1fZWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQp
KTsKICAgICBBU1NFUlQoY29tcG9zZWRUcmVlQW5jZXN0b3JzKGVsZW1lbnQpLmZpcnN0KCkgPT0g
cGFyZW50KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBVcGRhdGU6OmFkZEVsZW1lbnQoRWxlbWVu
dCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50VXBkYXRlcyYmIGVsZW0KICAgICBt
X3Jvb3RzLnJlbW92ZSgmZWxlbWVudCk7CiAgICAgYWRkUG9zc2libGVSb290KHBhcmVudCk7CiAK
LSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgV1RGTW92ZShlbGVtZW50VXBkYXRlcykpOwor
ICAgIG1fZWxlbWVudHMuYWRkKCZlbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRVcGRhdGUpKTsKIH0K
IAogdm9pZCBVcGRhdGU6OmFkZFRleHQoVGV4dCYgdGV4dCwgRWxlbWVudCogcGFyZW50LCBUZXh0
VXBkYXRlJiYgdGV4dFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5oCmluZGV4IGMw
ZDRkMDZlYThmOWE0ODNlYzFhOTk1OTEyMmVjM2Y3MDg4NTllZjUuLjFmODIwOWRjNTc5ZmVjMDA4
NTQ4ZWE1MmZiYTI1NWY0M2Q1NTEwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuaApA
QCAtNDcsMTYgKzQ3LDYgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGUgewogICAgIGJvb2wgcmVjb21w
b3NpdGVMYXllciB7IGZhbHNlIH07CiB9OwogCi1lbnVtIGNsYXNzIERlc2NlbmRhbnRzVG9SZXNv
bHZlIHsgTm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJlbiwgQWxsIH07
Ci0KLXVzaW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQc2V1ZG9JZCwg
RWxlbWVudFVwZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51bUhhc2hUcmFp
dHM8UHNldWRvSWQ+PjsKLQotc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKLSAgICBFbGVtZW50VXBk
YXRlIHVwZGF0ZTsKLSAgICBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50c1RvUmVzb2x2
ZSB7IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lIH07Ci0gICAgUHNldWRvSWRUb0VsZW1lbnRV
cGRhdGVNYXAgcHNldWRvRWxlbWVudFVwZGF0ZXM7Ci19OwotCiBzdHJ1Y3QgVGV4dFVwZGF0ZSB7
CiAgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIGxlbmd0aCB7IHN0ZDo6
bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwpAQCAtNzAsOCArNjAsOCBAQCBwdWJs
aWM6CiAKICAgICBjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Q29udGFpbmVyTm9kZT4+JiByb290
cygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdHM7IH0KIAotICAgIGNvbnN0IEVsZW1lbnRVcGRhdGVz
KiBlbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50JikgY29uc3Q7Ci0gICAgRWxlbWVudFVwZGF0
ZXMqIGVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1lbnQmKTsKKyAgICBjb25zdCBFbGVtZW50VXBk
YXRlKiBlbGVtZW50VXBkYXRlKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKKyAgICBFbGVtZW50VXBk
YXRlKiBlbGVtZW50VXBkYXRlKGNvbnN0IEVsZW1lbnQmKTsKIAogICAgIGNvbnN0IFRleHRVcGRh
dGUqIHRleHRVcGRhdGUoY29uc3QgVGV4dCYpIGNvbnN0OwogCkBAIC04Myw3ICs3Myw3IEBAIHB1
YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgpOyB9CiAgICAg
dW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHMuc2l6ZSgpICsgbV90ZXh0
cy5zaXplKCk7IH0KIAotICAgIHZvaWQgYWRkRWxlbWVudChFbGVtZW50JiwgRWxlbWVudCogcGFy
ZW50LCBFbGVtZW50VXBkYXRlcyYmKTsKKyAgICB2b2lkIGFkZEVsZW1lbnQoRWxlbWVudCYsIEVs
ZW1lbnQqIHBhcmVudCwgRWxlbWVudFVwZGF0ZSYmKTsKICAgICB2b2lkIGFkZFRleHQoVGV4dCYs
IEVsZW1lbnQqIHBhcmVudCwgVGV4dFVwZGF0ZSYmKTsKICAgICB2b2lkIGFkZFRleHQoVGV4dCYs
IFRleHRVcGRhdGUmJik7CiAKQEAgLTkyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZjxE
b2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4+IG1fcm9vdHM7Ci0gICAgSGFzaE1hcDxSZWZQdHI8Y29uc3QgRWxlbWVudD4sIEVsZW1lbnRV
cGRhdGVzPiBtX2VsZW1lbnRzOworICAgIEhhc2hNYXA8UmVmUHRyPGNvbnN0IEVsZW1lbnQ+LCBF
bGVtZW50VXBkYXRlPiBtX2VsZW1lbnRzOwogICAgIEhhc2hNYXA8UmVmUHRyPGNvbnN0IFRleHQ+
LCBUZXh0VXBkYXRlPiBtX3RleHRzOwogfTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453743</attachid>
            <date>2022-03-03 08:12:06 -0800</date>
            <delta_ts>2022-03-03 09:25:27 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-237413-20220303181205.patch</filename>
            <type>text/plain</type>
            <size>33155</size>
            <attacher name="Antti Koivisto">koivisto</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWQ5MDJmZDYwOTdiZmFh
NmQ1ZjlmZGU2MDc1N2E3ZDlhNjVmNjQzYi4uYzk0NWNmZmY2NTlhOTBiMTA4NWQ0NjVjODg3OTA5
NTFhNDE4OWMzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIyLTAzLTAzICBBbnR0
aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KKworICAgICAgICBTaW1wbGlmeSBwc2V1ZG8g
ZWxlbWVudCByZXNvbHV0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzc0MTMKKworICAgICAgICBSZXZpZXdlZCBieSBBbnRvaW5lIFF1aW50Lgor
CisgICAgICAgIFJlbW92ZSBFbGVtZW50VXBkYXRlcyBzdHJ1Y3Qgd2l0aCBhIG1hcCB0aGF0IGNv
bnRhaW5zIHBzZXVkbyBlbGVtZW50IHVwZGF0ZXMuCisgICAgICAgIEluc3RlYWQgdXNlIGEgc2lu
Z2xlIEVsZW1lbnRVcGRhdGUgc3RydWN0IGFuZCBwYXNzIHRoZSBwc2V1ZG8gZWxlbWVudCBzdHls
ZXMKKyAgICAgICAgYXMgY2FjaGVkIHBzZXVkbyBzdHlsZXMgb2YgdGhlIGVsZW1lbnQgUmVuZGVy
U3R5bGUuIFByZXZpb3VzbHkgUmVuZGVyVHJlZVVwZGF0ZXIKKyAgICAgICAgd291bGQgbW92ZSB0
aGVtIHRoZXJlLgorCisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBh
cmVudCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVy
VHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6cHVzaFBhcmVudCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6cG9wUGFyZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5k
YW50cyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVu
dFJlbmRlcmVyKToKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0
ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5l
cmF0ZWRDb250ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjpH
ZW5lcmF0ZWRDb250ZW50Ojp1cGRhdGVQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRyZWVVcGRhdGVyOjpHZW5lcmF0ZWRDb250ZW50OjpuZWVkc1BzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRl
ZENvbnRlbnQuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpjb21wdXRlRGVzY2VuZGFudHNUb1Jl
c29sdmUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVs
ZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6c2hvdWxkUmVz
b2x2ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZlcjo6cmVz
ZXREZXNjZW5kYW50U3R5bGVSZWxhdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRy
ZWVSZXNvbHZlcjo6cmVzb2x2ZUNvbXBvc2VkVHJlZSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZTo6Y29tcHV0ZURlc2NlbmRhbnRzVG9SZXNvbHZlKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlOjpzaG91bGRSZXNvbHZlRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZTo6cmVzZXREZXNjZW5kYW50U3R5bGVSZWxhdGlvbnMpOiBEZWxldGVkLgorICAg
ICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmg6CisgICAgICAgICogc3R5bGUvU3R5bGVV
cGRhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6ZWxlbWVudFVwZGF0
ZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VXBkYXRlOjplbGVtZW50VXBkYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpVcGRhdGU6OmVsZW1lbnRTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VXBkYXRlOjplbGVtZW50U3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGU6OlVwZGF0ZTo6YWRkRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZTo6VXBkYXRlOjplbGVtZW50VXBkYXRlcyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VXBkYXRlOjplbGVtZW50VXBkYXRlcyk6IERlbGV0ZWQuCisgICAg
ICAgICogc3R5bGUvU3R5bGVVcGRhdGUuaDoKKwogMjAyMi0wMi0yOCAgQW50b2luZSBRdWludCAg
PGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBbd2ViLWFuaW1hdGlvbnNdIHdlYi1hbmlt
YXRpb25zL2ludGVyZmFjZXMvS2V5ZnJhbWVFZmZlY3QvcHJvY2Vzc2luZy1hLWtleWZyYW1lcy1h
cmd1bWVudC0wMDEuaHRtbCBpcyBhIHVuaXF1ZSBmYWlsdXJlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuY3BwIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmNwcAppbmRleCBlOGY0NGY1MjBkNzg2ZThhNmI0
ZTI4YTJiZWExODU5ZTZmOTc4ZjY3Li40YzQzM2Q3MmExZGEwZWE4Y2RlN2VkZTI5NjAyZTM3MGYy
NGFkMDk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVy
U3R5bGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHls
ZS5jcHAKQEAgLTExMSw2ICsxMTEsMjAgQEAgUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25l
KGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSkKICAgICByZXR1cm4gUmVuZGVyU3R5bGUoc3R5bGUs
IENsb25lKTsKIH0KIAorUmVuZGVyU3R5bGUgUmVuZGVyU3R5bGU6OmNsb25lSW5jbHVkaW5nUHNl
dWRvRWxlbWVudHMoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQoreworICAgIGF1dG8gbmV3U3R5
bGUgPSBSZW5kZXJTdHlsZShzdHlsZSwgQ2xvbmUpOworCisgICAgaWYgKCFzdHlsZS5tX2NhY2hl
ZFBzZXVkb1N0eWxlcykKKyAgICAgICAgcmV0dXJuIG5ld1N0eWxlOworCisgICAgZm9yIChhdXRv
JiBwc2V1ZG9FbGVtZW50U3R5bGUgOiAqc3R5bGUubV9jYWNoZWRQc2V1ZG9TdHlsZXMpIHsKKyAg
ICAgICAgYXV0byBjbG9uZSA9IG1ha2VVbmlxdWU8UmVuZGVyU3R5bGU+KGNsb25lSW5jbHVkaW5n
UHNldWRvRWxlbWVudHMoKnBzZXVkb0VsZW1lbnRTdHlsZSkpOworICAgICAgICBuZXdTdHlsZS5h
ZGRDYWNoZWRQc2V1ZG9TdHlsZShXVEZNb3ZlKGNsb25lKSk7CisgICAgfQorICAgIHJldHVybiBu
ZXdTdHlsZTsKK30KKwogc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0eWxlPiBSZW5kZXJTdHlsZTo6
Y2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlKQogewogICAgIHJldHVybiBtYWtlVW5p
cXVlPFJlbmRlclN0eWxlPihzdHlsZSwgQ2xvbmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3R5bGUvUmVuZGVyU3R5bGUuaAppbmRleCAwOTA1OGY3OWNlNzE3NTUwMzRmZGE4NDhkNDJh
YzZhOTkyZDQ0ZTY4Li5hN2Y2NzUxZWY4MmE1NmJkYmMxYzdkMmViNmRkYjkyOThlMzU0M2E3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaApAQCAtMTUx
LDYgKzE1MSw3IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFJlbmRlclN0
eWxlPiBjcmVhdGVQdHIoKTsKIAogICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjbG9uZShjb25zdCBS
ZW5kZXJTdHlsZSYpOworICAgIHN0YXRpYyBSZW5kZXJTdHlsZSBjbG9uZUluY2x1ZGluZ1BzZXVk
b0VsZW1lbnRzKGNvbnN0IFJlbmRlclN0eWxlJik7CiAgICAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0
cjxSZW5kZXJTdHlsZT4gY2xvbmVQdHIoY29uc3QgUmVuZGVyU3R5bGUmKTsKIAogICAgIHN0YXRp
YyBSZW5kZXJTdHlsZSBjcmVhdGVBbm9ueW1vdXNTdHlsZVdpdGhEaXNwbGF5KGNvbnN0IFJlbmRl
clN0eWxlJiBwYXJlbnRTdHlsZSwgRGlzcGxheVR5cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggM2Vj
NDUxYTk2MTM3ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uZDA5YTEyOTVhN2I5MzMyMzZi
MTg2ZWZhMDdhZGFmNzIzOGQxNWY3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC02OSw5ICs2OSw5IEBA
IFJlbmRlclRyZWVVcGRhdGVyOjpQYXJlbnQ6OlBhcmVudChDb250YWluZXJOb2RlJiByb290KQog
ewogfQogCi1SZW5kZXJUcmVlVXBkYXRlcjo6UGFyZW50OjpQYXJlbnQoRWxlbWVudCYgZWxlbWVu
dCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQorUmVuZGVyVHJlZVVwZGF0
ZXI6OlBhcmVudDo6UGFyZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50
VXBkYXRlKiB1cGRhdGUpCiAgICAgOiBlbGVtZW50KCZlbGVtZW50KQotICAgICwgdXBkYXRlcyh1
cGRhdGVzKQorICAgICwgdXBkYXRlKHVwZGF0ZSkKICAgICAsIHJlbmRlclRyZWVQb3NpdGlvbihl
bGVtZW50LnJlbmRlcmVyKCkgPyBzdGQ6Om1ha2Vfb3B0aW9uYWwoUmVuZGVyVHJlZVBvc2l0aW9u
KCplbGVtZW50LnJlbmRlcmVyKCkpKSA6IHN0ZDo6bnVsbG9wdCkKIHsKIH0KQEAgLTE2Nyw3ICsx
NjcsNyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5l
ck5vZGUmIHJvb3QpCiAgICAgICAgIGlmIChpczxUZXh0Pihub2RlKSkgewogICAgICAgICAgICAg
YXV0byYgdGV4dCA9IGRvd25jYXN0PFRleHQ+KG5vZGUpOwogICAgICAgICAgICAgYXV0byogdGV4
dFVwZGF0ZSA9IG1fc3R5bGVVcGRhdGUtPnRleHRVcGRhdGUodGV4dCk7Ci0gICAgICAgICAgICBi
b29sIGRpZENyZWF0ZVBhcmVudCA9IHBhcmVudCgpLnVwZGF0ZXMgJiYgcGFyZW50KCkudXBkYXRl
cy0+dXBkYXRlLmNoYW5nZSA9PSBTdHlsZTo6Q2hhbmdlOjpSZW5kZXJlcjsKKyAgICAgICAgICAg
IGJvb2wgZGlkQ3JlYXRlUGFyZW50ID0gcGFyZW50KCkudXBkYXRlICYmIHBhcmVudCgpLnVwZGF0
ZS0+Y2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyOwogICAgICAgICAgICAgYm9vbCBt
YXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlciA9IHJlbmRlcmluZ1BhcmVudCgpLmRp
ZENyZWF0ZU9yRGVzdHJveUNoaWxkUmVuZGVyZXIgJiYgdGV4dC5kYXRhKCkuaXNBbGxTcGVjaWFs
Q2hhcmFjdGVyczxpc0hUTUxTcGFjZT4oKTsKICAgICAgICAgICAgIGlmIChkaWRDcmVhdGVQYXJl
bnQgfHwgdGV4dFVwZGF0ZSB8fCBtYXlOZWVkVXBkYXRlV2hpdGVzcGFjZU9ubHlSZW5kZXJlcikK
ICAgICAgICAgICAgICAgICB1cGRhdGVUZXh0UmVuZGVyZXIodGV4dCwgdGV4dFVwZGF0ZSk7CkBA
IC0xNzksMTggKzE3OSwxOCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJU
cmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAKICAgICAgICAgYXV0byYgZWxlbWVudCA9IGRvd25j
YXN0PEVsZW1lbnQ+KG5vZGUpOwogCi0gICAgICAgIGF1dG8qIGVsZW1lbnRVcGRhdGVzID0gbV9z
dHlsZVVwZGF0ZS0+ZWxlbWVudFVwZGF0ZXMoZWxlbWVudCk7CisgICAgICAgIGF1dG8qIGVsZW1l
bnRVcGRhdGUgPSBtX3N0eWxlVXBkYXRlLT5lbGVtZW50VXBkYXRlKGVsZW1lbnQpOwogCiAgICAg
ICAgIC8vIFdlIGhvcCB0aHJvdWdoIGRpc3BsYXk6IGNvbnRlbnRzIGVsZW1lbnRzIGluIGZpbmRS
ZW5kZXJpbmdSb290LCBzbwogICAgICAgICAvLyB0aGVyZSBtYXkgYmUgb3RoZXIgdXBkYXRlcyBk
b3duIHRoZSB0cmVlLgotICAgICAgICBpZiAoIWVsZW1lbnRVcGRhdGVzICYmICFlbGVtZW50Lmhh
c0Rpc3BsYXlDb250ZW50cygpKSB7CisgICAgICAgIGlmICghZWxlbWVudFVwZGF0ZSAmJiAhZWxl
bWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSkgewogICAgICAgICAgICAgc3RvcmVQcmV2aW91c1Jl
bmRlcmVyKGVsZW1lbnQpOwogICAgICAgICAgICAgaXQudHJhdmVyc2VOZXh0U2tpcHBpbmdDaGls
ZHJlbigpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAo
ZWxlbWVudFVwZGF0ZXMpCi0gICAgICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVu
dCwgKmVsZW1lbnRVcGRhdGVzKTsKKyAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUpCisgICAgICAg
ICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGUpOwogCiAg
ICAgICAgIHN0b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIApAQCAtMjAwLDcgKzIwMCw3
IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9k
ZSYgcm9vdCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgcHVz
aFBhcmVudChlbGVtZW50LCBlbGVtZW50VXBkYXRlcyk7CisgICAgICAgIHB1c2hQYXJlbnQoZWxl
bWVudCwgZWxlbWVudFVwZGF0ZSk7CiAKICAgICAgICAgaXQudHJhdmVyc2VOZXh0KCk7CiAgICAg
fQpAQCAtMjIzLDE4ICsyMjMsMTggQEAgUmVuZGVyVHJlZVBvc2l0aW9uJiBSZW5kZXJUcmVlVXBk
YXRlcjo6cmVuZGVyVHJlZVBvc2l0aW9uKCkKICAgICByZXR1cm4gKnJlbmRlcmluZ1BhcmVudCgp
LnJlbmRlclRyZWVQb3NpdGlvbjsKIH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6cHVzaFBh
cmVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqIHVwZGF0
ZXMpCit2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwdXNoUGFyZW50KEVsZW1lbnQmIGVsZW1lbnQs
IGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB1cGRhdGUpCiB7Ci0gICAgbV9wYXJlbnRTdGFj
ay5hcHBlbmQoUGFyZW50KGVsZW1lbnQsIHVwZGF0ZXMpKTsKKyAgICBtX3BhcmVudFN0YWNrLmFw
cGVuZChQYXJlbnQoZWxlbWVudCwgdXBkYXRlKSk7CiAKLSAgICB1cGRhdGVCZWZvcmVEZXNjZW5k
YW50cyhlbGVtZW50LCB1cGRhdGVzKTsKKyAgICB1cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhlbGVt
ZW50LCB1cGRhdGUpOwogfQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpwb3BQYXJlbnQoKQog
ewogICAgIGF1dG8mIHBhcmVudCA9IG1fcGFyZW50U3RhY2subGFzdCgpOwogICAgIGlmIChwYXJl
bnQuZWxlbWVudCkKLSAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygqcGFyZW50LmVsZW1l
bnQsIHBhcmVudC51cGRhdGVzKTsKKyAgICAgICAgdXBkYXRlQWZ0ZXJEZXNjZW5kYW50cygqcGFy
ZW50LmVsZW1lbnQsIHBhcmVudC51cGRhdGUpOwogCiAgICAgaWYgKCZwYXJlbnQgIT0gJnJlbmRl
cmluZ1BhcmVudCgpKQogICAgICAgICByZW5kZXJUcmVlUG9zaXRpb24oKS5pbnZhbGlkYXRlTmV4
dFNpYmxpbmcoKTsKQEAgLTI1MCwxNiArMjUwLDE2IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6
OnBvcFBhcmVudHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKQogICAgICAgICBwb3BQYXJlbnQoKTsK
IH0KIAotdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxl
bWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzKQordm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQmVmb3JlRGVzY2VuZGFudHMoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVwZGF0ZSkKIHsKLSAgICBpZiAodXBk
YXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0VsZW1lbnQoZWxl
bWVudCwgKnVwZGF0ZXMsIFBzZXVkb0lkOjpCZWZvcmUpOworICAgIGlmICh1cGRhdGUpCisgICAg
ICAgIGdlbmVyYXRlZENvbnRlbnQoKS51cGRhdGVQc2V1ZG9FbGVtZW50KGVsZW1lbnQsICp1cGRh
dGUsIFBzZXVkb0lkOjpCZWZvcmUpOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50
VXBkYXRlcyogdXBkYXRlcykKK3ZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZUFmdGVyRGVz
Y2VuZGFudHMoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqIHVw
ZGF0ZSkKIHsKLSAgICBpZiAodXBkYXRlcykKLSAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVw
ZGF0ZVBzZXVkb0VsZW1lbnQoZWxlbWVudCwgKnVwZGF0ZXMsIFBzZXVkb0lkOjpBZnRlcik7Cisg
ICAgaWYgKHVwZGF0ZSkKKyAgICAgICAgZ2VuZXJhdGVkQ29udGVudCgpLnVwZGF0ZVBzZXVkb0Vs
ZW1lbnQoZWxlbWVudCwgKnVwZGF0ZSwgUHNldWRvSWQ6OkFmdGVyKTsKIAogICAgIGF1dG8qIHJl
bmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCkBAIC0yNjgs
NyArMjY4LDcgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlQWZ0ZXJEZXNjZW5kYW50
cyhFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6RWwKICAgICBnZW5lcmF0ZWRDb250ZW50
KCkudXBkYXRlQmFja2Ryb3BSZW5kZXJlcigqcmVuZGVyZXIpOwogICAgIG1fYnVpbGRlci51cGRh
dGVBZnRlckRlc2NlbmRhbnRzKCpyZW5kZXJlcik7CiAKLSAgICBpZiAoZWxlbWVudC5oYXNDdXN0
b21TdHlsZVJlc29sdmVDYWxsYmFja3MoKSAmJiB1cGRhdGVzICYmIHVwZGF0ZXMtPnVwZGF0ZS5j
aGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6UmVuZGVyZXIpCisgICAgaWYgKGVsZW1lbnQuaGFzQ3Vz
dG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkgJiYgdXBkYXRlICYmIHVwZGF0ZS0+Y2hhbmdlID09
IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyKQogICAgICAgICBlbGVtZW50LmRpZEF0dGFjaFJlbmRl
cmVycygpOwogfQogCkBAIC0zMDAsMjEgKzMwMCwxMyBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVy
Ojp1cGRhdGVSZW5kZXJlclN0eWxlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBSZW5kZXJTdHls
ZQogICAgIG1fYnVpbGRlci5ub3JtYWxpemVUcmVlQWZ0ZXJTdHlsZUNoYW5nZShyZW5kZXJlciwg
b2xkU3R5bGUpOwogfQogCi12b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVu
ZGVyZXIoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGVzJiB1cGRh
dGVzKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiBlbGVtZW50VXBkYXRlKQog
ewogI2lmIEVOQUJMRShDT05URU5UX0NIQU5HRV9PQlNFUlZFUikKICAgICBDb250ZW50Q2hhbmdl
T2JzZXJ2ZXI6OlN0eWxlQ2hhbmdlU2NvcGUgb2JzZXJ2aW5nU2NvcGUobV9kb2N1bWVudCwgZWxl
bWVudCk7CiAjZW5kaWYKIAotICAgIGF1dG8mIGVsZW1lbnRVcGRhdGUgPSB1cGRhdGVzLnVwZGF0
ZTsKLSAgICBhdXRvIGVsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
ZWxlbWVudFVwZGF0ZS5zdHlsZSk7Ci0KLSAgICBmb3IgKGF1dG8mIGl0IDogdXBkYXRlcy5wc2V1
ZG9FbGVtZW50VXBkYXRlcykgewotICAgICAgICBhdXRvIHBzZXVkb0lkID0gaXQua2V5OwotICAg
ICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSB8fCBwc2V1ZG9JZCA9PSBQc2V1
ZG9JZDo6QWZ0ZXIpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZWxlbWVudFVwZGF0
ZVN0eWxlLT5hZGRDYWNoZWRQc2V1ZG9TdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKml0LnZh
bHVlLnN0eWxlKSk7Ci0gICAgfQorICAgIGF1dG8gZWxlbWVudFVwZGF0ZVN0eWxlID0gUmVuZGVy
U3R5bGU6OmNsb25lSW5jbHVkaW5nUHNldWRvRWxlbWVudHMoKmVsZW1lbnRVcGRhdGUuc3R5bGUp
OwogCiAgICAgYm9vbCBzaG91bGRUZWFyRG93blJlbmRlcmVycyA9IGVsZW1lbnRVcGRhdGUuY2hh
bmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVyICYmIChlbGVtZW50LnJlbmRlcmVyKCkgfHwg
ZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSB8fCBlbGVtZW50LmlzSW5Ub3BMYXllcigpKTsK
ICAgICBpZiAoc2hvdWxkVGVhckRvd25SZW5kZXJlcnMpIHsKQEAgLTMzMiw3ICszMjQsNyBAQCB2
b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVFbGVtZW50UmVuZGVyZXIoRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgU3R5bGU6OkVsZQogCiAgICAgYm9vbCBoYXNEaXNwbGF5Q29udGVudHMgPSBl
bGVtZW50VXBkYXRlLnN0eWxlLT5kaXNwbGF5KCkgPT0gRGlzcGxheVR5cGU6OkNvbnRlbnRzOwog
ICAgIGlmIChoYXNEaXNwbGF5Q29udGVudHMpCi0gICAgICAgIGVsZW1lbnQuc3RvcmVEaXNwbGF5
Q29udGVudHNTdHlsZShXVEZNb3ZlKGVsZW1lbnRVcGRhdGVTdHlsZSkpOworICAgICAgICBlbGVt
ZW50LnN0b3JlRGlzcGxheUNvbnRlbnRzU3R5bGUobWFrZVVuaXF1ZTxSZW5kZXJTdHlsZT4oV1RG
TW92ZShlbGVtZW50VXBkYXRlU3R5bGUpKSk7CiAgICAgZWxzZQogICAgICAgICBlbGVtZW50LnJl
c2V0Q29tcHV0ZWRTdHlsZSgpOwogCkBAIC0zNDAsNyArMzMyLDcgQEAgdm9pZCBSZW5kZXJUcmVl
VXBkYXRlcjo6dXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0
eWxlOjpFbGUKICAgICBpZiAoc2hvdWxkQ3JlYXRlTmV3UmVuZGVyZXIpIHsKICAgICAgICAgaWYg
KGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgICAgICBl
bGVtZW50LndpbGxBdHRhY2hSZW5kZXJlcnMoKTsKLSAgICAgICAgY3JlYXRlUmVuZGVyZXIoZWxl
bWVudCwgV1RGTW92ZSgqZWxlbWVudFVwZGF0ZVN0eWxlKSk7CisgICAgICAgIGNyZWF0ZVJlbmRl
cmVyKGVsZW1lbnQsIFdURk1vdmUoZWxlbWVudFVwZGF0ZVN0eWxlKSk7CiAKICAgICAgICAgcmVu
ZGVyaW5nUGFyZW50KCkuZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciA9IHRydWU7CiAg
ICAgICAgIHJldHVybjsKQEAgLTM1MSwxOSArMzQzLDE5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0
ZXI6OnVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHlsZTo6
RWxlCiAgICAgYXV0byYgcmVuZGVyZXIgPSAqZWxlbWVudC5yZW5kZXJlcigpOwogCiAgICAgaWYg
KGVsZW1lbnRVcGRhdGUucmVjb21wb3NpdGVMYXllcikgewotICAgICAgICB1cGRhdGVSZW5kZXJl
clN0eWxlKHJlbmRlcmVyLCBXVEZNb3ZlKCplbGVtZW50VXBkYXRlU3R5bGUpLCBTdHlsZURpZmZl
cmVuY2U6OlJlY29tcG9zaXRlTGF5ZXIpOworICAgICAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJl
bmRlcmVyLCBXVEZNb3ZlKGVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6UmVj
b21wb3NpdGVMYXllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoZWxlbWVu
dFVwZGF0ZS5jaGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkgewotICAgICAgICBpZiAocHNl
dWRvU3R5bGVDYWNoZUlzSW52YWxpZCgmcmVuZGVyZXIsIGVsZW1lbnRVcGRhdGVTdHlsZS5nZXQo
KSkpIHsKLSAgICAgICAgICAgIHVwZGF0ZVJlbmRlcmVyU3R5bGUocmVuZGVyZXIsIFdURk1vdmUo
KmVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOworICAgICAgICBp
ZiAocHNldWRvU3R5bGVDYWNoZUlzSW52YWxpZCgmcmVuZGVyZXIsICZlbGVtZW50VXBkYXRlU3R5
bGUpKSB7CisgICAgICAgICAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJlbmRlcmVyLCBXVEZNb3Zl
KGVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOwogICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1cGRh
dGVSZW5kZXJlclN0eWxlKHJlbmRlcmVyLCBXVEZNb3ZlKCplbGVtZW50VXBkYXRlU3R5bGUpLCBT
dHlsZURpZmZlcmVuY2U6OkVxdWFsKTsKKyAgICB1cGRhdGVSZW5kZXJlclN0eWxlKHJlbmRlcmVy
LCBXVEZNb3ZlKGVsZW1lbnRVcGRhdGVTdHlsZSksIFN0eWxlRGlmZmVyZW5jZTo6RXF1YWwpOwog
fQogCiB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjpjcmVhdGVSZW5kZXJlcihFbGVtZW50JiBlbGVt
ZW50LCBSZW5kZXJTdHlsZSYmIHN0eWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuaAppbmRleCBiNzliMDUzZGUxOTM0ZDQ5
ZGMyOTg0YTliMDM5ZTVjNGQ4MmEzOGZjLi4yNjg2OGRjYTY0OTMyYWVlZjg3MDEwY2Y3MmY0YzEy
NGZkYzQ1ODEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXIuaApAQCAtNTgsMjQgKzU4LDI0IEBAIHByaXZhdGU6CiAgICAg
dm9pZCB1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpOwogICAgIHZvaWQgdXBk
YXRlVGV4dFJlbmRlcmVyKFRleHQmLCBjb25zdCBTdHlsZTo6VGV4dFVwZGF0ZSopOwogICAgIHZv
aWQgY3JlYXRlVGV4dFJlbmRlcmVyKFRleHQmLCBjb25zdCBTdHlsZTo6VGV4dFVwZGF0ZSopOwot
ICAgIHZvaWQgdXBkYXRlRWxlbWVudFJlbmRlcmVyKEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxl
bWVudFVwZGF0ZXMmKTsKKyAgICB2b2lkIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihFbGVtZW50Jiwg
Y29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUmKTsKICAgICB2b2lkIHVwZGF0ZVJlbmRlcmVyU3R5
bGUoUmVuZGVyRWxlbWVudCYsIFJlbmRlclN0eWxlJiYsIFN0eWxlRGlmZmVyZW5jZSk7CiAgICAg
dm9pZCBjcmVhdGVSZW5kZXJlcihFbGVtZW50JiwgUmVuZGVyU3R5bGUmJik7Ci0gICAgdm9pZCB1
cGRhdGVCZWZvcmVEZXNjZW5kYW50cyhFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRh
dGVzKik7Ci0gICAgdm9pZCB1cGRhdGVBZnRlckRlc2NlbmRhbnRzKEVsZW1lbnQmLCBjb25zdCBT
dHlsZTo6RWxlbWVudFVwZGF0ZXMqKTsKKyAgICB2b2lkIHVwZGF0ZUJlZm9yZURlc2NlbmRhbnRz
KEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOworICAgIHZvaWQgdXBkYXRl
QWZ0ZXJEZXNjZW5kYW50cyhFbGVtZW50JiwgY29uc3QgU3R5bGU6OkVsZW1lbnRVcGRhdGUqKTsK
ICAgICBib29sIHRleHRSZW5kZXJlcklzTmVlZGVkKGNvbnN0IFRleHQmIHRleHROb2RlKTsKICAg
ICB2b2lkIHN0b3JlUHJldmlvdXNSZW5kZXJlcihOb2RlJik7CiAKICAgICBzdHJ1Y3QgUGFyZW50
IHsKICAgICAgICAgRWxlbWVudCogZWxlbWVudCB7IG51bGxwdHIgfTsKLSAgICAgICAgY29uc3Qg
U3R5bGU6OkVsZW1lbnRVcGRhdGVzKiB1cGRhdGVzIHsgbnVsbHB0ciB9OworICAgICAgICBjb25z
dCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogdXBkYXRlIHsgbnVsbHB0ciB9OwogICAgICAgICBzdGQ6
Om9wdGlvbmFsPFJlbmRlclRyZWVQb3NpdGlvbj4gcmVuZGVyVHJlZVBvc2l0aW9uOwogCiAgICAg
ICAgIGJvb2wgZGlkQ3JlYXRlT3JEZXN0cm95Q2hpbGRSZW5kZXJlciB7IGZhbHNlIH07CiAgICAg
ICAgIFJlbmRlck9iamVjdCogcHJldmlvdXNDaGlsZFJlbmRlcmVyIHsgbnVsbHB0ciB9OwogCiAg
ICAgICAgIFBhcmVudChDb250YWluZXJOb2RlJiByb290KTsKLSAgICAgICAgUGFyZW50KEVsZW1l
bnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMqKTsKKyAgICAgICAgUGFyZW50KEVsZW1l
bnQmLCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSopOwogICAgIH07CiAgICAgUGFyZW50JiBw
YXJlbnQoKSB7IHJldHVybiBtX3BhcmVudFN0YWNrLmxhc3QoKTsgfQogICAgIFBhcmVudCYgcmVu
ZGVyaW5nUGFyZW50KCk7CkBAIC04Myw3ICs4Myw3IEBAIHByaXZhdGU6CiAKICAgICBHZW5lcmF0
ZWRDb250ZW50JiBnZW5lcmF0ZWRDb250ZW50KCkgeyByZXR1cm4gKm1fZ2VuZXJhdGVkQ29udGVu
dDsgfQogCi0gICAgdm9pZCBwdXNoUGFyZW50KEVsZW1lbnQmLCBjb25zdCBTdHlsZTo6RWxlbWVu
dFVwZGF0ZXMqKTsKKyAgICB2b2lkIHB1c2hQYXJlbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpF
bGVtZW50VXBkYXRlKik7CiAgICAgdm9pZCBwb3BQYXJlbnQoKTsKICAgICB2b2lkIHBvcFBhcmVu
dHNUb0RlcHRoKHVuc2lnbmVkIGRlcHRoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5l
cmF0ZWRDb250ZW50LmNwcAppbmRleCA2NDU4ZDE0YjhkYzU2ODYxZjAzNzYwYzVjZDIzZDNiZDJi
OTM1NjdhLi5lOGI5ZWU1MmYwNzhlMTE4MTAxNTI5MGFhMzQ0NTM4ZGUzOWI3NjY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJH
ZW5lcmF0ZWRDb250ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRp
bmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmNwcApAQCAtMTA3LDIxICsxMDcs
MTYgQEAgc3RhdGljIHZvaWQgdXBkYXRlU3R5bGVGb3JDb250ZW50UmVuZGVyZXJzKFJlbmRlckVs
ZW1lbnQmIHBzZXVkb1JlbmRlcmVyLCBjb25zdAogICAgIH0KIH0KIAotdm9pZCBSZW5kZXJUcmVl
VXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBj
dXJyZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZXMmIHVwZGF0ZXMsIFBzZXVkb0lkIHBz
ZXVkb0lkKQordm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRl
UHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50LCBjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0
ZSYgZWxlbWVudFVwZGF0ZSwgUHNldWRvSWQgcHNldWRvSWQpCiB7CiAgICAgUHNldWRvRWxlbWVu
dCogcHNldWRvRWxlbWVudCA9IHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgPyBjdXJyZW50
LmJlZm9yZVBzZXVkb0VsZW1lbnQoKSA6IGN1cnJlbnQuYWZ0ZXJQc2V1ZG9FbGVtZW50KCk7CiAK
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBwc2V1ZG9FbGVtZW50ID8gcHNldWRvRWxlbWVudC0+
cmVuZGVyZXIoKSA6IG51bGxwdHIpCiAgICAgICAgIG1fdXBkYXRlci5yZW5kZXJUcmVlUG9zaXRp
b24oKS5pbnZhbGlkYXRlTmV4dFNpYmxpbmcoKnJlbmRlcmVyKTsKIAotICAgIGF1dG8qIHVwZGF0
ZSA9IFsmXSgpIC0+IGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKiB7Ci0gICAgICAgIGF1dG8g
aXRlcmF0b3IgPSB1cGRhdGVzLnBzZXVkb0VsZW1lbnRVcGRhdGVzLmZpbmQocHNldWRvSWQpOwot
ICAgICAgICBpZiAoaXRlcmF0b3IgIT0gdXBkYXRlcy5wc2V1ZG9FbGVtZW50VXBkYXRlcy5lbmQo
KSkKLSAgICAgICAgICAgIHJldHVybiAmaXRlcmF0b3ItPnZhbHVlOwotICAgICAgICByZXR1cm4g
bnVsbHB0cjsKLSAgICB9KCk7CisgICAgYXV0byogdXBkYXRlU3R5bGUgPSBlbGVtZW50VXBkYXRl
LnN0eWxlID8gZWxlbWVudFVwZGF0ZS5zdHlsZS0+Z2V0Q2FjaGVkUHNldWRvU3R5bGUocHNldWRv
SWQpIDogbnVsbHB0cjsKIAotICAgIGlmICghbmVlZHNQc2V1ZG9FbGVtZW50KHVwZGF0ZSkgJiYg
IWVsZW1lbnRJc1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVpcmluZ1BzZXVkb0VsZW1lbnQo
JmN1cnJlbnQsIHBzZXVkb0lkKSkgeworICAgIGlmICghbmVlZHNQc2V1ZG9FbGVtZW50KHVwZGF0
ZVN0eWxlKSAmJiAhZWxlbWVudElzVGFyZ2V0ZWRCeUtleWZyYW1lRWZmZWN0UmVxdWlyaW5nUHNl
dWRvRWxlbWVudCgmY3VycmVudCwgcHNldWRvSWQpKSB7CiAgICAgICAgIGlmIChwc2V1ZG9FbGVt
ZW50KSB7CiAgICAgICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkJlZm9yZSkKICAg
ICAgICAgICAgICAgICByZW1vdmVCZWZvcmVQc2V1ZG9FbGVtZW50KGN1cnJlbnQsIG1fdXBkYXRl
ci5tX2J1aWxkZXIpOwpAQCAtMTMxLDI4ICsxMjYsMzIgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRl
cjo6R2VuZXJhdGVkQ29udGVudDo6dXBkYXRlUHNldWRvRWxlbWVudChFbGVtZW50JiBjdXJyZW50
LAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCF1cGRhdGUgfHwgdXBkYXRlLT5j
aGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkKKyAgICBpZiAoIXVwZGF0ZVN0eWxlKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBleGlzdGluZ1N0eWxlID0gcHNldWRvRWxlbWVudCA/
IHBzZXVkb0VsZW1lbnQtPnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSA6IG51bGxwdHI7
CisKKyAgICBhdXRvIHN0eWxlQ2hhbmdlID0gZXhpc3RpbmdTdHlsZSA/IFN0eWxlOjpkZXRlcm1p
bmVDaGFuZ2UoKnVwZGF0ZVN0eWxlLCAqZXhpc3RpbmdTdHlsZSkgOiBTdHlsZTo6Q2hhbmdlOjpS
ZW5kZXJlcjsKKyAgICBpZiAoc3R5bGVDaGFuZ2UgPT0gU3R5bGU6OkNoYW5nZTo6Tm9uZSkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgcHNldWRvRWxlbWVudCA9ICZjdXJyZW50LmVuc3VyZVBzZXVk
b0VsZW1lbnQocHNldWRvSWQpOwogCi0gICAgaWYgKHVwZGF0ZS0+c3R5bGUtPmRpc3BsYXkoKSA9
PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpIHsKKyAgICBpZiAodXBkYXRlU3R5bGUtPmRpc3BsYXko
KSA9PSBEaXNwbGF5VHlwZTo6Q29udGVudHMpIHsKICAgICAgICAgLy8gRm9yIGRpc3BsYXk6Y29u
dGVudHMgd2UgY3JlYXRlIGFuIGlubGluZSB3cmFwcGVyIHRoYXQgaW5oZXJpdHMgaXRzCiAgICAg
ICAgIC8vIHN0eWxlIGZyb20gdGhlIGRpc3BsYXk6Y29udGVudHMgc3R5bGUuCiAgICAgICAgIGF1
dG8gY29udGVudHNTdHlsZSA9IFJlbmRlclN0eWxlOjpjcmVhdGVQdHIoKTsKICAgICAgICAgY29u
dGVudHNTdHlsZS0+c2V0U3R5bGVUeXBlKHBzZXVkb0lkKTsKLSAgICAgICAgY29udGVudHNTdHls
ZS0+aW5oZXJpdEZyb20oKnVwZGF0ZS0+c3R5bGUpOwotICAgICAgICBjb250ZW50c1N0eWxlLT5j
b3B5Q29udGVudEZyb20oKnVwZGF0ZS0+c3R5bGUpOworICAgICAgICBjb250ZW50c1N0eWxlLT5p
bmhlcml0RnJvbSgqdXBkYXRlU3R5bGUpOworICAgICAgICBjb250ZW50c1N0eWxlLT5jb3B5Q29u
dGVudEZyb20oKnVwZGF0ZVN0eWxlKTsKIAotICAgICAgICBTdHlsZTo6RWxlbWVudFVwZGF0ZSBj
b250ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHVwZGF0ZS0+Y2hhbmdlLCB1
cGRhdGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRVcGRhdGVz
IGNvbnRlbnRzVXBkYXRlcyB7IFdURk1vdmUoY29udGVudHNVcGRhdGUpLCBTdHlsZTo6RGVzY2Vu
ZGFudHNUb1Jlc29sdmU6Ok5vbmUsIHsgfSB9OwotICAgICAgICBtX3VwZGF0ZXIudXBkYXRlRWxl
bWVudFJlbmRlcmVyKCpwc2V1ZG9FbGVtZW50LCBXVEZNb3ZlKGNvbnRlbnRzVXBkYXRlcykpOwot
ICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJlbmRlclN0
eWxlOjpjbG9uZVB0cigqdXBkYXRlLT5zdHlsZSkpOworICAgICAgICBTdHlsZTo6RWxlbWVudFVw
ZGF0ZSBjb250ZW50c1VwZGF0ZSB7IFdURk1vdmUoY29udGVudHNTdHlsZSksIHN0eWxlQ2hhbmdl
LCBlbGVtZW50VXBkYXRlLnJlY29tcG9zaXRlTGF5ZXIgfTsKKyAgICAgICAgbV91cGRhdGVyLnVw
ZGF0ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShjb250ZW50c1VwZGF0
ZSkpOworICAgICAgICBwc2V1ZG9FbGVtZW50LT5zdG9yZURpc3BsYXlDb250ZW50c1N0eWxlKFJl
bmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpKTsKICAgICB9IGVsc2UgewotICAgICAg
ICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
dXBkYXRlLT5zdHlsZSk7Ci0gICAgICAgIFN0eWxlOjpFbGVtZW50VXBkYXRlIHBzZXVkb0VsZW1l
bnRVcGRhdGUgeyBXVEZNb3ZlKHBzZXVkb0VsZW1lbnRVcGRhdGVTdHlsZSksIHVwZGF0ZS0+Y2hh
bmdlLCB1cGRhdGUtPnJlY29tcG9zaXRlTGF5ZXIgfTsKLSAgICAgICAgU3R5bGU6OkVsZW1lbnRV
cGRhdGVzIHBzZXVkb0VsZW1lbnRVcGRhdGVzIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50VXBkYXRl
KSwgU3R5bGU6OkRlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lLCB7IH0gfTsKLSAgICAgICAgbV91
cGRhdGVyLnVwZGF0ZUVsZW1lbnRSZW5kZXJlcigqcHNldWRvRWxlbWVudCwgV1RGTW92ZShwc2V1
ZG9FbGVtZW50VXBkYXRlcykpOworICAgICAgICBhdXRvIHBzZXVkb0VsZW1lbnRVcGRhdGVTdHls
ZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqdXBkYXRlU3R5bGUpOworICAgICAgICBTdHlsZTo6
RWxlbWVudFVwZGF0ZSBwc2V1ZG9FbGVtZW50VXBkYXRlIHsgV1RGTW92ZShwc2V1ZG9FbGVtZW50
VXBkYXRlU3R5bGUpLCBzdHlsZUNoYW5nZSwgZWxlbWVudFVwZGF0ZS5yZWNvbXBvc2l0ZUxheWVy
IH07CisgICAgICAgIG1fdXBkYXRlci51cGRhdGVFbGVtZW50UmVuZGVyZXIoKnBzZXVkb0VsZW1l
bnQsIFdURk1vdmUocHNldWRvRWxlbWVudFVwZGF0ZSkpOwogICAgICAgICBBU1NFUlQoIXBzZXVk
b0VsZW1lbnQtPmhhc0Rpc3BsYXlDb250ZW50cygpKTsKICAgICB9CiAKQEAgLTE2MCwxMCArMTU5
LDEwIEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZVBz
ZXVkb0VsZW1lbnQoRWxlbWVudCYgY3VycmVudCwKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5k
ZXJlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKHVwZGF0ZS0+Y2hhbmdlID09IFN0eWxl
OjpDaGFuZ2U6OlJlbmRlcmVyKQotICAgICAgICBjcmVhdGVDb250ZW50UmVuZGVyZXJzKG1fdXBk
YXRlci5tX2J1aWxkZXIsICpwc2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1cGRhdGUtPnN0eWxlLCBw
c2V1ZG9JZCk7CisgICAgaWYgKHN0eWxlQ2hhbmdlID09IFN0eWxlOjpDaGFuZ2U6OlJlbmRlcmVy
KQorICAgICAgICBjcmVhdGVDb250ZW50UmVuZGVyZXJzKG1fdXBkYXRlci5tX2J1aWxkZXIsICpw
c2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1cGRhdGVTdHlsZSwgcHNldWRvSWQpOwogICAgIGVsc2UK
LSAgICAgICAgdXBkYXRlU3R5bGVGb3JDb250ZW50UmVuZGVyZXJzKCpwc2V1ZG9FbGVtZW50UmVu
ZGVyZXIsICp1cGRhdGUtPnN0eWxlKTsKKyAgICAgICAgdXBkYXRlU3R5bGVGb3JDb250ZW50UmVu
ZGVyZXJzKCpwc2V1ZG9FbGVtZW50UmVuZGVyZXIsICp1cGRhdGVTdHlsZSk7CiAKICAgICBpZiAo
bV91cGRhdGVyLnJlbmRlclZpZXcoKS5oYXNRdW90ZXNOZWVkaW5nVXBkYXRlKCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBjaGlsZCA6IGRlc2NlbmRhbnRzT2ZUeXBlPFJlbmRlclF1b3RlPigqcHNl
dWRvRWxlbWVudFJlbmRlcmVyKSkKQEAgLTE5NSwxMyArMTk0LDEzIEBAIHZvaWQgUmVuZGVyVHJl
ZVVwZGF0ZXI6OkdlbmVyYXRlZENvbnRlbnQ6OnVwZGF0ZUJhY2tkcm9wUmVuZGVyZXIoUmVuZGVy
RWxlbWVudCYKICAgICB9CiB9CiAKLWJvb2wgUmVuZGVyVHJlZVVwZGF0ZXI6OkdlbmVyYXRlZENv
bnRlbnQ6Om5lZWRzUHNldWRvRWxlbWVudChjb25zdCBTdHlsZTo6RWxlbWVudFVwZGF0ZSogdXBk
YXRlKQorYm9vbCBSZW5kZXJUcmVlVXBkYXRlcjo6R2VuZXJhdGVkQ29udGVudDo6bmVlZHNQc2V1
ZG9FbGVtZW50KGNvbnN0IFJlbmRlclN0eWxlKiBzdHlsZSkKIHsKLSAgICBpZiAoIXVwZGF0ZSkK
KyAgICBpZiAoIXN0eWxlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgaWYgKCFtX3VwZGF0
ZXIucmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkuY2FuSGF2ZUdlbmVyYXRlZENoaWxkcmVu
KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKHVwZGF0ZS0+c3R5bGUuZ2V0KCkpKQorICAgIGlmICghcHNldWRvRWxlbWVudFJl
bmRlcmVySXNOZWVkZWQoc3R5bGUpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJu
IHRydWU7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgKaW5kZXgg
ZjNmMDE2ZGQ2ODc4YzI1MWM5MTg0OWE1ODkzNDgxOWVmYTdkODBhZi4uNWNmNGY5ZDFlZTFkNzY5
ZGJkYTBhYmE5Zjk3YmZhYmYwMjM1ZWQ3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlckdlbmVy
YXRlZENvbnRlbnQuaApAQCAtMzksNyArMzksNyBAQCBwdWJsaWM6CiAgICAgR2VuZXJhdGVkQ29u
dGVudChSZW5kZXJUcmVlVXBkYXRlciYpOwogCiAgICAgdm9pZCB1cGRhdGVCYWNrZHJvcFJlbmRl
cmVyKFJlbmRlckVsZW1lbnQmKTsKLSAgICB2b2lkIHVwZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVu
dCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlcyYsIFBzZXVkb0lkKTsKKyAgICB2b2lkIHVw
ZGF0ZVBzZXVkb0VsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlJiwg
UHNldWRvSWQpOwogICAgIHZvaWQgdXBkYXRlUmVtYWluaW5nUXVvdGVzKCk7CiAKICAgICBzdGF0
aWMgdm9pZCByZW1vdmVCZWZvcmVQc2V1ZG9FbGVtZW50KEVsZW1lbnQmLCBSZW5kZXJUcmVlQnVp
bGRlciYpOwpAQCAtNDgsNyArNDgsNyBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIHZvaWQgdXBk
YXRlUXVvdGVzVXBUbyhSZW5kZXJRdW90ZSopOwogICAgIAotICAgIGJvb2wgbmVlZHNQc2V1ZG9F
bGVtZW50KGNvbnN0IFN0eWxlOjpFbGVtZW50VXBkYXRlKik7CisgICAgYm9vbCBuZWVkc1BzZXVk
b0VsZW1lbnQoY29uc3QgUmVuZGVyU3R5bGUqKTsKIAogICAgIFJlbmRlclRyZWVVcGRhdGVyJiBt
X3VwZGF0ZXI7CiAgICAgV2Vha1B0cjxSZW5kZXJRdW90ZT4gbV9wcmV2aW91c1VwZGF0ZWRRdW90
ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCBlZTlj
YjFhOWNjMjY3MmU2ODI1MzgxZTA1Zjk5NDg2M2FjYjhlZmViLi5iZWZlNzU5MDc0NDVkMWJiYTMx
N2NhZTFhMDFiMTI1Mjg3OGIwYjhkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuY3BwCkBAIC0xNzYsNyArMTc2LDcgQEAgc3RhdGljIGJvb2wgYWZmZWN0c1JlbmRl
cmVkU3VidHJlZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXN0YXRpYyBEZXNjZW5kYW50c1RvUmVzb2x2ZSBjb21w
dXRlRGVzY2VuZGFudHNUb1Jlc29sdmUoQ2hhbmdlIGNoYW5nZSwgVmFsaWRpdHkgdmFsaWRpdHks
IERlc2NlbmRhbnRzVG9SZXNvbHZlIHBhcmVudERlc2NlbmRhbnRzVG9SZXNvbHZlKQorYXV0byBU
cmVlUmVzb2x2ZXI6OmNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZShDaGFuZ2UgY2hhbmdlLCBW
YWxpZGl0eSB2YWxpZGl0eSwgRGVzY2VuZGFudHNUb1Jlc29sdmUgcGFyZW50RGVzY2VuZGFudHNU
b1Jlc29sdmUpIC0+IERlc2NlbmRhbnRzVG9SZXNvbHZlCiB7CiAgICAgaWYgKHBhcmVudERlc2Nl
bmRhbnRzVG9SZXNvbHZlID09IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpBbGwpCiAgICAgICAgIHJl
dHVybiBEZXNjZW5kYW50c1RvUmVzb2x2ZTo6QWxsOwpAQCAtMTk2LDcgKzE5Niw3IEBAIHN0YXRp
YyBEZXNjZW5kYW50c1RvUmVzb2x2ZSBjb21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUoQ2hhbmdl
IGNoYW5nZSwgVmFsaWRpdHkKICAgICByZXR1cm4gRGVzY2VuZGFudHNUb1Jlc29sdmU6Ok5vbmU7
CiB9OwogCi1FbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCithdXRvIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQoRWxlbWVudCYg
ZWxlbWVudCkgLT4gc3RkOjpwYWlyPEVsZW1lbnRVcGRhdGUsIERlc2NlbmRhbnRzVG9SZXNvbHZl
PgogewogICAgIGlmIChtX2RpZFNlZVBlbmRpbmdTdHlsZXNoZWV0ICYmICFlbGVtZW50LnJlbmRl
cmVyKCkgJiYgIW1fZG9jdW1lbnQuaXNJZ25vcmluZ1BlbmRpbmdTdHlsZXNoZWV0cygpKSB7CiAg
ICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTWlzc2luZ1N0eWxlKCk7CkBAIC0yNDks
MTUgKzI0OSwyMSBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBQc2V1ZG9JZFRvRWxl
bWVudFVwZGF0ZU1hcCBwc2V1ZG9VcGRhdGVzOwotICAgIGlmIChhdXRvIG1hcmtlckVsZW1lbnRV
cGRhdGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6TWFy
a2VyKSkKLSAgICAgICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6Ok1hcmtlciwgV1RGTW92
ZSgqbWFya2VyRWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGJlZm9yZUVsZW1lbnRVcGRh
dGUgPSByZXNvbHZlUHNldWRvU3R5bGUoZWxlbWVudCwgdXBkYXRlLCBQc2V1ZG9JZDo6QmVmb3Jl
KSkKLSAgICAgICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6OkJlZm9yZSwgV1RGTW92ZSgq
YmVmb3JlRWxlbWVudFVwZGF0ZSkpOwotICAgIGlmIChhdXRvIGFmdGVyRWxlbWVudFVwZGF0ZSA9
IHJlc29sdmVQc2V1ZG9TdHlsZShlbGVtZW50LCB1cGRhdGUsIFBzZXVkb0lkOjpBZnRlcikpCi0g
ICAgICAgIHBzZXVkb1VwZGF0ZXMuc2V0KFBzZXVkb0lkOjpBZnRlciwgV1RGTW92ZSgqYWZ0ZXJF
bGVtZW50VXBkYXRlKSk7Ci0gICAgaWYgKGF1dG8gYmFja2Ryb3BFbGVtZW50VXBkYXRlID0gcmVz
b2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgUHNldWRvSWQ6OkJhY2tkcm9wKSkKLSAg
ICAgICAgcHNldWRvVXBkYXRlcy5zZXQoUHNldWRvSWQ6OkJhY2tkcm9wLCBXVEZNb3ZlKCpiYWNr
ZHJvcEVsZW1lbnRVcGRhdGUpKTsKKyAgICBhdXRvIHJlc29sdmVBbmRBZGRQc2V1ZG9FbGVtZW50
U3R5bGUgPSBbJl0oUHNldWRvSWQgcHNldWRvSWQpIHsKKyAgICAgICAgYXV0byBwc2V1ZG9FbGVt
ZW50VXBkYXRlID0gcmVzb2x2ZVBzZXVkb1N0eWxlKGVsZW1lbnQsIHVwZGF0ZSwgcHNldWRvSWQp
OworICAgICAgICBpZiAoIXBzZXVkb0VsZW1lbnRVcGRhdGUpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIGlmIChwc2V1ZG9FbGVtZW50VXBkYXRlLT5jaGFuZ2UgIT0gQ2hhbmdlOjpOb25l
KQorICAgICAgICAgICAgdXBkYXRlLmNoYW5nZSA9IHN0ZDo6bWF4KHVwZGF0ZS5jaGFuZ2UsIENo
YW5nZTo6Tm9uSW5oZXJpdGVkKTsKKyAgICAgICAgaWYgKHBzZXVkb0VsZW1lbnRVcGRhdGUtPnJl
Y29tcG9zaXRlTGF5ZXIpCisgICAgICAgICAgICB1cGRhdGUucmVjb21wb3NpdGVMYXllciA9IHRy
dWU7CisgICAgICAgIHVwZGF0ZS5zdHlsZS0+YWRkQ2FjaGVkUHNldWRvU3R5bGUoV1RGTW92ZShw
c2V1ZG9FbGVtZW50VXBkYXRlLT5zdHlsZSkpOworICAgIH07CisKKyAgICByZXNvbHZlQW5kQWRk
UHNldWRvRWxlbWVudFN0eWxlKFBzZXVkb0lkOjpNYXJrZXIpOworICAgIHJlc29sdmVBbmRBZGRQ
c2V1ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6OkJlZm9yZSk7CisgICAgcmVzb2x2ZUFuZEFkZFBz
ZXVkb0VsZW1lbnRTdHlsZShQc2V1ZG9JZDo6QWZ0ZXIpOworICAgIHJlc29sdmVBbmRBZGRQc2V1
ZG9FbGVtZW50U3R5bGUoUHNldWRvSWQ6OkJhY2tkcm9wKTsKIAogI2lmIEVOQUJMRShUT1VDSF9B
Q1RJT05fUkVHSU9OUykKICAgICAvLyBGSVhNRTogVHJhY2sgdGhpcyBleGFjdGx5LgpAQCAtMjY5
LDcgKzI3NSw3IEBAIEVsZW1lbnRVcGRhdGVzIFRyZWVSZXNvbHZlcjo6cmVzb2x2ZUVsZW1lbnQo
RWxlbWVudCYgZWxlbWVudCkKICAgICAgICAgbV9kb2N1bWVudC5zZXRNYXlIYXZlRWRpdGFibGVF
bGVtZW50cygpOwogI2VuZGlmCiAKLSAgICByZXR1cm4geyBXVEZNb3ZlKHVwZGF0ZSksIGRlc2Nl
bmRhbnRzVG9SZXNvbHZlLCBXVEZNb3ZlKHBzZXVkb1VwZGF0ZXMpIH07CisgICAgcmV0dXJuIHsg
V1RGTW92ZSh1cGRhdGUpLCBkZXNjZW5kYW50c1RvUmVzb2x2ZSB9OwogfQogCiBzdGQ6Om9wdGlv
bmFsPEVsZW1lbnRVcGRhdGU+IFRyZWVSZXNvbHZlcjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsZW1lbnRVcGRhdGUsIFBzZXVkb0lk
IHBzZXVkb0lkKQpAQCAtNDQ3LDcgKzQ1Myw3IEBAIHN0YXRpYyBib29sIHNob3VsZFJlc29sdmVQ
c2V1ZG9FbGVtZW50KGNvbnN0IFBzZXVkb0VsZW1lbnQqIHBzZXVkb0VsZW1lbnQpCiAgICAgcmV0
dXJuIHBzZXVkb0VsZW1lbnQtPm5lZWRzU3R5bGVSZWNhbGMoKTsKIH0KIAotc3RhdGljIGJvb2wg
c2hvdWxkUmVzb2x2ZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNU
b1Jlc29sdmUgcGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUpCitib29sIFRyZWVSZXNvbHZlcjo6
c2hvdWxkUmVzb2x2ZUVsZW1lbnQoY29uc3QgRWxlbWVudCYgZWxlbWVudCwgRGVzY2VuZGFudHNU
b1Jlc29sdmUgcGFyZW50RGVzY2VuZGFudHNUb1Jlc29sdmUpCiB7CiAgICAgaWYgKGVsZW1lbnQu
c3R5bGVWYWxpZGl0eSgpICE9IFZhbGlkaXR5OjpWYWxpZCkKICAgICAgICAgcmV0dXJuIHRydWU7
CkBAIC01MDYsNyArNTEyLDcgQEAgc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4g
Y3JlYXRlSW5oZXJpdGVkRGlzcGxheUNvbnRlbnRzU3R5bGVJZk5lZWRlZCgKICAgICByZXR1cm4g
c3R5bGU7CiB9CiAKLXN0YXRpYyB2b2lkIHJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKEVs
ZW1lbnQmIGVsZW1lbnQsIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZl
KQordm9pZCBUcmVlUmVzb2x2ZXI6OnJlc2V0RGVzY2VuZGFudFN0eWxlUmVsYXRpb25zKEVsZW1l
bnQmIGVsZW1lbnQsIERlc2NlbmRhbnRzVG9SZXNvbHZlIGRlc2NlbmRhbnRzVG9SZXNvbHZlKQog
ewogICAgIHN3aXRjaCAoZGVzY2VuZGFudHNUb1Jlc29sdmUpIHsKICAgICBjYXNlIERlc2NlbmRh
bnRzVG9SZXNvbHZlOjpOb25lOgpAQCAtNTc2LDE3ICs1ODIsMTcgQEAgdm9pZCBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVDb21wb3NlZFRyZWUoKQogICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3Vz
dG9tU3R5bGVSZXNvbHZlQ2FsbGJhY2tzKCkpCiAgICAgICAgICAgICAgICAgZWxlbWVudC53aWxs
UmVjYWxjU3R5bGUocGFyZW50LmNoYW5nZSk7CiAKLSAgICAgICAgICAgIGF1dG8gZWxlbWVudFVw
ZGF0ZXMgPSByZXNvbHZlRWxlbWVudChlbGVtZW50KTsKKyAgICAgICAgICAgIGF1dG8gW2VsZW1l
bnRVcGRhdGUsIGVsZW1lbnREZXNjZW5kYW50c1RvUmVzb2x2ZV0gPSByZXNvbHZlRWxlbWVudChl
bGVtZW50KTsKIAogICAgICAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ3VzdG9tU3R5bGVSZXNvbHZl
Q2FsbGJhY2tzKCkpCi0gICAgICAgICAgICAgICAgZWxlbWVudC5kaWRSZWNhbGNTdHlsZShlbGVt
ZW50VXBkYXRlcy51cGRhdGUuY2hhbmdlKTsKKyAgICAgICAgICAgICAgICBlbGVtZW50LmRpZFJl
Y2FsY1N0eWxlKGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKIAotICAgICAgICAgICAgc3R5bGUgPSBl
bGVtZW50VXBkYXRlcy51cGRhdGUuc3R5bGUuZ2V0KCk7Ci0gICAgICAgICAgICBjaGFuZ2UgPSBl
bGVtZW50VXBkYXRlcy51cGRhdGUuY2hhbmdlOwotICAgICAgICAgICAgZGVzY2VuZGFudHNUb1Jl
c29sdmUgPSBlbGVtZW50VXBkYXRlcy5kZXNjZW5kYW50c1RvUmVzb2x2ZTsKKyAgICAgICAgICAg
IHN0eWxlID0gZWxlbWVudFVwZGF0ZS5zdHlsZS5nZXQoKTsKKyAgICAgICAgICAgIGNoYW5nZSA9
IGVsZW1lbnRVcGRhdGUuY2hhbmdlOworICAgICAgICAgICAgZGVzY2VuZGFudHNUb1Jlc29sdmUg
PSBlbGVtZW50RGVzY2VuZGFudHNUb1Jlc29sdmU7CiAKLSAgICAgICAgICAgIGlmIChlbGVtZW50
VXBkYXRlcy51cGRhdGUuc3R5bGUpCi0gICAgICAgICAgICAgICAgbV91cGRhdGUtPmFkZEVsZW1l
bnQoZWxlbWVudCwgcGFyZW50LmVsZW1lbnQsIFdURk1vdmUoZWxlbWVudFVwZGF0ZXMpKTsKKyAg
ICAgICAgICAgIGlmIChlbGVtZW50VXBkYXRlLnN0eWxlKQorICAgICAgICAgICAgICAgIG1fdXBk
YXRlLT5hZGRFbGVtZW50KGVsZW1lbnQsIHBhcmVudC5lbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRV
cGRhdGUpKTsKIAogICAgICAgICAgICAgY2xlYXJOZWVkc1N0eWxlUmVzb2x1dGlvbihlbGVtZW50
KTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVl
UmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKaW5k
ZXggMDE4ZDZhZGRjMDQyOTk5YThjMzExZWNjZWQ3NjZjYzY4ZmFiZDE3ZC4uZTgwYWIyNzMwNWMy
YWRmMTNhYmRlZmY0OTVlMTQ5MjQ3MGM2MDU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHls
ZVRyZWVSZXNvbHZlci5oCkBAIC02NSw3ICs2NSw4IEBAIHByaXZhdGU6CiAgICAgZW51bSBjbGFz
cyBRdWVyeUNvbnRhaW5lckFjdGlvbiA6IHVpbnQ4X3QgeyBOb25lLCBDb250aW51ZSwgTGF5b3V0
IH07CiAgICAgUXVlcnlDb250YWluZXJBY3Rpb24gdXBkYXRlUXVlcnlDb250YWluZXIoRWxlbWVu
dCYsIGNvbnN0IFJlbmRlclN0eWxlJik7CiAKLSAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxl
bWVudChFbGVtZW50Jik7CisgICAgZW51bSBjbGFzcyBEZXNjZW5kYW50c1RvUmVzb2x2ZSA6IHVp
bnQ4X3QgeyBOb25lLCBDaGlsZHJlbldpdGhFeHBsaWNpdEluaGVyaXQsIENoaWxkcmVuLCBBbGwg
fTsKKyAgICBzdGQ6OnBhaXI8RWxlbWVudFVwZGF0ZSwgRGVzY2VuZGFudHNUb1Jlc29sdmU+IHJl
c29sdmVFbGVtZW50KEVsZW1lbnQmKTsKIAogICAgIHN0YXRpYyBFbGVtZW50VXBkYXRlIGNyZWF0
ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25z
dCBTdHlsZWFibGUmLCBDaGFuZ2UsIGNvbnN0IFJlc29sdXRpb25Db250ZXh0Jik7CiAgICAgc3Rk
OjpvcHRpb25hbDxFbGVtZW50VXBkYXRlPiByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNv
bnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CkBAIC0xMDUsNiArMTA2LDEwIEBAIHByaXZh
dGU6CiAgICAgdm9pZCBwb3BQYXJlbnQoKTsKICAgICB2b2lkIHBvcFBhcmVudHNUb0RlcHRoKHVu
c2lnbmVkIGRlcHRoKTsKIAorICAgIHN0YXRpYyBEZXNjZW5kYW50c1RvUmVzb2x2ZSBjb21wdXRl
RGVzY2VuZGFudHNUb1Jlc29sdmUoQ2hhbmdlLCBWYWxpZGl0eSwgRGVzY2VuZGFudHNUb1Jlc29s
dmUpOworICAgIHN0YXRpYyBib29sIHNob3VsZFJlc29sdmVFbGVtZW50KGNvbnN0IEVsZW1lbnQm
LCBEZXNjZW5kYW50c1RvUmVzb2x2ZSk7CisgICAgc3RhdGljIHZvaWQgcmVzZXREZXNjZW5kYW50
U3R5bGVSZWxhdGlvbnMoRWxlbWVudCYsIERlc2NlbmRhbnRzVG9SZXNvbHZlKTsKKwogICAgIFJl
c29sdXRpb25Db250ZXh0IG1ha2VSZXNvbHV0aW9uQ29udGV4dCgpOwogICAgIFJlc29sdXRpb25D
b250ZXh0IG1ha2VSZXNvbHV0aW9uQ29udGV4dEZvclBzZXVkb0VsZW1lbnQoY29uc3QgRWxlbWVu
dFVwZGF0ZSYpOwogICAgIGNvbnN0IFJlbmRlclN0eWxlKiBwYXJlbnRCb3hTdHlsZSgpIGNvbnN0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVVcGRhdGUuY3BwCmluZGV4IGRkNjY2MmM1MWYyZmQ1YjYz
NGUzMDVhZmFhOWRmMjk2NmVkMzc4ZjYuLjI0MjdiMjY1NzRiMGMyZmFiZjMwMDc0MWRkZGJlNGJm
OGNlYjkxOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVXBkYXRlLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgVXBkYXRlOjpVcGRhdGUoRG9jdW1lbnQmIGRvY3VtZW50KQogewogfQogCi1jb25zdCBF
bGVtZW50VXBkYXRlcyogVXBkYXRlOjplbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50JiBlbGVt
ZW50KSBjb25zdAorY29uc3QgRWxlbWVudFVwZGF0ZSogVXBkYXRlOjplbGVtZW50VXBkYXRlKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiB7CiAgICAgYXV0byBpdCA9IG1fZWxlbWVudHMu
ZmluZCgmZWxlbWVudCk7CiAgICAgaWYgKGl0ID09IG1fZWxlbWVudHMuZW5kKCkpCkBAIC00OSw3
ICs0OSw3IEBAIGNvbnN0IEVsZW1lbnRVcGRhdGVzKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGVzKGNv
bnN0IEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuICZpdC0+dmFsdWU7CiB9CiAK
LUVsZW1lbnRVcGRhdGVzKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1lbnQmIGVs
ZW1lbnQpCitFbGVtZW50VXBkYXRlKiBVcGRhdGU6OmVsZW1lbnRVcGRhdGUoY29uc3QgRWxlbWVu
dCYgZWxlbWVudCkKIHsKICAgICBhdXRvIGl0ID0gbV9lbGVtZW50cy5maW5kKCZlbGVtZW50KTsK
ICAgICBpZiAoaXQgPT0gbV9lbGVtZW50cy5lbmQoKSkKQEAgLTY3LDggKzY3LDggQEAgY29uc3Qg
VGV4dFVwZGF0ZSogVXBkYXRlOjp0ZXh0VXBkYXRlKGNvbnN0IFRleHQmIHRleHQpIGNvbnN0CiAK
IGNvbnN0IFJlbmRlclN0eWxlKiBVcGRhdGU6OmVsZW1lbnRTdHlsZShjb25zdCBFbGVtZW50JiBl
bGVtZW50KSBjb25zdAogewotICAgIGlmIChhdXRvKiB1cGRhdGVzID0gZWxlbWVudFVwZGF0ZXMo
ZWxlbWVudCkpCi0gICAgICAgIHJldHVybiB1cGRhdGVzLT51cGRhdGUuc3R5bGUuZ2V0KCk7Cisg
ICAgaWYgKGF1dG8qIHVwZGF0ZSA9IGVsZW1lbnRVcGRhdGUoZWxlbWVudCkpCisgICAgICAgIHJl
dHVybiB1cGRhdGUtPnN0eWxlLmdldCgpOwogICAgIGF1dG8qIHJlbmRlcmVyID0gZWxlbWVudC5y
ZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXIpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpA
QCAtNzcsMTUgKzc3LDE1IEBAIGNvbnN0IFJlbmRlclN0eWxlKiBVcGRhdGU6OmVsZW1lbnRTdHls
ZShjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25zdAogCiBSZW5kZXJTdHlsZSogVXBkYXRlOjpl
bGVtZW50U3R5bGUoY29uc3QgRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoYXV0byogdXBk
YXRlcyA9IGVsZW1lbnRVcGRhdGVzKGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gdXBkYXRlcy0+
dXBkYXRlLnN0eWxlLmdldCgpOworICAgIGlmIChhdXRvKiB1cGRhdGUgPSBlbGVtZW50VXBkYXRl
KGVsZW1lbnQpKQorICAgICAgICByZXR1cm4gdXBkYXRlLT5zdHlsZS5nZXQoKTsKICAgICBhdXRv
KiByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKTsKICAgICBpZiAoIXJlbmRlcmVyKQogICAg
ICAgICByZXR1cm4gbnVsbHB0cjsKICAgICByZXR1cm4gJnJlbmRlcmVyLT5tdXRhYmxlU3R5bGUo
KTsKIH0KIAotdm9pZCBVcGRhdGU6OmFkZEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVu
dCogcGFyZW50LCBFbGVtZW50VXBkYXRlcyYmIGVsZW1lbnRVcGRhdGVzKQordm9pZCBVcGRhdGU6
OmFkZEVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50VXBk
YXRlJiYgZWxlbWVudFVwZGF0ZSkKIHsKICAgICBBU1NFUlQoIW1fZWxlbWVudHMuY29udGFpbnMo
JmVsZW1lbnQpKTsKICAgICBBU1NFUlQoY29tcG9zZWRUcmVlQW5jZXN0b3JzKGVsZW1lbnQpLmZp
cnN0KCkgPT0gcGFyZW50KTsKQEAgLTkzLDcgKzkzLDcgQEAgdm9pZCBVcGRhdGU6OmFkZEVsZW1l
bnQoRWxlbWVudCYgZWxlbWVudCwgRWxlbWVudCogcGFyZW50LCBFbGVtZW50VXBkYXRlcyYmIGVs
ZW0KICAgICBtX3Jvb3RzLnJlbW92ZSgmZWxlbWVudCk7CiAgICAgYWRkUG9zc2libGVSb290KHBh
cmVudCk7CiAKLSAgICBtX2VsZW1lbnRzLmFkZCgmZWxlbWVudCwgV1RGTW92ZShlbGVtZW50VXBk
YXRlcykpOworICAgIG1fZWxlbWVudHMuYWRkKCZlbGVtZW50LCBXVEZNb3ZlKGVsZW1lbnRVcGRh
dGUpKTsKIH0KIAogdm9pZCBVcGRhdGU6OmFkZFRleHQoVGV4dCYgdGV4dCwgRWxlbWVudCogcGFy
ZW50LCBUZXh0VXBkYXRlJiYgdGV4dFVwZGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVXBkYXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVVwZGF0ZS5o
CmluZGV4IGMwZDRkMDZlYThmOWE0ODNlYzFhOTk1OTEyMmVjM2Y3MDg4NTllZjUuLjFmODIwOWRj
NTc5ZmVjMDA4NTQ4ZWE1MmZiYTI1NWY0M2Q1NTEwMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N0eWxlL1N0eWxlVXBkYXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVV
cGRhdGUuaApAQCAtNDcsMTYgKzQ3LDYgQEAgc3RydWN0IEVsZW1lbnRVcGRhdGUgewogICAgIGJv
b2wgcmVjb21wb3NpdGVMYXllciB7IGZhbHNlIH07CiB9OwogCi1lbnVtIGNsYXNzIERlc2NlbmRh
bnRzVG9SZXNvbHZlIHsgTm9uZSwgQ2hpbGRyZW5XaXRoRXhwbGljaXRJbmhlcml0LCBDaGlsZHJl
biwgQWxsIH07Ci0KLXVzaW5nIFBzZXVkb0lkVG9FbGVtZW50VXBkYXRlTWFwID0gSGFzaE1hcDxQ
c2V1ZG9JZCwgRWxlbWVudFVwZGF0ZSwgSW50SGFzaDxQc2V1ZG9JZD4sIFdURjo6U3Ryb25nRW51
bUhhc2hUcmFpdHM8UHNldWRvSWQ+PjsKLQotc3RydWN0IEVsZW1lbnRVcGRhdGVzIHsKLSAgICBF
bGVtZW50VXBkYXRlIHVwZGF0ZTsKLSAgICBEZXNjZW5kYW50c1RvUmVzb2x2ZSBkZXNjZW5kYW50
c1RvUmVzb2x2ZSB7IERlc2NlbmRhbnRzVG9SZXNvbHZlOjpOb25lIH07Ci0gICAgUHNldWRvSWRU
b0VsZW1lbnRVcGRhdGVNYXAgcHNldWRvRWxlbWVudFVwZGF0ZXM7Ci19OwotCiBzdHJ1Y3QgVGV4
dFVwZGF0ZSB7CiAgICAgdW5zaWduZWQgb2Zmc2V0IHsgMCB9OwogICAgIHVuc2lnbmVkIGxlbmd0
aCB7IHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+OjptYXgoKSB9OwpAQCAtNzAsOCArNjAs
OCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBMaXN0SGFzaFNldDxSZWZQdHI8Q29udGFpbmVyTm9k
ZT4+JiByb290cygpIGNvbnN0IHsgcmV0dXJuIG1fcm9vdHM7IH0KIAotICAgIGNvbnN0IEVsZW1l
bnRVcGRhdGVzKiBlbGVtZW50VXBkYXRlcyhjb25zdCBFbGVtZW50JikgY29uc3Q7Ci0gICAgRWxl
bWVudFVwZGF0ZXMqIGVsZW1lbnRVcGRhdGVzKGNvbnN0IEVsZW1lbnQmKTsKKyAgICBjb25zdCBF
bGVtZW50VXBkYXRlKiBlbGVtZW50VXBkYXRlKGNvbnN0IEVsZW1lbnQmKSBjb25zdDsKKyAgICBF
bGVtZW50VXBkYXRlKiBlbGVtZW50VXBkYXRlKGNvbnN0IEVsZW1lbnQmKTsKIAogICAgIGNvbnN0
IFRleHRVcGRhdGUqIHRleHRVcGRhdGUoY29uc3QgVGV4dCYpIGNvbnN0OwogCkBAIC04Myw3ICs3
Myw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiAhc2l6ZSgp
OyB9CiAgICAgdW5zaWduZWQgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fZWxlbWVudHMuc2l6ZSgp
ICsgbV90ZXh0cy5zaXplKCk7IH0KIAotICAgIHZvaWQgYWRkRWxlbWVudChFbGVtZW50JiwgRWxl
bWVudCogcGFyZW50LCBFbGVtZW50VXBkYXRlcyYmKTsKKyAgICB2b2lkIGFkZEVsZW1lbnQoRWxl
bWVudCYsIEVsZW1lbnQqIHBhcmVudCwgRWxlbWVudFVwZGF0ZSYmKTsKICAgICB2b2lkIGFkZFRl
eHQoVGV4dCYsIEVsZW1lbnQqIHBhcmVudCwgVGV4dFVwZGF0ZSYmKTsKICAgICB2b2lkIGFkZFRl
eHQoVGV4dCYsIFRleHRVcGRhdGUmJik7CiAKQEAgLTkyLDcgKzgyLDcgQEAgcHJpdmF0ZToKIAog
ICAgIFJlZjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBMaXN0SGFzaFNldDxSZWZQdHI8Q29u
dGFpbmVyTm9kZT4+IG1fcm9vdHM7Ci0gICAgSGFzaE1hcDxSZWZQdHI8Y29uc3QgRWxlbWVudD4s
IEVsZW1lbnRVcGRhdGVzPiBtX2VsZW1lbnRzOworICAgIEhhc2hNYXA8UmVmUHRyPGNvbnN0IEVs
ZW1lbnQ+LCBFbGVtZW50VXBkYXRlPiBtX2VsZW1lbnRzOwogICAgIEhhc2hNYXA8UmVmUHRyPGNv
bnN0IFRleHQ+LCBUZXh0VXBkYXRlPiBtX3RleHRzOwogfTsKIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>