<?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>152118</bug_id>
          
          <creation_ts>2015-12-10 03:45:16 -0800</creation_ts>
          <short_desc>[TexMap] Operate with a reference to the TextureMapper wherever possible</short_desc>
          <delta_ts>2015-12-15 03:54:46 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Zan Dobersek">zan</reporter>
          <assigned_to name="Zan Dobersek">zan</assigned_to>
          <cc>mrobinson</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1148126</commentid>
    <comment_count>0</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-10 03:45:16 -0800</bug_when>
    <thetext>[TexMap] Operate with a reference to the TextureMapper wherever possible</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148127</commentid>
    <comment_count>1</comment_count>
      <attachid>267090</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-10 03:51:48 -0800</bug_when>
    <thetext>Created attachment 267090
Patch

Will first run it through the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148134</commentid>
    <comment_count>2</comment_count>
      <attachid>267090</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-12-10 04:15:37 -0800</bug_when>
    <thetext>Comment on attachment 267090
Patch

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

r=me when this passes the EWS.

&gt; Source/WebCore/ChangeLog:10
&gt; +        TextureMapperLayer member variable which is null until the TextureMapper object

Perhaps you could use Optional&lt;TextureMapper&amp;&gt; in this case?

&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:81
&gt; +    TextureMapperPaintOptions options(*m_textureMapper);

Probably should do ASSERT(m_textureMapper) here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1148959</commentid>
    <comment_count>3</comment_count>
      <attachid>267090</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-12-14 08:12:55 -0800</bug_when>
    <thetext>Comment on attachment 267090
Patch

Looks like it passed just fine through the EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149237</commentid>
    <comment_count>4</comment_count>
      <attachid>267090</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-15 01:06:40 -0800</bug_when>
    <thetext>Comment on attachment 267090
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt; +        TextureMapperLayer member variable which is null until the TextureMapper object
&gt; 
&gt; Perhaps you could use Optional&lt;TextureMapper&amp;&gt; in this case?

Let&apos;s try that.

&gt;&gt; Source/WebCore/platform/graphics/texmap/TextureMapperLayer.cpp:81
&gt;&gt; +    TextureMapperPaintOptions options(*m_textureMapper);
&gt; 
&gt; Probably should do ASSERT(m_textureMapper) here.

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149240</commentid>
    <comment_count>5</comment_count>
      <attachid>267090</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-15 01:33:35 -0800</bug_when>
    <thetext>Comment on attachment 267090
Patch

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

&gt;&gt;&gt; Source/WebCore/ChangeLog:10
&gt;&gt;&gt; +        TextureMapperLayer member variable which is null until the TextureMapper object
&gt;&gt; 
&gt;&gt; Perhaps you could use Optional&lt;TextureMapper&amp;&gt; in this case?
&gt; 
&gt; Let&apos;s try that.

Optional&lt;&gt; doesn&apos;t work for references, and the ownership of the TextureMapper object should be kept in LayerTreeHost/CoordinatedGraphicsScene, so this isn&apos;t possible.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149241</commentid>
    <comment_count>6</comment_count>
      <attachid>267353</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-15 01:50:09 -0800</bug_when>
    <thetext>Created attachment 267353
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149268</commentid>
    <comment_count>7</comment_count>
      <attachid>267353</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-15 03:54:39 -0800</bug_when>
    <thetext>Comment on attachment 267353
Patch for landing

Clearing flags on attachment: 267353

Committed r194103: &lt;http://trac.webkit.org/changeset/194103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1149269</commentid>
    <comment_count>8</comment_count>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2015-12-15 03:54:46 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267090</attachid>
            <date>2015-12-10 03:51:48 -0800</date>
            <delta_ts>2015-12-15 01:50:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152118-20151210035115.patch</filename>
            <type>text/plain</type>
            <size>66899</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkzODk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWNjYmZhMjg3M2Q1NjEz
YjQzOGFjMTMwMTg0NDgzNmJhMjc0YzEyMy4uYmYyNDMyN2U2MjMxNWY0NmEzZWIwM2U0N2YyNzI1
NzNmNDUzYjdhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc4IEBACiAyMDE1LTEyLTEwICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KIAorICAgICAgICBbVGV4TWFwXSBPcGVy
YXRlIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlIFRleHR1cmVNYXBwZXIgd2hlcmV2ZXIgcG9zc2li
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEluIG1v
c3QgY2FzZXMgd2hlcmUgdXNlZCwgdGhlIHBvaW50ZXIgdG8gdGhlIFRleHR1cmVNYXBwZXIgaXMg
bm9uLW51bGwsIHNvIGl0CisgICAgICAgIHNob3VsZCByZWFsbHkgYmUgYSByZWZlcmVuY2UuIFRo
ZSBwb2ludGVyIGlzIHN0aWxsIHVzZWQgZm9yIHRoZQorICAgICAgICBUZXh0dXJlTWFwcGVyTGF5
ZXIgbWVtYmVyIHZhcmlhYmxlIHdoaWNoIGlzIG51bGwgdW50aWwgdGhlIFRleHR1cmVNYXBwZXIg
b2JqZWN0CisgICAgICAgIGlzIGNyZWF0ZWQgYW5kIHNldCBvbiB0aGUgcm9vdCBsYXllci4KKwor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQz
RFByaXZhdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZl
ckNhaXJvLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVm
ZmVyRGF0YUNhaXJvLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNz
Q29udGV4dDNEUHJpdmF0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9N
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFwaGljc1N1cmZhY2VDb21tb24uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6R3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVy
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaDoKKyAgICAgICAg
KFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpCaXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpHcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlcjo6dXBkYXRlQmFja2luZ1N0b3JlSWZOZWVk
ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFj
a2luZ1N0b3JlLmg6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3Jl
OjpkcmF3UmVwYWludENvdW50ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyRlBTQ291bnRlcjo6dXBkYXRlRlBTQW5kRGlzcGxheSk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmg6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJMYXllci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zOjpUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGYpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbik6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50VXNpbmdPdmVybGFwUmVn
aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OmFwcGx5TWFzayk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6Y29tbWl0U3VyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXI6OmRyYXdCb3Jk
ZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyU3VyZmFjZUJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5oOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29u
dGVudHNGcm9tSW1hZ2VJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcik6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291
bnRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6
OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmg6CisKKzIwMTUtMTItMTAgIFphbiBEb2JlcnNl
ayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgorCiAgICAgICAgIFtUZXhNYXBdIHBpeGVsIGNvdmVy
YWdlIG11bHRpcGxpY2F0aW9uIGluIFRpbGVkQmFja2luZ1N0b3JlIGNhbiBvdmVyZmxvdwogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMDU1CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvd2lu
L0NoYW5nZUxvZwppbmRleCA4YjM2MzkzMmRkMTJlOTBhMGExMWM4NmQ2MDBmMGZkZDc0NmY5YWY3
Li4xYjhlMzJjNGVlMzllNDM2NTZlNGNmYjMzZjA2MWZmZWEyMGE2NWNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93aW4vQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTUtMTItMTAgIFphbiBEb2JlcnNlayAgPHpkb2JlcnNl
a0BpZ2FsaWEuY29tPgorCisgICAgICAgIFtUZXhNYXBdIE9wZXJhdGUgd2l0aCBhIHJlZmVyZW5j
ZSB0byB0aGUgVGV4dHVyZU1hcHBlciB3aGVyZXZlciBwb3NzaWJsZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyMTE4CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9BY2NlbGVy
YXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChBY2NlbGVyYXRlZENvbXBvc2l0
aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KTogVGV4dHVyZU1hcHBlciBvYmpl
Y3QKKyAgICAgICAgaXMgbm93IG9wZXJhdGVkIHdpdGggdGhyb3VnaCBhIHJlZmVyZW5jZS4KKwog
MjAxNS0xMi0wMSAgRGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGFub21hbHkgd2hlcmUgaXNNb3VzZUV2ZW50IHJldHVybnMgZmFsc2UgZm9yIHdoZWVsIGV2ZW50
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCmluZGV4IGYwNzkyZDNjNjYwYWFlYThkYjFiNjNhNzNkMDRjNmM2ZDI3ZjA3OWYu
LmE2YTUxZTI1NGEyYTI4YzU0NThiM2ZlZjA4NTY2NDc1OTdjN2IxNjkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSwyNSBAQAorMjAxNS0xMi0xMCAgWmFuIERvYmVyc2VrICA8emRvYmVyc2VrQGlnYWxp
YS5jb20+CisKKyAgICAgICAgW1RleE1hcF0gT3BlcmF0ZSB3aXRoIGEgcmVmZXJlbmNlIHRvIHRo
ZSBUZXh0dXJlTWFwcGVyIHdoZXJldmVyIHBvc3NpYmxlCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTIxMTgKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZXBsYWNlIHBvaW50ZXJzIHRvIHRoZSBUZXh0dXJl
TWFwcGVyIG9iamVjdCB3aXRoIHJlZmVyZW5jZXMuCisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRp
bmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4
dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpk
cmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRy
YXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0
b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyk6CisgICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVk
R3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29v
cmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0
KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5l
Ojpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucyk6CisKIDIwMTUtMTItMDkgIERh
bmllbCBCYXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEJhaWwgb3V0
IGlmIHRoZSBwYWdlIHByb3h5IGlzIGludmFsaWQgd2hlbiBXZWJQYWdlUHJveHk6OnByb2Nlc3NX
aWxsQmVjb21le0ZvcmVncm91bmQsIFN1c3BlbmRlZH0oKSBhcmUgY2FsbGVkCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmNwcAppbmRleCA1NWIzMzVmZWZlNGUzOGMxZGUxN2I0N2NlMjZmMzZmMmE0MWNl
OTJhLi5iMTM0ZjVhNzQxZDRmZDMwNWM2ODM1N2JkOTA4ODdkMTdjOGI3MzA1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZh
dGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTExMiw3ICsxMTIsNyBAQCB2b2lkIEdyYXBoaWNzQ29udGV4
dDNEUHJpdmF0ZTo6c3dhcEJ1ZmZlcnNJZk5lZWRlZCgpCiAgICAgbV9jb250ZXh0LT5tYXJrTGF5
ZXJDb21wb3NpdGVkKCk7CiB9CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpICYmICFVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1NfVEhSRUFERUQpCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0
ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0
cml4LCBmbG9hdCBvcGFjaXR5KQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxv
YXQgb3BhY2l0eSkKIHsKICAgICBpZiAoIW1fZ2xDb250ZXh0KQogICAgICAgICByZXR1cm47CkBA
IC0xMzQsMTAgKzEzNCwxMCBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogICAgICAgICAgICAg
cHJldmlvdXNBY3RpdmVDb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKICAgICB9CiAKLSAg
ICBUZXh0dXJlTWFwcGVyR0wqIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdM
Kj4odGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpOwogICAgIFRleHR1cmVNYXBw
ZXJHTDo6RmxhZ3MgZmxhZ3MgPSBUZXh0dXJlTWFwcGVyR0w6OlNob3VsZEZsaXBUZXh0dXJlIHwg
KG1fY29udGV4dC0+bV9hdHRycy5hbHBoYSA/IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQg
OiAwKTsKICAgICBJbnRTaXplIHRleHR1cmVTaXplKG1fY29udGV4dC0+bV9jdXJyZW50V2lkdGgs
IG1fY29udGV4dC0+bV9jdXJyZW50SGVpZ2h0KTsKLSAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUo
bV9jb250ZXh0LT5tX3RleHR1cmUsIGZsYWdzLCB0ZXh0dXJlU2l6ZSwgdGFyZ2V0UmVjdCwgbWF0
cml4LCBvcGFjaXR5KTsKKyAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX2NvbnRleHQtPm1fdGV4
dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwog
I2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIH0KICNlbmRpZiAvLyBVU0UoVEVYVFVS
RV9NQVBQRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9H
cmFwaGljc0NvbnRleHQzRFByaXZhdGUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IDg1NjRkODNhZjkxY2UxMjBmYTI4
NmMxMDU1YjM4NWU5NjgxMzI4OTAuLjg5MThkMzgxZTZlZjc5Nzc4YmM0NDhhYmRiN2U2ZGJmNWMw
Y2VmZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBo
aWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCkBAIC01MSw3ICs1MSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBwcm94
eSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzd2FwQnVmZmVyc0lmTmVlZGVk
KCkgb3ZlcnJpZGU7CiAjZWxpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi0gICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNp
dHkpOwogI2VuZGlmCiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckNhaXJvLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCmluZGV4IGQ1ZGU3
NmZjNGU4OTlhZjEyNzdiZWU2MDUxODgyMmJmMGQ4ZmMwYmIuLjAzMDhiMTdmYmU2Yzc1NzM3ZmZi
MGFiYjFmMzA2MjA4YWJlZDNhNzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwCkBAIC00NTgsNyAr
NDU4LDcgQEAgU3RyaW5nIEltYWdlQnVmZmVyOjp0b0RhdGFVUkwoY29uc3QgU3RyaW5nJiBtaW1l
VHlwZSwgY29uc3QgZG91YmxlKiwgQ29vcmRpbmF0ZVMKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFD
Q0VMRVJBVEVEXzJEX0NBTlZBUykgJiYgIVVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURF
RCkKLXZvaWQgSW1hZ2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit2b2lkIEltYWdlQnVm
ZmVyRGF0YTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBl
ciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgbWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIEFTU0VSVChtX3RleHR1cmUpOwogCkBA
IC00NjcsNyArNDY3LDcgQEAgdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJlTWFw
cGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEYKICAgICBjYWlyb19zdXJm
YWNlX2ZsdXNoKG1fc3VyZmFjZS5nZXQoKSk7CiAgICAgcHJldmlvdXNBY3RpdmVDb250ZXh0LT5t
YWtlQ29udGV4dEN1cnJlbnQoKTsKIAotICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+
KHRleHR1cmVNYXBwZXIpLT5kcmF3VGV4dHVyZShtX3RleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6
U2hvdWxkQmxlbmQsIG1fc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4LCBvcGFjaXR5KTsKKyAgICBz
dGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVyKS5kcmF3VGV4dHVyZSht
X3RleHR1cmUsIFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkQmxlbmQsIG1fc2l6ZSwgdGFyZ2V0UmVj
dCwgbWF0cml4LCBvcGFjaXR5KTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJEYXRhQ2Fpcm8u
aAppbmRleCAxZTU4Njg1NmUxMmMzMjY5Y2ZlN2Q5ODgyMDBjMjJmZTAyYzY1OTQ2Li44MzJlNDBk
NDhmNmYxZmFhMDNmNWE4YjE3ZGMzNTVkODQ5MWJkYjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFDYWlyby5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNh
aXJvLmgKQEAgLTc0LDcgKzc0LDcgQEAgcHVibGljOgogICAgIHVpbnQzMl90IG1fY29tcG9zaXRv
clRleHR1cmU7CiAgICAgUmVmUHRyPGNhaXJvX3Q+IG1fY29tcG9zaXRvckNyOwogI2Vsc2UKLSAg
ICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9w
YWNpdHkpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQgb3BhY2l0eSk7CiAjZW5kaWYKICAgICB1aW50MzJfdCBtX3RleHR1cmU7CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFw
aGljc0NvbnRleHQzRFByaXZhdGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKaW5kZXggMTY2MjdmNGVkOGEzZDIy
ZDYzMzkzMjE0MTNmMTlhY2JlOTE5ZjFmNy4uNzJlYzMyYzY2YjE2ZTllM2EwMzgzYzg0NDg3ODBh
ZDc2OWFjNTEwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAKQEAgLTE1OSw3
ICsxNTksNyBAQCBib29sIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cHJlcGFyZUJ1ZmZlcigp
IGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2
YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0
JiAvKiB0YXJnZXQgKi8sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3Bh
Y2l0eSAqLykKK3ZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiAvKiB0YXJnZXQgKi8sIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgLyogb3BhY2l0eSAqLykKIHsKICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCmluZGV4IGM4Yzkz
NGE1MGFkMDQxOGMwNzUxYzgxNjAzMTgzZDYxM2EwNWE3NDAuLjU3ODliZjkyYjQxY2IxYTI1Mzdj
MGU2ZDYwNjYyZTgyZmIzMWFlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAg
LTM2LDcgKzM2LDcgQEAgcHVibGljOgogCiAgICAgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBw
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dDNEKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRDb250ZXh0TG9z
dENhbGxiYWNrKHN0ZDo6dW5pcXVlX3B0cjxHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExvc3RD
YWxsYmFjaz4pOwotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJl
TWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBm
bG9hdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIEludFNpemUgcGxhdGZvcm1MYXllclNp
emUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHVpbnQzMl90IGNvcHlUb0dyYXBoaWNz
U3VyZmFjZSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgR3JhcGhpY3NTdXJmYWNlVG9rZW4gZ3Jh
cGhpY3NTdXJmYWNlVG9rZW4oKSBjb25zdCBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAppbmRleCBhYjJmZGNjMTI5MWE5
ZWZmZDZhMmZjYjUyYmQzY2RhMjhmNDAzZTJlLi5mNWE0MWZlZDMwNTU5NmM3OGU5MTY0YThlNjE4
MTI2NTM4ZjA1MzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwCkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBNZWRpYVBsYXllclBy
aXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0
IEZsb2EKIH0KIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgIVVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKLXZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZTo6cGFpbnRU
b1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4LCBmbG9h
dCBvcGFjaXR5KQordm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgsIGZsb2F0
IG9wYWNpdHkpCiB7CiAgICAgaWYgKCFtX3BsYXllci0+dmlzaWJsZSgpKQogICAgICAgICByZXR1
cm47CkBAIC02NDksMTAgKzY0OSwxMCBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ckJhc2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cgogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICAgICAgSW50U2l6ZSBzaXplID0gSW50U2l6ZShH
U1RfVklERU9fSU5GT19XSURUSCgmdmlkZW9JbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUKCZ2
aWRlb0luZm8pKTsKLSAgICAgICAgICAgIHRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5hY3F1aXJl
VGV4dHVyZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZv
KSA/IEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcp
OworICAgICAgICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXIuYWNxdWlyZVRleHR1cmVGcm9t
UG9vbChzaXplLCBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBCaXRtYXBU
ZXh0dXJlOjpTdXBwb3J0c0FscGhhIDogQml0bWFwVGV4dHVyZTo6Tm9GbGFnKTsKICAgICAgICAg
ICAgIHVwZGF0ZVRleHR1cmUoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKnRleHR1cmUp
LCB2aWRlb0luZm8pOwogICAgICAgICB9Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdUZXh0
dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOworICAgICAgICB0ZXh0
dXJlTWFwcGVyLmRyYXdUZXh0dXJlKCp0ZXh0dXJlLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNp
dHkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC02NzgsOCArNjc4LDggQEAgdm9pZCBN
ZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXIKICAgICBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzIGZsYWdzID0gR1NU
X1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRlb0luZm8pID8gVGV4dHVyZU1hcHBlckdMOjpTaG91
bGRCbGVuZCA6IDA7CiAKICAgICBJbnRTaXplIHNpemUgPSBJbnRTaXplKEdTVF9WSURFT19JTkZP
X1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbykpOwot
ICAgIFRleHR1cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBlckdMID0gcmVpbnRlcnByZXRfY2FzdDxU
ZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKLSAgICB0ZXh0dXJlTWFwcGVyR0wtPmRy
YXdUZXh0dXJlKHRleHR1cmVJRCwgZmxhZ3MsIHNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3Bh
Y2l0eSk7CisgICAgVGV4dHVyZU1hcHBlckdMJiB0ZXh0dXJlTWFwcGVyR0wgPSByZWludGVycHJl
dF9jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpOworICAgIHRleHR1cmVNYXBw
ZXJHTC5kcmF3VGV4dHVyZSh0ZXh0dXJlSUQsIGZsYWdzLCBzaXplLCB0YXJnZXRSZWN0LCBtYXRy
aXgsIG9wYWNpdHkpOwogICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCgmdmlkZW9GcmFtZSk7CiAj
ZW5kaWYKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dz
dHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
QmFzZS5oCmluZGV4IDZjOWZiOWE3ZmI3YTk5YTYwMzhhNjM5OTYzMjE0ZjI2NTZkOTU2NTAuLjVm
MjQxYTgwZWM0MmU0NmFlNGZkYjBlYzNlZmZjY2E1YjE3ZTM4ODcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVH
U3RyZWFtZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaApAQCAtMTEwLDcgKzExMCw3
IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgdmlydHVhbCBib29sIHN1cHBvcnRzQWNjZWxlcmF0ZWRS
ZW5kZXJpbmcoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAjZW5kaWYKLSAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJp
ZGU7CiAjZW5kaWYKIAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNl
cy9HcmFwaGljc1N1cmZhY2UuY3BwCmluZGV4IDI0NDJlMzdkZTI4ZjUwNzJlN2FlMjE1YjI1ZjYw
ZjMxMmY5MjMyZjcuLjhmYTVhYjVkOWQyNjU4NzQ2ODU5MDhkNTE3ZTZhMzU0NWNlZDM2MjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL0dyYXBo
aWNzU3VyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3Vy
ZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIEdyYXBoaWNz
U3VyZmFjZTo6Y29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlYwogICAgIHBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHRleHR1cmUsIHNvdXJjZVJl
Y3QpOwogfQogCi12b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQordm9p
ZCBHcmFwaGljc1N1cmZhY2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3Jt
YXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBwbGF0Zm9ybVBh
aW50VG9UZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIsIHRhcmdldFJlY3QsIHRyYW5zZm9ybSwg
b3BhY2l0eSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCmluZGV4IDViYjgxMmMxNTVkYWFhNmE3
MTE2NzAyYjIzODg1OWZkYTEyYjBiODcuLjc0ZDhmMTU0ZTlhNzEyNzVkMTBkZjkzMmM0ZDQ0ZWE1
YjBlYjllNDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oCkBAIC03Nyw3ICs3Nyw3IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJiwgRmxhZ3MsIGNvbnN0IEdyYXBoaWNzU3VyZmFjZVRva2VuJik7CiAgICAgdm9pZCBj
b3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0LCB1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJ
bnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0KTsKICAgICB2
b2lkIGNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiBzb3Vy
Y2VSZWN0KTsKLSAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jiwg
ZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFw
cGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogICAgIHVpbnQzMl90IGZyb250QnVmZmVyKCk7CiAgICAg
dWludDMyX3Qgc3dhcEJ1ZmZlcnMoKTsKICAgICBHcmFwaGljc1N1cmZhY2VUb2tlbiBleHBvcnRU
b2tlbigpOwpAQCAtOTcsNyArOTcsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBwbGF0Zm9ybVVu
bG9jaygpOwogICAgIHZvaWQgcGxhdGZvcm1Db3B5VG9HTFRleHR1cmUodWludDMyX3QgdGFyZ2V0
LCB1aW50MzJfdCB0ZXh0dXJlLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmKTsKICAg
ICB2b2lkIHBsYXRmb3JtQ29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IElu
dFJlY3QmIHNvdXJjZVJlY3QpOwotICAgIHZvaWQgcGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOworICAgIHZvaWQgcGxhdGZvcm1QYWlu
dFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwogICAgIHVp
bnQzMl90IHBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdDsKICAgICB1aW50MzJfdCBwbGF0Zm9y
bVN3YXBCdWZmZXJzKCk7CiAgICAgSW50U2l6ZSBwbGF0Zm9ybVNpemUoKSBjb25zdDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1cmZhY2VzL2VmbC9HcmFw
aGljc1N1cmZhY2VDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKaW5kZXggZTA2YTEyOGE3MTM1
ZjU3NWRlMDI1NDRhZDU0NzAzM2M1NWE1Mzc5Yy4uZWMxMzA0MGQyMWQ0ZWE3YTAwZTNkZGI4MmM1
YTRiMTM5NDk2NTMwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZsL0dyYXBoaWNzU3VyZmFjZUNvbW1v
bi5jcHAKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1D
b3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZUlkLCBjb25zdCBJbnRSZWN0JgogICAgIG1f
cHJpdmF0ZS0+Y29weUZyb21UZXh0dXJlKHRleHR1cmVJZCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NT
dXJmYWNlOjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgR3JhcGhpY3NTdXJmYWNl
OjpwbGF0Zm9ybVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICB1aW50MzJfdCB0ZXh0dXJlID0g
cGxhdGZvcm1HZXRUZXh0dXJlSUQoKTsKICAgICBpZiAoIXRleHR1cmUpCkBAIC0xODMsNyArMTgz
LDcgQEAgdm9pZCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKIAogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGFkanVzdGVkVHJhbnNmb3JtLm11
bHRpcGx5KFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KG1fcHJpdmF0ZS0+cmVjdCgp
LCB0YXJnZXRSZWN0KSk7Ci0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMKj4odGV4dHVy
ZU1hcHBlciktPmRyYXdUZXh0dXJlKHRleHR1cmUsIG1fcHJpdmF0ZS0+ZmxhZ3MoKSwgbV9wcml2
YXRlLT5zaXplKCksIG1fcHJpdmF0ZS0+cmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSwgb3BhY2l0
eSk7CisgICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcikuZHJh
d1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBtX3ByaXZhdGUtPnNpemUoKSwg
bV9wcml2YXRlLT5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5KTsKIH0KIAogdWlu
dDMyX3QgR3JhcGhpY3NTdXJmYWNlOjpwbGF0Zm9ybUZyb250QnVmZmVyKCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBU
ZXh0dXJlLmNwcAppbmRleCBmOTllOWMxMzQzMDQzZDY2NDlkYjRkZGY1MDg1NzA5OTYxYTYyNTc1
Li41NTJkMWM2ZjBmY2RmNmM4NDAxNjhkOTY5YjY0ZjEzZDM5YWNlNjM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmUuY3BwCkBAIC0zMyw3ICszMyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotdm9pZCBC
aXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBHcmFwaGljc0xheWVyKiBzb3VyY2VMYXllciwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgSW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRz
RmxhZywgZmxvYXQgc2NhbGUpCit2b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVD
b250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKIHsKICAgICAvLyBN
YWtpbmcgYW4gdW5jb25kaXRpb25hbGx5IHVuYWNjZWxlcmF0ZWQgYnVmZmVyIGhlcmUgaXMgT0sg
YmVjYXVzZSB0aGlzIGNvZGUKICAgICAvLyBpc24ndCB1c2VkIGJ5IGFueSBwbGF0Zm9ybXMgdGhh
dCByZXNwZWN0IHRoZSBhY2NlbGVyYXRlZCBiaXQuCkBAIC00Myw4ICs0Myw4IEBAIHZvaWQgQml0
bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
R3JhcGhpY3NMYXllcioKICAgICAgICAgcmV0dXJuOwogCiAgICAgR3JhcGhpY3NDb250ZXh0JiBj
b250ZXh0ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKTsKLSAgICBjb250ZXh0LnNldEltYWdlSW50
ZXJwb2xhdGlvblF1YWxpdHkodGV4dHVyZU1hcHBlci0+aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0
eSgpKTsKLSAgICBjb250ZXh0LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0
RHJhd2luZ01vZGUoKSk7CisgICAgY29udGV4dC5zZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5
KHRleHR1cmVNYXBwZXIuaW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpKTsKKyAgICBjb250ZXh0
LnNldFRleHREcmF3aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLnRleHREcmF3aW5nTW9kZSgpKTsKIAog
ICAgIEludFJlY3Qgc291cmNlUmVjdCh0YXJnZXRSZWN0KTsKICAgICBzb3VyY2VSZWN0LnNldExv
Y2F0aW9uKG9mZnNldCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaAppbmRleCBhZGY5ZTU4ODg0OGU4NjA3ZmJjYWZj
ZmY3NzRmMTc2NzI0MWUyMzkzLi5lOWM3ZDA2NDhkNzY4MzFlZjZiOTQ1NWNkMWZhMGJjMTkzYWM1
NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
Qml0bWFwVGV4dHVyZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmgKQEAgLTY1LDcgKzY1LDcgQEAgcHVibGljOgogCiAgICAgdmly
dHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVw
ZGF0ZUNvbnRlbnRzRmxhZykgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhU
ZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29u
c3QgSW50UG9pbnQmIG9mZnNldCwgVXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSA9IDEp
OworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgR3JhcGhp
Y3NMYXllciosIGNvbnN0IEludFJlY3QmIHRhcmdldCwgY29uc3QgSW50UG9pbnQmIG9mZnNldCwg
VXBkYXRlQ29udGVudHNGbGFnLCBmbG9hdCBzY2FsZSA9IDEpOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJ
bnRQb2ludCYgb2Zmc2V0LCBpbnQgYnl0ZXNQZXJMaW5lLCBVcGRhdGVDb250ZW50c0ZsYWcpID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKICAgICBpbmxpbmUgRmxh
Z3MgZmxhZ3MoKSBjb25zdCB7IHJldHVybiBtX2ZsYWdzOyB9CkBAIC04Myw3ICs4Myw3IEBAIHB1
YmxpYzoKICAgICBpbmxpbmUgaW50IG51bWJlck9mQnl0ZXMoKSBjb25zdCB7IHJldHVybiBzaXpl
KCkud2lkdGgoKSAqIHNpemUoKS5oZWlnaHQoKSAqIGJwcCgpID4+IDM7IH0KICAgICBpbmxpbmUg
Ym9vbCBpc09wYXF1ZSgpIGNvbnN0IHsgcmV0dXJuICEobV9mbGFncyAmIFN1cHBvcnRzQWxwaGEp
OyB9CiAKLSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJz
KFRleHR1cmVNYXBwZXIqLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJikgeyByZXR1cm4gdGhpczsg
fQorICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4
dHVyZU1hcHBlciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0aGlzOyB9CiAK
IHByb3RlY3RlZDoKICAgICBJbnRTaXplIG1fY29udGVudFNpemU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
Y3BwCmluZGV4IDgyNDM2YzQ3MWUzMmQ0ZTg5MWZkNTE0NWQxMTgxN2MzYTFlMWE3YzAuLjJhOWZi
ODUwM2U4ZWY0MzQwYmQ1MjRiYmQxMGRjZmEwMTUzM2M1YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
Y3BwCkBAIC0yMjEsMTMgKzIyMSwxMyBAQCBzdGF0aWMgdW5zaWduZWQgZ2V0UGFzc2VzUmVxdWly
ZWRGb3JGaWx0ZXIoRmlsdGVyT3BlcmF0aW9uOjpPcGVyYXRpb25UeXBlIHR5cGUpCiAgICAgfQog
fQogCi1QYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0
ZXJzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMm
IGZpbHRlcnMpCitQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBw
bHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZpbHRlck9wZXJh
dGlvbnMmIGZpbHRlcnMpCiB7CiAgICAgaWYgKGZpbHRlcnMuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4gdGhpczsKIAotICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2Fz
dDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKLSAgICBSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gcHJldmlvdXNTdXJmYWNlID0gdGV4bWFwR0wtPmN1cnJlbnRTdXJmYWNlKCk7CisgICAg
VGV4dHVyZU1hcHBlckdMJiB0ZXhtYXBHTCA9IHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+
KHRleHR1cmVNYXBwZXIpOworICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBwcmV2aW91c1N1cmZh
Y2UgPSB0ZXhtYXBHTC5jdXJyZW50U3VyZmFjZSgpOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJl
PiByZXN1bHRTdXJmYWNlID0gdGhpczsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gaW50ZXJt
ZWRpYXRlU3VyZmFjZTsKICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3BhcmVTdXJmYWNlOwpA
QCAtMjQzLDggKzI0Myw4IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVy
ZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hCiAgICAgICAgICAgICBi
b29sIGxhc3QgPSAoaSA9PSBmaWx0ZXJzLnNpemUoKSAtIDEpICYmIChqID09IG51bVBhc3NlcyAt
IDEpOwogICAgICAgICAgICAgaWYgKCFsYXN0KSB7CiAgICAgICAgICAgICAgICAgaWYgKCFpbnRl
cm1lZGlhdGVTdXJmYWNlKQotICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNl
ID0gdGV4bWFwR0wtPmFjcXVpcmVUZXh0dXJlRnJvbVBvb2woY29udGVudFNpemUoKSk7Ci0gICAg
ICAgICAgICAgICAgdGV4bWFwR0wtPmJpbmRTdXJmYWNlKGludGVybWVkaWF0ZVN1cmZhY2UuZ2V0
KCkpOworICAgICAgICAgICAgICAgICAgICBpbnRlcm1lZGlhdGVTdXJmYWNlID0gdGV4bWFwR0wu
YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpKTsKKyAgICAgICAgICAgICAgICB0
ZXhtYXBHTC5iaW5kU3VyZmFjZShpbnRlcm1lZGlhdGVTdXJmYWNlLmdldCgpKTsKICAgICAgICAg
ICAgIH0KIAogICAgICAgICAgICAgaWYgKGxhc3QpIHsKQEAgLTI1Miw3ICsyNTIsNyBAQCBQYXNz
UmVmUHRyPEJpdG1hcFRleHR1cmU+IEJpdG1hcFRleHR1cmVHTDo6YXBwbHlGaWx0ZXJzKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
fQogCi0gICAgICAgICAgICB0ZXhtYXBHTC0+ZHJhd0ZpbHRlcmVkKCpyZXN1bHRTdXJmYWNlLmdl
dCgpLCBzcGFyZVN1cmZhY2UuZ2V0KCksICpmaWx0ZXIsIGopOworICAgICAgICAgICAgdGV4bWFw
R0wuZHJhd0ZpbHRlcmVkKCpyZXN1bHRTdXJmYWNlLmdldCgpLCBzcGFyZVN1cmZhY2UuZ2V0KCks
ICpmaWx0ZXIsIGopOwogICAgICAgICAgICAgaWYgKCFqICYmIGZpbHRlci0+dHlwZSgpID09IEZp
bHRlck9wZXJhdGlvbjo6RFJPUF9TSEFET1cpIHsKICAgICAgICAgICAgICAgICBzcGFyZVN1cmZh
Y2UgPSByZXN1bHRTdXJmYWNlOwogICAgICAgICAgICAgICAgIHJlc3VsdFN1cmZhY2UgPSBudWxs
cHRyOwpAQCAtMjYxLDcgKzI2MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFw
VGV4dHVyZUdMOjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICB0ZXhtYXBHTC0+YmluZFN1cmZhY2UocHJldmlvdXNTdXJmYWNlLmdl
dCgpKTsKKyAgICB0ZXhtYXBHTC5iaW5kU3VyZmFjZShwcmV2aW91c1N1cmZhY2UuZ2V0KCkpOwog
ICAgIHJldHVybiByZXN1bHRTdXJmYWNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKaW5kZXggZDVk
NjczOGEzZWQxZWRlMDg1MzRiNjE0YTAyMGI2NDM5NmNlMGUxZi4uMjcxMTRiYjRmODI2ZDMyNmIw
ODZjMGJjNWI5YWVmMjhlNDY3YjcwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaApAQCAtNTQsNyArNTQs
NyBAQCBwdWJsaWM6CiAgICAgdm9pZCB1cGRhdGVDb250ZW50c05vU3dpenpsZShjb25zdCB2b2lk
KiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgc291cmNlT2Zmc2V0LCBp
bnQgYnl0ZXNQZXJMaW5lLCB1bnNpZ25lZCBieXRlc1BlclBpeGVsID0gNCwgUGxhdGZvcm0zRE9i
amVjdCBnbEZvcm1hdCA9IEdyYXBoaWNzQ29udGV4dDNEOjpSR0JBKTsKICAgICB2aXJ0dWFsIGJv
b2wgaXNCYWNrZWRCeU9wZW5HTCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIAot
ICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVy
ZU1hcHBlciosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gYXBwbHlGaWx0ZXJzKFRleHR1cmVNYXBwZXImLCBj
b25zdCBGaWx0ZXJPcGVyYXRpb25zJikgb3ZlcnJpZGU7CiAgICAgc3RydWN0IEZpbHRlckluZm8g
ewogICAgICAgICBSZWZQdHI8RmlsdGVyT3BlcmF0aW9uPiBmaWx0ZXI7CiAgICAgICAgIHVuc2ln
bmVkIHBhc3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmNwcAppbmRl
eCBjZWRhODJkZjI0NjY0NDFmYTZmYjQ2MjJkMDc5NWE4NWFiYTAwYmFmLi5jMTU0OTI5YzAyMjEw
NDFhNjgyZGNiODBlNjc4ZjQyZjk3Y2RhMmEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVy
VGV4dHVyZU1hcHBlci5jcHAKQEAgLTU0OSw3ICs1NDksNyBAQCB2b2lkIEdyYXBoaWNzTGF5ZXJU
ZXh0dXJlTWFwcGVyOjp1cGRhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCgpCiAgICAgYmFja2luZ1N0
b3JlLT51cGRhdGVDb250ZW50c1NjYWxlKHBhZ2VTY2FsZUZhY3RvcigpICogZGV2aWNlU2NhbGVG
YWN0b3IoKSk7CiAKICAgICBkaXJ0eVJlY3Quc2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZp
Y2VTY2FsZUZhY3RvcigpKTsKLSAgICBiYWNraW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzKHRleHR1
cmVNYXBwZXIsIHRoaXMsIG1fc2l6ZSwgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVD
YW5Nb2RpZnlPcmlnaW5hbEltYWdlRGF0YSk7CisgICAgYmFja2luZ1N0b3JlLT51cGRhdGVDb250
ZW50cygqdGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1
cmU6OlVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKIAogICAgIG1fbmVlZHNEaXNw
bGF5ID0gZmFsc2U7CiAgICAgbV9uZWVkc0Rpc3BsYXlSZWN0ID0gSW50UmVjdCgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKaW5kZXggMDc2ZDAxYmU5NDA1ZTFjMDQxNTg5
MDU5NzlhZTY0ZGYxM2NmNTE1YS4uMzEzNWNhMDY3OGI0NGM3Y2YzYWZkZjczZGI2MDA4ODk0MThj
YmYwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCkBAIC0zOSw4ICsz
OSw4IEBAIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiBjbGFzcyBUZXh0dXJlTWFwcGVyQmFja2luZ1N0
b3JlIDogcHVibGljIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLCBwdWJsaWMgUmVmQ291bnRl
ZDxUZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlPiB7CiBwdWJsaWM6CiAgICAgdmlydHVhbCBSZWZQ
dHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNv
bnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgLyogcmVwYWludENvdW50ICov
LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0
cml4JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGRyYXdSZXBhaW50Q291bnRlcihUZXh0dXJlTWFw
cGVyJiwgaW50IC8qIHJlcGFpbnRDb3VudCAqLywgY29uc3QgQ29sb3ImLCBjb25zdCBGbG9hdFJl
Y3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYpIHsgfQogICAgIHZpcnR1YWwgflRleHR1
cmVNYXBwZXJCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3Vu
dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyRlBTQ291bnRlci5jcHAKaW5kZXggMmQzMzNhZjM5MGU1MzgyZTFhZWM4ZTUzNjRiYjQy
ZmZlMGUxODZlMS4uYmM3MjI1Njk2ZDA3MjM4Y2Y4Zjc5NDk0NzcyYzg1NzE1NGI5OTM0ZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJGUFNDb3VudGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCkBAIC00Niw3ICs0Niw3IEBAIFRl
eHR1cmVNYXBwZXJGUFNDb3VudGVyOjpUZXh0dXJlTWFwcGVyRlBTQ291bnRlcigpCiAgICAgfQog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJGUFNDb3VudGVyOjp1cGRhdGVGUFNBbmREaXNwbGF5KFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4KQordm9pZCBUZXh0dXJlTWFwcGVyRlBT
Q291bnRlcjo6dXBkYXRlRlBTQW5kRGlzcGxheShUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBGbG9hdFBvaW50JiBsb2NhdGlvbiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IG1hdHJpeCkKIHsKICAgICBpZiAoIW1faXNTaG93aW5nRlBTKQogICAgICAgICByZXR1cm47CkBA
IC01OSw3ICs1OSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OnVwZGF0ZUZQU0Fu
ZERpc3BsYXkoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwKICAgICAgICAgbV9mcHNUaW1l
c3RhbXAgKz0gZGVsdGE7CiAgICAgfQogCi0gICAgdGV4dHVyZU1hcHBlci0+ZHJhd051bWJlciht
X2xhc3RGUFMsIENvbG9yOjpibGFjaywgbG9jYXRpb24sIG1hdHJpeCk7CisgICAgdGV4dHVyZU1h
cHBlci5kcmF3TnVtYmVyKG1fbGFzdEZQUywgQ29sb3I6OmJsYWNrLCBsb2NhdGlvbiwgbWF0cml4
KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJGUFNDb3VudGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0Nv
dW50ZXIuaAppbmRleCA2NDk5ODljNzZjNDE4MzlhOWRjZmIwZDlkOTY5ZjczODY0NTRlZTMwLi41
YWJmZDlkY2I0MzhkZjYyNDhmNjJmYzg1MTIyNmIxN2Y0NjY2Y2FhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXIuaApAQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBUZXh0dXJlTWFwcGVy
RlBTQ291bnRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAg
VGV4dHVyZU1hcHBlckZQU0NvdW50ZXIoKTsKLSAgICB2b2lkIHVwZGF0ZUZQU0FuZERpc3BsYXko
VGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UG9pbnQmID0gRmxvYXRQb2ludDo6emVybygpLCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKKyAg
ICB2b2lkIHVwZGF0ZUZQU0FuZERpc3BsYXkoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UG9p
bnQmID0gRmxvYXRQb2ludDo6emVybygpLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpKTsKIAogcHJpdmF0ZToKICAgICBib29sIG1faXNTaG93aW5n
RlBTOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJMYXllci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAppbmRleCBmYzc3MTA2MmUxYzAyYWY3MGYz
ZjNjMzJkNjM3ZmNkMDNlZjg3ZmYxLi4xNWNlYmRkYWJmNWI3NDU4MDJhMmVmZWZmZGI3MTI2Yzli
ZDM1OWRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcApAQCAtMzEsMTUgKzMxLDE1IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyB7
CiBwdWJsaWM6Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7Ci0gICAgZmxvYXQg
b3BhY2l0eTsKKyAgICBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIpCisgICAgICAgIDogdGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyKQorICAg
IHsgfQorCisgICAgVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcjsKICAgICBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCB0cmFuc2Zvcm07CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHN1cmZhY2U7
CisgICAgZmxvYXQgb3BhY2l0eSB7IDEgfTsKICAgICBJbnRTaXplIG9mZnNldDsKLSAgICBUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyOwotICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMo
KQotICAgICAgICA6IG9wYWNpdHkoMSkKLSAgICAgICAgLCB0ZXh0dXJlTWFwcGVyKDApCi0gICAg
eyB9CiB9OwogCiB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6Y29tcHV0ZVRyYW5zZm9ybXNSZWN1
cnNpdmUoKQpAQCAtNzgsOSArNzgsOSBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnQo
KQogewogICAgIGNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCk7CiAKLSAgICBUZXh0dXJlTWFw
cGVyUGFpbnRPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyID0gbV90
ZXh0dXJlTWFwcGVyOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZhY2UoMCk7
CisgICAgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyBvcHRpb25zKCptX3RleHR1cmVNYXBwZXIp
OworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZSgwKTsKKwogICAgIHBhaW50
UmVjdXJzaXZlKG9wdGlvbnMpOwogfQogCkBAIC0xMTYsMTQgKzExNiwxNCBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMm
IG9wdGlvbnMpCiAgICAgdHJhbnNmb3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21i
aW5lZCgpKTsKIAogICAgIGlmIChtX3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0
YXRlLmNvbnRlbnRzUmVjdC5pc0VtcHR5KCkgJiYgbV9zdGF0ZS5zb2xpZENvbG9yLmFscGhhKCkp
IHsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRl
LmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBibGVuZFdpdGhPcGFjaXR5KG1fc3RhdGUuc29saWRD
b2xvciwgb3B0aW9ucy5vcGFjaXR5KSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5k
cmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBibGVuZFdpdGhP
cGFjaXR5KG1fc3RhdGUuc29saWRDb2xvciwgb3B0aW9ucy5vcGFjaXR5KSk7CiAgICAgICAgIGlm
IChtX3N0YXRlLnNob3dEZWJ1Z0JvcmRlcnMpCi0gICAgICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXItPmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVn
Qm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOworICAgICAgICAgICAgb3B0aW9u
cy50ZXh0dXJlTWFwcGVyLmRyYXdCb3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0
YXRlLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5zZXRXcmFwTW9kZShU
ZXh0dXJlTWFwcGVyOjpTdHJldGNoV3JhcCk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5z
ZXRQYXR0ZXJuVHJhbnNmb3JtKFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG9wdGlvbnMu
dGV4dHVyZU1hcHBlci5zZXRXcmFwTW9kZShUZXh0dXJlTWFwcGVyOjpTdHJldGNoV3JhcCk7Cisg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldFBhdHRlcm5UcmFuc2Zvcm0oVHJhbnNmb3JtYXRp
b25NYXRyaXgoKSk7CiAKICAgICBpZiAobV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgRmxvYXRS
ZWN0IHRhcmdldFJlY3QgPSBsYXllclJlY3QoKTsKQEAgLTE0MSw4ICsxNDEsOCBAQCB2b2lkIFRl
eHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlv
bnMmIG9wdGlvbnMpCiAKICAgICBpZiAoIW1fc3RhdGUuY29udGVudHNUaWxlU2l6ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgY29tcHV0ZVBhdHRlcm5UcmFuc2Zvcm1JZk5lZWRlZCgpOwotICAgICAg
ICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldFdyYXBNb2RlKFRleHR1cmVNYXBwZXI6OlJlcGVh
dFdyYXApOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldFBhdHRlcm5UcmFuc2Zv
cm0obV9wYXR0ZXJuVHJhbnNmb3JtKTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNl
dFdyYXBNb2RlKFRleHR1cmVNYXBwZXI6OlJlcGVhdFdyYXApOworICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXIuc2V0UGF0dGVyblRyYW5zZm9ybShtX3BhdHRlcm5UcmFuc2Zvcm0pOwogICAg
IH0KIAogICAgIEFTU0VSVCghbGF5ZXJSZWN0KCkuaXNFbXB0eSgpKTsKQEAgLTE3MiwxNCArMTcy
LDE0IEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbihjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb25zJiBvCiAgICAgICAgIGNsaXBUcmFuc2Zvcm0udHJh
bnNsYXRlKG9wdGlvbnMub2Zmc2V0LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsK
ICAgICAgICAgY2xpcFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7CiAgICAg
ICAgIGNsaXBUcmFuc2Zvcm0ubXVsdGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkp
OwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChjbGlwVHJhbnNmb3Jt
LCBsYXllclJlY3QoKSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iZWdpbkNsaXAo
Y2xpcFRyYW5zZm9ybSwgbGF5ZXJSZWN0KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byogY2hp
bGQgOiBtX2NoaWxkcmVuKQogICAgICAgICBjaGlsZC0+cGFpbnRSZWN1cnNpdmUob3B0aW9ucyk7
CiAKICAgICBpZiAoc2hvdWxkQ2xpcCkKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5l
bmRDbGlwKCk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5lbmRDbGlwKCk7CiB9CiAK
IGJvb2wgVGV4dHVyZU1hcHBlckxheWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CkBAIC0zMjgsMTIg
KzMyOCwxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdp
b25zKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbgogICAgIFZlY3RvcjxJbnRSZWN0PiBy
ZWN0cyA9IG5vbk92ZXJsYXBSZWdpb24ucmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYgcmVjdCA6
IHJlY3RzKSB7Ci0gICAgICAgIGlmICghcmVjdC5pbnRlcnNlY3RzKG9wdGlvbnMudGV4dHVyZU1h
cHBlci0+Y2xpcEJvdW5kcygpKSkKKyAgICAgICAgaWYgKCFyZWN0LmludGVyc2VjdHMob3B0aW9u
cy50ZXh0dXJlTWFwcGVyLmNsaXBCb3VuZHMoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1h
dHJpeCgpLCByZWN0KTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmJlZ2luQ2xpcChU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByZWN0KTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRy
ZW5XaXRoUmVwbGljYShvcHRpb25zKTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5l
bmRDbGlwKCk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5lbmRDbGlwKCk7CiAgICAg
fQogCiAgICAgcmVjdHMgPSBvdmVybGFwUmVnaW9uLnJlY3RzKCk7CkBAIC0zNDMsOCArMzQzLDgg
QEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50VXNpbmdPdmVybGFwUmVnaW9ucyhjb25z
dCBUZXh0dXJlTWFwcGVyUGFpbnRPcHRpb24KICAgICAgICAgcmVjdHMuYXBwZW5kKG92ZXJsYXBS
ZWdpb24uYm91bmRzKCkpOwogICAgIH0KIAotICAgIEludFNpemUgbWF4VGV4dHVyZVNpemUgPSBv
cHRpb25zLnRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCk7Ci0gICAgSW50UmVjdCBhZGp1
c3RlZENsaXBCb3VuZHMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5jbGlwQm91bmRzKCkpOworICAg
IEludFNpemUgbWF4VGV4dHVyZVNpemUgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIubWF4VGV4dHVy
ZVNpemUoKTsKKyAgICBJbnRSZWN0IGFkanVzdGVkQ2xpcEJvdW5kcyhvcHRpb25zLnRleHR1cmVN
YXBwZXIuY2xpcEJvdW5kcygpKTsKICAgICBhZGp1c3RlZENsaXBCb3VuZHMubW92ZSgtb3B0aW9u
cy5vZmZzZXQpOwogICAgIGZvciAoYXV0byYgcmVjdCA6IHJlY3RzKSB7CiAgICAgICAgIGZvciAo
aW50IHggPSByZWN0LngoKTsgeCA8IHJlY3QubWF4WCgpOyB4ICs9IG1heFRleHR1cmVTaXplLndp
ZHRoKCkpIHsKQEAgLTM2MiwzMiArMzYyLDMyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpw
YWludFVzaW5nT3ZlcmxhcFJlZ2lvbnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uCiAK
IHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyYgb3B0aW9ucykKIHsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldE1h
c2tNb2RlKHRydWUpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5zZXRNYXNrTW9kZSh0cnVl
KTsKICAgICBwYWludFNlbGYob3B0aW9ucyk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5z
ZXRNYXNrTW9kZShmYWxzZSk7CisgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2Rl
KGZhbHNlKTsKIH0KIAogUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50SW50b1N1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0
aW9ucywgY29uc3QgSW50U2l6ZSYgc2l6ZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
c3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChz
aXplKTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVy
ZU1hcHBlci5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKHNpemUpOwogICAgIFRleHR1cmVNYXBwZXJQ
YWludE9wdGlvbnMgcGFpbnRPcHRpb25zKG9wdGlvbnMpOwogICAgIHBhaW50T3B0aW9ucy5zdXJm
YWNlID0gc3VyZmFjZTsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1
cmZhY2UuZ2V0KCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJm
YWNlLmdldCgpKTsKICAgICBwYWludFNlbGZBbmRDaGlsZHJlbihwYWludE9wdGlvbnMpOwogICAg
IGlmIChtX3N0YXRlLm1hc2tMYXllcikKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5
TWFzayhvcHRpb25zKTsKICAgICBzdXJmYWNlID0gc3VyZmFjZS0+YXBwbHlGaWx0ZXJzKG9wdGlv
bnMudGV4dHVyZU1hcHBlciwgbV9jdXJyZW50RmlsdGVycyk7Ci0gICAgb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLT5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKKyAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXIuYmluZFN1cmZhY2Uoc3VyZmFjZS5nZXQoKSk7CiAgICAgcmV0dXJuIHN1cmZhY2UucmVs
ZWFzZSgpOwogfQogCiBzdGF0aWMgdm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFj
ZSwgY29uc3QgSW50UmVjdCYgcmVjdCwgZmxvYXQgb3BhY2l0eSkKIHsKLSAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CisgICAgb3B0
aW9ucy50ZXh0dXJlTWFwcGVyLmJpbmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAg
ICAgVHJhbnNmb3JtYXRpb25NYXRyaXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5z
Zm9ybS50cmFuc2xhdGUob3B0aW9ucy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVp
Z2h0KCkpOwogICAgIHRhcmdldFRyYW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7
Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwg
cmVjdCwgdGFyZ2V0VHJhbnNmb3JtLCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXIuZHJhd1RleHR1cmUoKnN1cmZhY2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3Bh
Y2l0eSk7CiB9CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlh
dGVTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0
IEludFJlY3QmIHJlY3QpCkBAIC00MTMsOCArNDEzLDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5
ZXI6OnBhaW50V2l0aEludGVybWVkaWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50
T3AKIAogICAgIG1haW5TdXJmYWNlID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJl
Y3Quc2l6ZSgpKTsKICAgICBpZiAocmVwbGljYVN1cmZhY2UpIHsKLSAgICAgICAgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShyZXBsaWNhU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAg
IG9wdGlvbnMudGV4dHVyZU1hcHBlci0+ZHJhd1RleHR1cmUoKm1haW5TdXJmYWNlLmdldCgpLCBG
bG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCByZWN0LnNpemUoKSkpOworICAgICAgICBvcHRp
b25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAg
ICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKm1haW5TdXJmYWNlLmdldCgp
LCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6emVybygpLCByZWN0LnNpemUoKSkpOwogICAgICAgICBt
YWluU3VyZmFjZSA9IHJlcGxpY2FTdXJmYWNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaAppbmRleCAyNDgyZTBlOTQzZDcxZjFjZDAxMTYzNzVhZGRlN2Yw
NGJlOGE0YTFkLi45ZjNmNDVhMzc5MDU0OGFlMGEzOWJlNzA1ZTU1NmUxMWJjZDRiMTkxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaApAQCAtMzksMTEgKzM5LDExIEBA
IHB1YmxpYzoKIAogICAgIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgOiBtX2NsaWVudCgw
KSB7IH0KICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3Qg
RmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9
IFRyYW5zZm9ybWF0aW9uTWF0cml4KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHN3YXBCdWZmZXJzKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKQorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1
cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVy
V2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSkKICAgICB7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3Jk
ZXIoY29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOworICAgICAgICB0
ZXh0dXJlTWFwcGVyLmRyYXdCb3JkZXIoY29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0
cmFuc2Zvcm0pOwogICAgIH0KICAgICB2b2lkIHNldENsaWVudChUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllcjo6Q2xpZW50KiBjbGllbnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVm
ZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5jcHAKaW5kZXggYjJkNjg4YjU1NDZhMmI5NzUyZTFi
YmJlNjkxOTU1ZDRiMGEwN2RhZC4uNmJjNjg2MmI3MTA3OTBlYTI5MzdmNzkwMjI4YjI5NjM1MzU1
NmFlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFw
L1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZm
ZXIuY3BwCkBAIC00OSwxNyArNDksMTcgQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
ckJ1ZmZlcjo6Y2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICBy
ZXR1cm4gbV90ZXh0dXJlICYmIChtX3RleHR1cmUtPnNpemUoKSA9PSBzaXplKSAmJiAoc3RhdGlj
X2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4obV90ZXh0dXJlLmdldCgpKS0+aW50ZXJuYWxGb3JtYXQo
KSA9PSBpbnRlcm5hbEZvcm1hdCB8fCBpbnRlcm5hbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RE9OVF9DQVJFKTsKIH0KIAotdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
cjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9k
ZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1M
YXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmIChtX2hhc01h
bmFnZWRUZXh0dXJlKSB7CiAgICAgICAgIEFTU0VSVChtX3RleHR1cmUpOwotICAgICAgICB0ZXh0
dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqbV90ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdN
YXRyaXgsIG9wYWNpdHkpOworICAgICAgICB0ZXh0dXJlTWFwcGVyLmRyYXdUZXh0dXJlKCptX3Rl
eHR1cmUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBBU1NFUlQobV90ZXh0dXJlSUQpOwotICAgIFRleHR1cmVNYXBw
ZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFw
cGVyKTsKLSAgICB0ZXhtYXBHTC0+ZHJhd1RleHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFn
cywgbV9zaXplLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgIFRl
eHR1cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0
ZXh0dXJlTWFwcGVyKTsKKyAgICB0ZXhtYXBHTC5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9l
eHRyYUZsYWdzLCBtX3NpemUsIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7
CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZl
ci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKaW5kZXggNjU3ZDI4MzkyZDA5M2YxOTYzZDg3N2Q3ZjQ2
MjYwMzI2N2VjMWU1OC4uODRjZTVlY2M1ODEzNjg1N2I1NzE4ZmY1MjJiNmUwZmRhMTBmZmIwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAg
LTQyLDcgKzQyLDcgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJCdWZmZXIoKSA9IGRlZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBmbG9hdCBvcGFjaXR5ID0gMS4wKSBmaW5hbDsKIAogICAgIGJvb2wgY2FuUmV1c2VXaXRob3V0
UmVzZXQoY29uc3QgSW50U2l6ZSYsIEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpOwogICAgIEJpdG1h
cFRleHR1cmVHTCYgdGV4dHVyZUdMKCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVy
ZUdMJj4oKm1fdGV4dHVyZSk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmUuY3BwCmluZGV4IGU5N2ZjZDg5YzJjODFiZmYxNzhlYTliNWM0ZmUzZTg2
NjA0YzQxNTUuLjEyZThmNDg1NGU0OWRkMDBkYWQ3NjkxYzFmODJkZWMzYTRhZWIyODkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcApAQCAt
NDQsNyArNDQsNyBAQCBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnRleHR1cmUoKSBjb25zdAogICAgIHJldHVybiBlbXB0eVRleHR1cmU7CiB9
CiAKLXZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFy
Z2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3Bh
Y2l0eSkKK3ZvaWQgVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYg
dGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQg
b3BhY2l0eSkKIHsKICAgICBpZiAobV9ncmFwaGljc1N1cmZhY2UpCiAgICAgICAgIG1fZ3JhcGhp
Y3NTdXJmYWNlLT5wYWludFRvVGV4dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0
LCB0cmFuc2Zvcm0sIG9wYWNpdHkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZh
Y2VCYWNraW5nU3RvcmUuaAppbmRleCAyMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0OWU2ZDAyZDZj
YTcwNDU0Li45OTMxZGI3ZDI5YTBjM2NiY2MzZDcxNjU5NTE0ZDU1ZDhjMzk1M2VhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaApAQCAtMzcsNyAr
MzcsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxH
cmFwaGljc1N1cmZhY2U+KTsKICAgICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3Qg
ZnJvbnRCdWZmZXIpOwogICAgIHZpcnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUo
KSBjb25zdDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQpOworICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVy
JiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7
CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKSB7IH0KIAog
cHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwCmluZGV4IDFiYjBhNGYyNGFmZmY4NDRl
ODZkNDdkMWRjNWViZDljZDI1MDUxMDEuLjM2OTcxOTZhOWMzYjY3Y2U1ZTRhYmQxN2MwNzRmMjg5
MTBhY2EyYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyVGlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmNwcApAQCAtMjksNyArMjksNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKLXZvaWQgVGV4dHVy
ZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIs
IEltYWdlKiBpbWFnZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpV
cGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVy
VGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2Uq
IGltYWdlLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0
ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRp
cnR5UmVjdCk7CkBAIC00MywxNCArNDMsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWcKICAg
ICAvLyBOb3JtYWxpemUgdGFyZ2V0UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3JkaW5hdGVzLgog
ICAgIHRhcmdldFJlY3QubW92ZSgtbV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwogICAgIGlmICgh
bV90ZXh0dXJlKSB7Ci0gICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRl
eHR1cmUoKTsKKyAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci5jcmVhdGVUZXh0dXJl
KCk7CiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIGltYWdlLT5j
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0
c0FscGhhKTsKICAgICB9CiAKICAgICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0
YXJnZXRSZWN0LCBzb3VyY2VPZmZzZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CiB9CiAKLXZvaWQg
VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcs
IGZsb2F0IHNjYWxlKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IHVwZGF0ZUNvbnRlbnRzRmxhZywgZmxvYXQgc2NhbGUpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRS
ZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0
KGRpcnR5UmVjdCk7CkBAIC02MiwxNyArNjIsMTcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkK
ICAgICB0YXJnZXRSZWN0Lm1vdmUoLW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKIAogICAgIGlm
ICghbV90ZXh0dXJlKSB7Ci0gICAgICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0
ZVRleHR1cmUoKTsKKyAgICAgICAgbV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci5jcmVhdGVUZXh0
dXJlKCk7CiAgICAgICAgIG1fdGV4dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1h
cFRleHR1cmU6OlN1cHBvcnRzQWxwaGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRl
Q29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9m
ZnNldCwgdXBkYXRlQ29udGVudHNGbGFnLCBzY2FsZSk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBl
clRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IHVuc2lnbmVkIGV4
cG9zZWRFZGdlcykKK3ZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXIm
IHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZs
b2F0IG9wYWNpdHksIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAodGV4
dHVyZSgpLmdldCgpKQotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVy
ZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKKyAg
ICAgICAgdGV4dHVyZU1hcHBlci5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCks
IHRyYW5zZm9ybSwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAppbmRleCA3OWQ3M2VlYjJlZTNiYzlmOThmYjJm
MjU4OTcyYWEwZTZmYWNkYzdiLi42ZTc2MjEwYTFmZTBjNmVmN2Q0MTE5OTE4YjZlYjVmZjljN2Q1
MGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAg
ICAgaW5saW5lIHZvaWQgc2V0VGV4dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4
dHVyZSA9IHRleHR1cmU7IH0KICAgICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVj
dCYgcmVjdCkgeyBtX3JlY3QgPSByZWN0OyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXIqLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlm
eU9yaWdpbmFsSW1hZ2VEYXRhLCBmbG9hdCBzY2FsZSA9IDEpOwotICAgIHZpcnR1YWwgdm9pZCBw
YWludChUZXh0dXJlTWFwcGVyKiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwg
Y29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRl
eHR1cmVNYXBwZXImLCBJbWFnZSosIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRh
dGVDb250ZW50c0ZsYWcgVXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHZv
aWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJ
bnRSZWN0JiwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlm
eU9yaWdpbmFsSW1hZ2VEYXRhLCBmbG9hdCBzY2FsZSA9IDEpOworICAgIHZpcnR1YWwgdm9pZCBw
YWludChUZXh0dXJlTWFwcGVyJiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwg
Y29uc3QgdW5zaWduZWQgZXhwb3NlZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVy
VGlsZSgpIHsgfQogCiAgICAgZXhwbGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxvYXRS
ZWN0JiByZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
LmNwcAppbmRleCAzNGUxZWU1OGJiNGFlNThhYzcwYjI4NGI1N2Q1MGJmZjg2ZjQ2ZWNkLi45OTBj
YTc2NDkyZGNkNzMzZjRlNjQ0YjhiZWZmM2FmNzI5NTIzYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKLXZvaWQgVGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlOjp1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlQ29udGVudHNGcm9tSW1hZ2VJZk5lZWRlZChUZXh0dXJlTWFwcGVyJiB0
ZXh0dXJlTWFwcGVyKQogewogICAgIGlmICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDcsNyArNDcsNyBAQCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNr
aW5nU3RvcmU6OmFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjbwogICAgIHJldHVybiBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDo6cmVjdFRvUmVjdChyZWN0KCksIHRhcmdldFJlY3QpOwogfQogCi12b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBj
b25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQordm9p
ZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsK
ICAgICB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwogICAg
IFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRq
dXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwpAQCAtNTUsMTggKzU1LDE4IEBAIHZv
aWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyKiB0ZXh0dXJlCiAgICAgICAgIHRpbGUucGFpbnQodGV4dHVyZU1hcHBlciwg
YWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHksIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVj
dCgpLCB0aWxlLnJlY3QoKSkpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xv
ciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyJiB0ZXh0
dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBj
b25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0
cmFuc2Zvcm0pCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0g
PSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAg
Zm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0Jv
cmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHRpbGUucmVjdCgpLCBhZGp1c3RlZFRyYW5z
Zm9ybSk7CisgICAgICAgIHRleHR1cmVNYXBwZXIuZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9y
ZGVyV2lkdGgsIHRpbGUucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgVGV4
dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRl
ckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6
ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGludCByZXBh
aW50Q291bnQsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0JiB0YXJn
ZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIFRy
YW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0
ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYgdGlsZSA6IG1f
dGlsZXMpCi0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdOdW1iZXIocmVwYWludENvdW50LCBi
b3JkZXJDb2xvciwgdGlsZS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwor
ICAgICAgICB0ZXh0dXJlTWFwcGVyLmRyYXdOdW1iZXIocmVwYWludENvdW50LCBib3JkZXJDb2xv
ciwgdGlsZS5yZWN0KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lk
IFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHNTY2FsZShmbG9h
dCBzY2FsZSkKQEAgLTE1MCwxNiArMTUwLDE2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlOjpjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6CiAg
ICAgfQogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29u
dGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBG
bG9hdFNpemUmIHRvdGFsU2l6ZSwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJl
TWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRl
eHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNv
bnN0IEludFJlY3QmIGRpcnR5UmVjdCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFn
IHVwZGF0ZUNvbnRlbnRzRmxhZykKIHsKLSAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVk
KHRvdGFsU2l6ZSwgdGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5jdXJy
ZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5l
ZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBwZXIubWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5j
dXJyZW50RnJhbWVLbm93blRvQmVPcGFxdWUoKSk7CiAgICAgZm9yIChhdXRvJiB0aWxlIDogbV90
aWxlcykKICAgICAgICAgdGlsZS51cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwg
ZGlydHlSZWN0LCB1cGRhdGVDb250ZW50c0ZsYWcpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxT
aXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRl
bnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tp
bmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3Jh
cGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1
cGRhdGVDb250ZW50c0ZsYWcpCiB7Ci0gICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0
b3RhbFNpemUsIHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOworICAgIGNy
ZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQodG90YWxTaXplLCB0ZXh0dXJlTWFwcGVyLm1heFRl
eHR1cmVTaXplKCksIHRydWUpOwogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMpCiAgICAg
ICAgIHRpbGUudXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5
UmVjdCwgdXBkYXRlQ29udGVudHNGbGFnLCBtX2NvbnRlbnRzU2NhbGUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4
bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oCmluZGV4IDRiZTIxNDk1MDFmOWFj
YWMzY2E2OTM1M2MwZjNhZjZmZDRjZDVjYzguLmI0NWI1MDhlNGJhOTI1ZjcyOTUwZDM2N2I4ZTVl
YjgwM2I5NzRlNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0
b3JlLmgKQEAgLTM4LDEzICszOCwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1h
cHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBU
ZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50
VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0
aCwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBp
bnQgcmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9U
ZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d0JvcmRlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwg
Y29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXImLCBpbnQg
cmVwYWludENvdW50LCBjb25zdCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2Nh
bGUoZmxvYXQpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdl
KiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0
ZUNvbnRlbnRzRmxhZyk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwg
R3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBU
ZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciYsIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJp
dG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50
cyhUZXh0dXJlTWFwcGVyJiwgR3JhcGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0
IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9p
ZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQog
CkBAIC01Miw3ICs1Miw3IEBAIHByaXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlKCkgeyB9CiAKICAgICB2b2lkIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29u
c3QgRmxvYXRTaXplJiBiYWNraW5nU3RvcmVTaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwg
Ym9vbCBoYXNBbHBoYSk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVk
KFRleHR1cmVNYXBwZXIqKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVk
ZWQoVGV4dHVyZU1hcHBlciYpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJh
bnNmb3JtRm9yUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBpbmxpbmUgRmxvYXRSZWN0IHJl
Y3QoKSBjb25zdAogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRl
eCAyZjA4OGE1ZTlhYzRmNzA4NjgxMzQ4YjIxMTRkYWJhOGU5ZDk3YmE2Li45YTI2ZDkyYTRiYTdj
OWIwZGMwY2QzODY2ZWE1ODNiMTA0Y2QwMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIv
U291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHQuY3BwCkBAIC0xODcsNyArMTg3LDcgQEAgdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5n
Q29udGV4dDo6Y29tcG9zaXRlTGF5ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgcHUKIAog
ICAgIG1fdGV4dHVyZU1hcHBlci0+YmVnaW5QYWludGluZygpOwogICAgIGRvd25jYXN0PEdyYXBo
aWNzTGF5ZXJUZXh0dXJlTWFwcGVyPigqbV9yb290TGF5ZXIpLmxheWVyKCkucGFpbnQoKTsKLSAg
ICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheShtX3RleHR1cmVNYXBwZXIuZ2V0KCkp
OworICAgIG1fZnBzQ291bnRlci51cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIp
OwogICAgIG1fdGV4dHVyZU1hcHBlci0+ZW5kUGFpbnRpbmcoKTsKIAogICAgIG1fY29udGV4dC0+
c3dhcEJ1ZmZlcnMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGlu
YXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcApp
bmRleCA1MWRiMDhjZTM2MGJmOGFjZmI2MGEzZWJjODAwOGUwZjJhOTQwMGZkLi40NWRmMWE3NWQy
ZGNjMGE2ZmI0MjI0ZjVmNzlkNmI3MDBhOTAyZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRCYWNraW5nU3RvcmUuY3BwCkBAIC0zMCw3ICszMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZVRpbGU6OnN3YXBCdWZmZXJzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit2b2lkIENv
b3JkaW5hdGVkQmFja2luZ1N0b3JlVGlsZTo6c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYgdGV4
dHVyZU1hcHBlcikKIHsKICAgICBpZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuOwpAQCAt
NDQsMTMgKzQ0LDEzIEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVm
ZmVycyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyKQogICAgIH0KICAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gdGV4dHVyZSA9IHRoaXMtPnRleHR1cmUoKTsKICAgICBpZiAoIXRleHR1cmUp
IHsKLSAgICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAg
ICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXIuY3JlYXRlVGV4dHVyZSgpOwogICAgICAgICBz
ZXRUZXh0dXJlKHRleHR1cmUuZ2V0KCkpOwogICAgICAgICBzaG91bGRSZXNldCA9IHRydWU7CiAg
ICAgfQogCi0gICAgQVNTRVJUKHRleHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCkud2lkdGgo
KSA+PSBtX3RpbGVSZWN0LnNpemUoKS53aWR0aCgpKTsKLSAgICBBU1NFUlQodGV4dHVyZU1hcHBl
ci0+bWF4VGV4dHVyZVNpemUoKS5oZWlnaHQoKSA+PSBtX3RpbGVSZWN0LnNpemUoKS5oZWlnaHQo
KSk7CisgICAgQVNTRVJUKHRleHR1cmVNYXBwZXIubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpID49
IG1fdGlsZVJlY3Quc2l6ZSgpLndpZHRoKCkpOworICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyLm1h
eFRleHR1cmVTaXplKCkuaGVpZ2h0KCkgPj0gbV90aWxlUmVjdC5zaXplKCkuaGVpZ2h0KCkpOwog
ICAgIGlmIChzaG91bGRSZXNldCkKICAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVjdC5z
aXplKCksIG1fc3VyZmFjZS0+c3VwcG9ydHNBbHBoYSgpKTsKIApAQCAtMTA3LDcgKzEwNyw3IEBA
IHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBz
aXplKQogICAgIG1fcGVuZGluZ1NpemUgPSBzaXplOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjpwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVy
VGlsZSo+JiB0aWxlcywgVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0
JiByZWN0KQordm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVy
ZU1hcHBlcihWZWN0b3I8VGV4dHVyZU1hcHBlclRpbGUqPiYgdGlsZXMsIFRleHR1cmVNYXBwZXIm
IHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZs
b2F0IG9wYWNpdHksIGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIHRp
bGUgOiB0aWxlcykKICAgICAgICAgdGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3Jt
LCBvcGFjaXR5LCBjYWxjdWxhdGVFeHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkp
OwpAQCAtMTE4LDcgKzExOCw3IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjphZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgRmxvCiAgICAgcmV0dXJu
IFRyYW5zZm9ybWF0aW9uTWF0cml4OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9
CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3Zv
aWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBp
ZiAobV90aWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NSwyMSArMTU1LDIx
IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsCiAgICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cih0aWxlc1RvUGFpbnQsIHRleHR1cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5
LCByZWN0KCkpOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwg
ZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmU6OmRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3Im
IGJvcmRlckNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRU
cmFuc2Zvcm1Gb3JSZWN0KHRhcmdldFJlY3QpOwogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGls
ZXMudmFsdWVzKCkpCi0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29s
b3IsIGJvcmRlcldpZHRoLCB0aWxlLnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgICAg
ICB0ZXh0dXJlTWFwcGVyLmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0aWxl
LnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
aW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2
b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1h
cHBlciYgdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRl
ckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRU
cmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVj
dCk7CiAgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcy52YWx1ZXMoKSkKLSAgICAgICAgdGV4
dHVyZU1hcHBlci0+ZHJhd051bWJlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJl
Y3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIHRleHR1cmVNYXBw
ZXIuZHJhd051bWJlcihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJlY3QoKS5sb2Nh
dGlvbigpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OmNvbW1pdFRpbGVPcGVyYXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIp
Cit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0
dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyKQogewogICAgIGlmICghbV9wZW5kaW5nU2l6ZS5pc1pl
cm8oKSkgewogICAgICAgICBtX3NpemUgPSBtX3BlbmRpbmdTaXplOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUuaCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3Jk
aW5hdGVkQmFja2luZ1N0b3JlLmgKaW5kZXggYmI2MzY1MTk0MGJmYWE5YzgxMTUwMzFiM2UzOTcz
YjI0YWE3YjJlZC4uOTgwMjYyNjJhZTY0ZjA3OTQ3OTlkMjljNGU5ZDFiZjlhODNiNmZjOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRp
bmF0ZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0
ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1
YmxpYzoKICAgICB9CiAKICAgICBpbmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBt
X3NjYWxlOyB9Ci0gICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7
CisgICAgdm9pZCBzd2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7CiAgICAgdm9p
ZCBzZXRCYWNrQnVmZmVyKGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJ
bnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwg
Y29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKIAogcHJpdmF0ZToKQEAgLTYyLDE4ICs2MiwxOCBA
QCBwdWJsaWM6CiAgICAgdm9pZCByZW1vdmVBbGxUaWxlcygpOwogICAgIHZvaWQgdXBkYXRlVGls
ZSh1aW50MzJfdCB0aWxlSUQsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25z
dCBXZWJDb3JlOjpJbnRQb2ludCYpOwogICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU+IGNyZWF0ZSgpIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmUpOyB9Ci0gICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyKik7CisgICAgdm9pZCBjb21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyJik7CiAgICAgUmVmUHRyPFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBj
b25zdCBvdmVycmlkZTsKICAgICB2b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXpl
Jik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1
cmVNYXBwZXIqLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d0JvcmRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBm
bG9hdCBib3JkZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29y
ZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlcGFpbnRDb3VudGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50
LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0
IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXImLCBjb25zdCBX
ZWJDb3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpU
ZXh0dXJlTWFwcGVyJiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwg
Y29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25N
YXRyaXgmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdl
YkNvcmU6OlRleHR1cmVNYXBwZXImLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpD
b2xvciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9y
bWF0aW9uTWF0cml4Jikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmUoKQogICAgICAgICA6IG1fc2NhbGUoMS4pCiAgICAgeyB9Ci0gICAgdm9pZCBwYWlu
dFRpbGVzVG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSo+
JiwgV2ViQ29yZTo6VGV4dHVyZU1hcHBlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFp
bnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGUq
PiYsIFdlYkNvcmU6OlRleHR1cmVNYXBwZXImLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYsIGZsb2F0LCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICBXZWJDb3Jl
OjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgV2Vi
Q29yZTo6RmxvYXRSZWN0Jik7CiAgICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7
IHJldHVybiBXZWJDb3JlOjpGbG9hdFJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpLCBt
X3NpemUpOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRl
ZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmlu
ZGV4IGIwZWYxOTUzM2I4MjZjMDUyN2U0ZTY5NWQyZTg5NjE3ZWUyNWNkZGYuLjk5NzlmYTM2NmNm
MjlkMTkyYTdmODhmZWYzZWE0MmY1N2E2YTZjMjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRH
cmFwaGljc1NjZW5lOjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpCiAgICAgfQogCiAgICAgY3VycmVudFJvb3RMYXllci0+cGFpbnQoKTsKLSAgICBtX2Zw
c0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheShtX3RleHR1cmVNYXBwZXIuZ2V0KCksIGNsaXBS
ZWN0LmxvY2F0aW9uKCksIG1hdHJpeCk7CisgICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERp
c3BsYXkoKm1fdGV4dHVyZU1hcHBlciwgY2xpcFJlY3QubG9jYXRpb24oKSwgbWF0cml4KTsKICAg
ICBtX3RleHR1cmVNYXBwZXItPmVuZENsaXAoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBh
aW50aW5nKCk7CiAKQEAgLTE0Myw3ICsxNDMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NT
Y2VuZTo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcAog
ICAgICAgICBtX3RleHR1cmVNYXBwZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCgpLCBtX3ZpZXdCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgbGF5ZXItPnBh
aW50KCk7Ci0gICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkobV90ZXh0dXJlTWFw
cGVyLmdldCgpLCBjbGlwUmVjdC5sb2NhdGlvbigpKTsKKyAgICBtX2Zwc0NvdW50ZXIudXBkYXRl
RlBTQW5kRGlzcGxheSgqbV90ZXh0dXJlTWFwcGVyLCBjbGlwUmVjdC5sb2NhdGlvbigpKTsKICAg
ICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5z
ZXRHcmFwaGljc0NvbnRleHQoMCk7CiB9CkBAIC01ODUsNyArNTg1LDcgQEAgdm9pZCBDb29yZGlu
YXRlZEdyYXBoaWNzU2NlbmU6OnJlbW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCkK
IHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3Jl
T3BlcmF0aW9ucygpCiB7CiAgICAgZm9yIChhdXRvJiBiYWNraW5nU3RvcmUgOiBtX2JhY2tpbmdT
dG9yZXNXaXRoUGVuZGluZ0J1ZmZlcnMpCi0gICAgICAgIGJhY2tpbmdTdG9yZS0+Y29tbWl0VGls
ZU9wZXJhdGlvbnMobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKKyAgICAgICAgYmFja2luZ1N0b3Jl
LT5jb21taXRUaWxlT3BlcmF0aW9ucygqbV90ZXh0dXJlTWFwcGVyKTsKIAogICAgIG1fYmFja2lu
Z1N0b3Jlc1dpdGhQZW5kaW5nQnVmZmVycy5jbGVhcigpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267353</attachid>
            <date>2015-12-15 01:50:09 -0800</date>
            <delta_ts>2015-12-15 01:50:09 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-152118-20151215014931.patch</filename>
            <type>text/plain</type>
            <size>66821</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MDk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWMyMDdjNDEzOGY0ZTA1
NDg1YTdiNWFlMWJhMGFlN2ZkNDIwMDcxZC4uNTg4OGJhMGNjNTdhZmU4ZTczOTMzOGE4MmZlZWE4
MjNkOTJhNDlhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc2IEBACisyMDE1LTEyLTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4TWFwXSBPcGVy
YXRlIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlIFRleHR1cmVNYXBwZXIgd2hlcmV2ZXIgcG9zc2li
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICBJbiBt
b3N0IGNhc2VzIHdoZXJlIHVzZWQsIHRoZSBwb2ludGVyIHRvIHRoZSBUZXh0dXJlTWFwcGVyIGlz
IG5vbi1udWxsLCBzbyBpdAorICAgICAgICBzaG91bGQgcmVhbGx5IGJlIGEgcmVmZXJlbmNlLiBU
aGUgcG9pbnRlciBpcyBzdGlsbCB1c2VkIGZvciB0aGUKKyAgICAgICAgVGV4dHVyZU1hcHBlckxh
eWVyIG1lbWJlciB2YXJpYWJsZSB3aGljaCBpcyBudWxsIHVudGlsIHRoZSBUZXh0dXJlTWFwcGVy
IG9iamVjdAorICAgICAgICBpcyBjcmVhdGVkIGFuZCBzZXQgb24gdGhlIHJvb3QgbGF5ZXIuCisK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4
dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZm
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9U
ZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1
ZmZlckRhdGFDYWlyby5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGlj
c0NvbnRleHQzRFByaXZhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0
M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50
VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIv
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpH
cmFwaGljc1N1cmZhY2U6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9y
bS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlQ29tbW9uLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1hcHBl
cik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVudHMpOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmg6CisgICAgICAg
IChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlOjphcHBseUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Qml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVl
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckJh
Y2tpbmdTdG9yZS5oOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9y
ZTo6ZHJhd1JlcGFpbnRDb3VudGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlckZQU0NvdW50ZXI6OnVwZGF0ZUZQU0FuZERpc3BsYXkpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBhaW50T3B0aW9uczo6VGV4dHVyZU1hcHBlclBhaW50
T3B0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRTZWxmQW5kQ2hpbGRyZW4pOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFVzaW5nT3ZlcmxhcFJl
Z2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjphcHBseU1hc2sp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckxheWVyOjpwYWludEludG9TdXJmYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1pdFN1cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIu
aDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyOjpkcmF3Qm9y
ZGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJCdWZmZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclN1cmZhY2VC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJUaWxlOjpwYWludCk6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlLmg6CisgICAgICAgICogcGxhdGZv
cm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OnVwZGF0ZUNv
bnRlbnRzRnJvbUltYWdlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clRpbGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJD
b3JlOjpUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENv
dW50ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
Ojp1cGRhdGVDb250ZW50cyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oOgorCiAyMDE1LTEyLTE0ICBBbmRyZWFzIEts
aW5nICA8YWtsaW5nQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXNvdXJjZVVzYWdlT3ZlcmxheSBz
aG91bGQgc2hvdyBHQyB0aW1lcnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggOGIzNjM5MzJkZDEyZTkw
YTBhMTFjODZkNjAwZjBmZGQ3NDZmOWFmNy4uZDI5NmYxNTRjNjVjNjQ0MmRlMWYzZjdjODBhODc2
NzM5NjVmZjYyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDE1LTEyLTE1
ICBaYW4gRG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4TWFw
XSBPcGVyYXRlIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlIFRleHR1cmVNYXBwZXIgd2hlcmV2ZXIg
cG9zc2libGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE1MjExOAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAg
ICAqIFdlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcDoKKyAg
ICAgICAgKEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0Ojpjb21wb3NpdGVMYXllcnNUb0Nv
bnRleHQpOiBUZXh0dXJlTWFwcGVyIG9iamVjdAorICAgICAgICBpcyBub3cgb3BlcmF0ZWQgd2l0
aCB0aHJvdWdoIGEgcmVmZXJlbmNlLgorCiAyMDE1LTEyLTAxICBEYXJpbiBBZGxlciAgPGRhcmlu
QGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggYW5vbWFseSB3aGVyZSBpc01vdXNlRXZlbnQgcmV0
dXJucyBmYWxzZSBmb3Igd2hlZWwgZXZlbnRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggY2VhMmZhMDZkNDY2MTI0
NTg3MWM0YzRjY2M1MzY2NzllMjFhMzZhYi4uZDYyM2JiOTVmMGQ3YjhkZTJjMDc4NGY5MmMwYTU1
NTAyMThiMDg4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDE1LTEyLTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBbVGV4TWFwXSBPcGVy
YXRlIHdpdGggYSByZWZlcmVuY2UgdG8gdGhlIFRleHR1cmVNYXBwZXIgd2hlcmV2ZXIgcG9zc2li
bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MjEx
OAorCisgICAgICAgIFJldmlld2VkIGJ5IE1hcnRpbiBSb2JpbnNvbi4KKworICAgICAgICBSZXBs
YWNlIHBvaW50ZXJzIHRvIHRoZSBUZXh0dXJlTWFwcGVyIG9iamVjdCB3aXRoIHJlZmVyZW5jZXMu
CisKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEJhY2tp
bmdTdG9yZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlVGls
ZTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEJhY2tpbmdTdG9y
ZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6OkNvb3JkaW5h
dGVkQmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6CisgICAgICAgIChXZWJLaXQ6
OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKToKKyAgICAgICAgKFdlYktpdDo6
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdSZXBhaW50Q291bnRlcik6CisgICAgICAgIChX
ZWJLaXQ6OkNvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyk6Cisg
ICAgICAgICogU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3Rv
cmUuaDoKKyAgICAgICAgKiBTaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRlZEdy
YXBoaWNzU2NlbmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpDb29yZGluYXRlZEdyYXBoaWNzU2Nl
bmU6OnBhaW50VG9DdXJyZW50R0xDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6Q29vcmRpbmF0
ZWRHcmFwaGljc1NjZW5lOjpwYWludFRvR3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYktp
dDo6Q29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3Bl
cmF0aW9ucyk6CisKIDIwMTUtMTItMTQgIFlvbmdHZW9sIEp1bmcgIDx5ZzQ4Lmp1bmdAc2Ftc3Vu
Zy5jb20+CiAKICAgICAgICAgW0Nvb3JkaW5hdGVkIEdyYXBoaWNzXSBDU1MgdHJhbnNpdGlvbiBl
ZmZlY3QgaXMgbm90IHNob3duIHdoZW4gdHJhbnNmb3JtZWQgd2l0aCAiJSIgdW5pdC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9HcmFwaGljc0Nv
bnRleHQzRFByaXZhdGUuY3BwCmluZGV4IDU1YjMzNWZlZmU0ZTM4YzFkZTE3YjQ3Y2UyNmYzNmYy
YTQxY2U5MmEuLmIxMzRmNWE3NDFkNGZkMzA1YzY4MzU3YmQ5MDg4N2QxN2M4YjczMDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29udGV4dDNE
UHJpdmF0ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhp
Y3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAtMTEyLDcgKzExMiw3IEBAIHZvaWQgR3JhcGhpY3ND
b250ZXh0M0RQcml2YXRlOjpzd2FwQnVmZmVyc0lmTmVlZGVkKCkKICAgICBtX2NvbnRleHQtPm1h
cmtMYXllckNvbXBvc2l0ZWQoKTsKIH0KICNlbGlmIFVTRShURVhUVVJFX01BUFBFUikgJiYgIVVT
RShDT09SRElOQVRFRF9HUkFQSElDU19USFJFQURFRCkKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0RQ
cml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVy
LCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCit2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6
cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3Qg
RmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbWF0cml4
LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmICghbV9nbENvbnRleHQpCiAgICAgICAgIHJldHVy
bjsKQEAgLTEzNCwxMCArMTM0LDEwIEBAIHZvaWQgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyCiAgICAgICAg
ICAgICBwcmV2aW91c0FjdGl2ZUNvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogICAgIH0K
IAotICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFw
cGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKKyAgICBUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMID0g
c3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcik7CiAgICAgVGV4dHVy
ZU1hcHBlckdMOjpGbGFncyBmbGFncyA9IFRleHR1cmVNYXBwZXJHTDo6U2hvdWxkRmxpcFRleHR1
cmUgfCAobV9jb250ZXh0LT5tX2F0dHJzLmFscGhhID8gVGV4dHVyZU1hcHBlckdMOjpTaG91bGRC
bGVuZCA6IDApOwogICAgIEludFNpemUgdGV4dHVyZVNpemUobV9jb250ZXh0LT5tX2N1cnJlbnRX
aWR0aCwgbV9jb250ZXh0LT5tX2N1cnJlbnRIZWlnaHQpOwotICAgIHRleG1hcEdMLT5kcmF3VGV4
dHVyZShtX2NvbnRleHQtPm1fdGV4dHVyZSwgZmxhZ3MsIHRleHR1cmVTaXplLCB0YXJnZXRSZWN0
LCBtYXRyaXgsIG9wYWNpdHkpOworICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlKG1fY29udGV4dC0+
bV90ZXh0dXJlLCBmbGFncywgdGV4dHVyZVNpemUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0
eSk7CiAjZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogfQogI2VuZGlmIC8vIFVTRShU
RVhUVVJFX01BUFBFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXggODU2NGQ4M2FmOTFjZTEy
MGZhMjg2YzEwNTViMzg1ZTk2ODEzMjg5MC4uODkxOGQzODFlNmVmNzk3NzhiYzQ0OGFiZGI3ZTZk
YmY1YzBjZWZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKQEAgLTUxLDcgKzUxLDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgUmVmUHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHk+
IHByb3h5KCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJzSWZO
ZWVkZWQoKSBvdmVycmlkZTsKICNlbGlmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0IG9wYWNpdHkpOwor
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQg
b3BhY2l0eSk7CiAjZW5kaWYKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyQ2Fpcm8uY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKaW5kZXgg
MjM3MmJkNzhjODdiMzZlYzYzMmQzOTU1YzAxMDVmYTc4ODY4ODIzYy4uNmZiMDgwNmZjYjQwYzk5
NDQ4MDA4NjI2YWJiYmRkZGYyYmI5YmNjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJDYWlyby5jcHAKQEAgLTQ2
OCw3ICs0NjgsNyBAQCBTdHJpbmcgSW1hZ2VCdWZmZXI6OnRvRGF0YVVSTChjb25zdCBTdHJpbmcm
IG1pbWVUeXBlLCBjb25zdCBkb3VibGUqLCBDb29yZGluYXRlUwogI2VuZGlmCiAKICNpZiBFTkFC
TEUoQUNDRUxFUkFURURfMkRfQ0FOVkFTKSAmJiAhVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RI
UkVBREVEKQotdm9pZCBJbWFnZUJ1ZmZlckRhdGE6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgSW1h
Z2VCdWZmZXJEYXRhOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJl
TWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiBtYXRyaXgsIGZsb2F0IG9wYWNpdHkpCiB7CiAgICAgQVNTRVJUKG1fdGV4dHVyZSk7
CiAKQEAgLTQ3Nyw3ICs0NzcsNyBAQCB2b2lkIEltYWdlQnVmZmVyRGF0YTo6cGFpbnRUb1RleHR1
cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRgogICAgIGNhaXJv
X3N1cmZhY2VfZmx1c2gobV9zdXJmYWNlLmdldCgpKTsKICAgICBwcmV2aW91c0FjdGl2ZUNvbnRl
eHQtPm1ha2VDb250ZXh0Q3VycmVudCgpOwogCi0gICAgc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMKj4odGV4dHVyZU1hcHBlciktPmRyYXdUZXh0dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBl
ckdMOjpTaG91bGRCbGVuZCwgbV9zaXplLCB0YXJnZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwor
ICAgIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCY+KHRleHR1cmVNYXBwZXIpLmRyYXdUZXh0
dXJlKG1fdGV4dHVyZSwgVGV4dHVyZU1hcHBlckdMOjpTaG91bGRCbGVuZCwgbV9zaXplLCB0YXJn
ZXRSZWN0LCBtYXRyaXgsIG9wYWNpdHkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9JbWFnZUJ1ZmZlckRhdGFD
YWlyby5oCmluZGV4IDFlNTg2ODU2ZTEyYzMyNjljZmU3ZDk4ODIwMGMyMmZlMDJjNjU5NDYuLjgz
MmU0MGQ0OGY2ZjFmYWEwM2Y1YThiMTdkYzM1NWQ4NDkxYmRiOWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL0ltYWdlQnVmZmVyRGF0YUNhaXJvLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vSW1hZ2VCdWZmZXJE
YXRhQ2Fpcm8uaApAQCAtNzQsNyArNzQsNyBAQCBwdWJsaWM6CiAgICAgdWludDMyX3QgbV9jb21w
b3NpdG9yVGV4dHVyZTsKICAgICBSZWZQdHI8Y2Fpcm9fdD4gbV9jb21wb3NpdG9yQ3I7CiAjZWxz
ZQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgb3BhY2l0eSk7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBmbG9hdCBvcGFjaXR5KTsKICNlbmRpZgogICAgIHVpbnQzMl90IG1fdGV4dHVyZTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZWZs
L0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAppbmRleCAxNjYyN2Y0ZWQ4
YTNkMjJkNjMzOTMyMTQxM2YxOWFjYmU5MTlmMWY3Li43MmVjMzJjNjZiMTZlOWUzYTAzODNjODQ0
ODc4MGFkNzY5YWM1MTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmNwcApAQCAt
MTU5LDcgKzE1OSw3IEBAIGJvb2wgR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwcmVwYXJlQnVm
ZmVyKCkgY29uc3QKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRleHQz
RFByaXZhdGU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9h
dFJlY3QmIC8qIHRhcmdldCAqLywgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCAv
KiBvcGFjaXR5ICovKQordm9pZCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OnBhaW50VG9UZXh0
dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIC8qIHRhcmdldCAqLywg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCAvKiBvcGFjaXR5ICovKQogewogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9lZmwvR3JhcGhpY3NDb250ZXh0M0RQcml2YXRlLmgKaW5kZXgg
YzhjOTM0YTUwYWQwNDE4YzA3NTFjODE2MDMxODNkNjEzYTA1YTc0MC4uNTc4OWJmOTJiNDFjYjFh
MjUzN2MwZTZkNjA2NjJlODJmYjMxYWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZWZsL0dyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VmbC9HcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aApAQCAtMzYsNyArMzYsNyBAQCBwdWJsaWM6CiAKICAgICBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4
dDNEIHBsYXRmb3JtR3JhcGhpY3NDb250ZXh0M0QoKSBjb25zdDsKICAgICB2b2lkIHNldENvbnRl
eHRMb3N0Q2FsbGJhY2soc3RkOjp1bmlxdWVfcHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250ZXh0
TG9zdENhbGxiYWNrPik7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYsIGZsb2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9u
TWF0cml4JiwgZmxvYXQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgSW50U2l6ZSBwbGF0Zm9ybUxh
eWVyU2l6ZSgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdWludDMyX3QgY29weVRvR3Jh
cGhpY3NTdXJmYWNlKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCBHcmFwaGljc1N1cmZhY2VUb2tl
biBncmFwaGljc1N1cmZhY2VUb2tlbigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lckJhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0
cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuY3BwCmluZGV4IGFiMmZkY2Mx
MjkxYTllZmZkNmEyZmNiNTJiZDNjZGEyOGY0MDNlMmUuLmY1YTQxZmVkMzA1NTk2Yzc4ZTkxNjRh
OGU2MTgxMjY1MzhmMDUzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyQmFzZS5jcHAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lkIE1lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgRmxvYQogfQogCiAjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiAhVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQotdm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXJCYXNlOjpw
YWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgs
IGZsb2F0IG9wYWNpdHkpCit2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBh
aW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwg
ZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAoIW1fcGxheWVyLT52aXNpYmxlKCkpCiAgICAgICAg
IHJldHVybjsKQEAgLTY0OSwxMCArNjQ5LDEwIEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyQmFzZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyCiAg
ICAgICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgICAgICBJbnRTaXplIHNpemUgPSBJbnRT
aXplKEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlH
SFQoJnZpZGVvSW5mbykpOwotICAgICAgICAgICAgdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmFj
cXVpcmVUZXh0dXJlRnJvbVBvb2woc2l6ZSwgR1NUX1ZJREVPX0lORk9fSEFTX0FMUEhBKCZ2aWRl
b0luZm8pID8gQml0bWFwVGV4dHVyZTo6U3VwcG9ydHNBbHBoYSA6IEJpdG1hcFRleHR1cmU6Ok5v
RmxhZyk7CisgICAgICAgICAgICB0ZXh0dXJlID0gdGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUsIEdTVF9WSURFT19JTkZPX0hBU19BTFBIQSgmdmlkZW9JbmZvKSA/IEJp
dG1hcFRleHR1cmU6OlN1cHBvcnRzQWxwaGEgOiBCaXRtYXBUZXh0dXJlOjpOb0ZsYWcpOwogICAg
ICAgICAgICAgdXBkYXRlVGV4dHVyZShzdGF0aWNfY2FzdDxCaXRtYXBUZXh0dXJlR0wmPigqdGV4
dHVyZSksIHZpZGVvSW5mbyk7CiAgICAgICAgIH0KLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJh
d1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1hdHJpeCwgb3BhY2l0eSk7CisgICAgICAg
IHRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKnRleHR1cmUsIHRhcmdldFJlY3QsIG1hdHJpeCwg
b3BhY2l0eSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTY3OCw4ICs2NzgsOCBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2U6OnBhaW50VG9UZXh0dXJlTWFwcGVy
KFRleHR1cmVNYXBwZXIqIHRleHR1cgogICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3Mg
PSBHU1RfVklERU9fSU5GT19IQVNfQUxQSEEoJnZpZGVvSW5mbykgPyBUZXh0dXJlTWFwcGVyR0w6
OlNob3VsZEJsZW5kIDogMDsKIAogICAgIEludFNpemUgc2l6ZSA9IEludFNpemUoR1NUX1ZJREVP
X0lORk9fV0lEVEgoJnZpZGVvSW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCgmdmlkZW9JbmZv
KSk7Ci0gICAgVGV4dHVyZU1hcHBlckdMKiB0ZXh0dXJlTWFwcGVyR0wgPSByZWludGVycHJldF9j
YXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgIHRleHR1cmVNYXBwZXJH
TC0+ZHJhd1RleHR1cmUodGV4dHVyZUlELCBmbGFncywgc2l6ZSwgdGFyZ2V0UmVjdCwgbWF0cml4
LCBvcGFjaXR5KTsKKyAgICBUZXh0dXJlTWFwcGVyR0wmIHRleHR1cmVNYXBwZXJHTCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8VGV4dHVyZU1hcHBlckdMJj4odGV4dHVyZU1hcHBlcik7CisgICAgdGV4dHVy
ZU1hcHBlckdMLmRyYXdUZXh0dXJlKHRleHR1cmVJRCwgZmxhZ3MsIHNpemUsIHRhcmdldFJlY3Qs
IG1hdHJpeCwgb3BhY2l0eSk7CiAgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwKCZ2aWRlb0ZyYW1l
KTsKICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXJCYXNlLmgKaW5kZXggNmM5ZmI5YTdmYjdhOTlhNjAzOGE2Mzk5NjMyMTRmMjY1NmQ5NTY1
MC4uNWYyNDFhODBlYzQyZTQ2YWU0ZmRiMGVjM2VmZmNjYTViMTdlMzg4NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJp
dmF0ZUdTdHJlYW1lckJhc2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyQmFzZS5oCkBAIC0xMTAsNyAr
MTEwLDcgQEAgcHVibGljOgogI2Vsc2UKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNBY2NlbGVy
YXRlZFJlbmRlcmluZygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgot
ICAgIHZpcnR1YWwgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29u
c3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgb3ZlcnJp
ZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIm
LCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBv
dmVycmlkZTsKICNlbmRpZgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTX1RIUkVBREVE
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
R3JhcGhpY3NTdXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3N1
cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5jcHAKaW5kZXggMjQ0MmUzN2RlMjhmNTA3MmU3YWUyMTVi
MjVmNjBmMzEyZjkyMzJmNy4uOGZhNWFiNWQ5ZDI2NTg3NDY4NTkwOGQ1MTdlNmEzNTQ1Y2VkMzYy
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMv
R3JhcGhpY3NTdXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9zdXJmYWNlcy9HcmFwaGljc1N1cmZhY2UuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHZvaWQgR3Jh
cGhpY3NTdXJmYWNlOjpjb3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29uc3QgSW50
UmVjdCYgc291cmNlUmVjCiAgICAgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodGV4dHVyZSwgc291
cmNlUmVjdCk7CiB9CiAKLXZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwYWludFRvVGV4dHVyZU1hcHBl
cihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJl
Y3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHkp
Cit2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIHBsYXRm
b3JtUGFpbnRUb1RleHR1cmVNYXBwZXIodGV4dHVyZU1hcHBlciwgdGFyZ2V0UmVjdCwgdHJhbnNm
b3JtLCBvcGFjaXR5KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3N1cmZhY2VzL0dyYXBoaWNzU3VyZmFjZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKaW5kZXggNWJiODEyYzE1NWRh
YWE2YTcxMTY3MDJiMjM4ODU5ZmRhMTJiMGI4Ny4uNzRkOGYxNTRlOWE3MTI3NWQxMGRmOTMyYzRk
NDRlYTViMGViOWU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3Mvc3VyZmFjZXMvR3JhcGhpY3NTdXJmYWNlLmgKQEAgLTc3LDcgKzc3LDcgQEAg
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEdyYXBoaWNzU3VyZmFjZT4gY3JlYXRlKGNv
bnN0IEludFNpemUmLCBGbGFncywgY29uc3QgR3JhcGhpY3NTdXJmYWNlVG9rZW4mKTsKICAgICB2
b2lkIGNvcHlUb0dMVGV4dHVyZSh1aW50MzJfdCB0YXJnZXQsIHVpbnQzMl90IHRleHR1cmUsIGNv
bnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZzZXQpOwog
ICAgIHZvaWQgY29weUZyb21UZXh0dXJlKHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3Qm
IHNvdXJjZVJlY3QpOwotICAgIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBl
ciosIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmLCBmbG9hdCBvcGFjaXR5KTsKKyAgICB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0
aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAgICAgdWludDMyX3QgZnJvbnRCdWZmZXIoKTsK
ICAgICB1aW50MzJfdCBzd2FwQnVmZmVycygpOwogICAgIEdyYXBoaWNzU3VyZmFjZVRva2VuIGV4
cG9ydFRva2VuKCk7CkBAIC05Nyw3ICs5Nyw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHBsYXRm
b3JtVW5sb2NrKCk7CiAgICAgdm9pZCBwbGF0Zm9ybUNvcHlUb0dMVGV4dHVyZSh1aW50MzJfdCB0
YXJnZXQsIHVpbnQzMl90IHRleHR1cmUsIGNvbnN0IEludFJlY3QmLCBjb25zdCBJbnRQb2ludCYp
OwogICAgIHZvaWQgcGxhdGZvcm1Db3B5RnJvbVRleHR1cmUodWludDMyX3QgdGV4dHVyZSwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCk7Ci0gICAgdm9pZCBwbGF0Zm9ybVBhaW50VG9UZXh0dXJl
TWFwcGVyKFRleHR1cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CisgICAgdm9pZCBwbGF0Zm9y
bVBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSk7CiAg
ICAgdWludDMyX3QgcGxhdGZvcm1Gcm9udEJ1ZmZlcigpIGNvbnN0OwogICAgIHVpbnQzMl90IHBs
YXRmb3JtU3dhcEJ1ZmZlcnMoKTsKICAgICBJbnRTaXplIHBsYXRmb3JtU2l6ZSgpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc3VyZmFjZXMvZWZs
L0dyYXBoaWNzU3VyZmFjZUNvbW1vbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlQ29tbW9uLmNwcAppbmRleCBlMDZhMTI4
YTcxMzVmNTc1ZGUwMjU0NGFkNTQ3MDMzYzU1YTUzNzljLi5lYzEzMDQwZDIxZDRlYTdhMDBlM2Rk
YjgyYzVhNGIxMzk0OTY1MzA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNlQ29tbW9uLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9zdXJmYWNlcy9lZmwvR3JhcGhpY3NTdXJmYWNl
Q29tbW9uLmNwcApAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgR3JhcGhpY3NTdXJmYWNlOjpwbGF0
Zm9ybUNvcHlGcm9tVGV4dHVyZSh1aW50MzJfdCB0ZXh0dXJlSWQsIGNvbnN0IEludFJlY3QmCiAg
ICAgbV9wcml2YXRlLT5jb3B5RnJvbVRleHR1cmUodGV4dHVyZUlkKTsKIH0KIAotdm9pZCBHcmFw
aGljc1N1cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQordm9pZCBHcmFwaGljc1N1
cmZhY2U6OnBsYXRmb3JtUGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVy
ZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlv
bk1hdHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQogewogICAgIHVpbnQzMl90IHRleHR1
cmUgPSBwbGF0Zm9ybUdldFRleHR1cmVJRCgpOwogICAgIGlmICghdGV4dHVyZSkKQEAgLTE4Myw3
ICsxODMsNyBAQCB2b2lkIEdyYXBoaWNzU3VyZmFjZTo6cGxhdGZvcm1QYWludFRvVGV4dHVyZU1h
cHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogCiAgICAgVHJhbnNmb3JtYXRpb25N
YXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm07CiAgICAgYWRqdXN0ZWRUcmFuc2Zv
cm0ubXVsdGlwbHkoVHJhbnNmb3JtYXRpb25NYXRyaXg6OnJlY3RUb1JlY3QobV9wcml2YXRlLT5y
ZWN0KCksIHRhcmdldFJlY3QpKTsKLSAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0
ZXh0dXJlTWFwcGVyKS0+ZHJhd1RleHR1cmUodGV4dHVyZSwgbV9wcml2YXRlLT5mbGFncygpLCBt
X3ByaXZhdGUtPnNpemUoKSwgbV9wcml2YXRlLT5yZWN0KCksIGFkanVzdGVkVHJhbnNmb3JtLCBv
cGFjaXR5KTsKKyAgICBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVy
KS5kcmF3VGV4dHVyZSh0ZXh0dXJlLCBtX3ByaXZhdGUtPmZsYWdzKCksIG1fcHJpdmF0ZS0+c2l6
ZSgpLCBtX3ByaXZhdGUtPnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9wYWNpdHkpOwogfQog
CiB1aW50MzJfdCBHcmFwaGljc1N1cmZhY2U6OnBsYXRmb3JtRnJvbnRCdWZmZXIoKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1h
cFRleHR1cmUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0Jp
dG1hcFRleHR1cmUuY3BwCmluZGV4IGY5OWU5YzEzNDMwNDNkNjY0OWRiNGRkZjUwODU3MDk5NjFh
NjI1NzUuLjU1MmQxYzZmMGZjZGY2Yzg0MDE2OGQ5NjliNjRmMTNkMzlhY2U2MzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFw
VGV4dHVyZS5jcHAKQEAgLTMzLDcgKzMzLDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi12
b2lkIEJpdG1hcFRleHR1cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIEdyYXBoaWNzTGF5ZXIqIHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcgdXBkYXRlQ29u
dGVudHNGbGFnLCBmbG9hdCBzY2FsZSkKK3ZvaWQgQml0bWFwVGV4dHVyZTo6dXBkYXRlQ29udGVu
dHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5
ZXIsIGNvbnN0IEludFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IEludFBvaW50JiBvZmZzZXQsIFVw
ZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlKQogewogICAg
IC8vIE1ha2luZyBhbiB1bmNvbmRpdGlvbmFsbHkgdW5hY2NlbGVyYXRlZCBidWZmZXIgaGVyZSBp
cyBPSyBiZWNhdXNlIHRoaXMgY29kZQogICAgIC8vIGlzbid0IHVzZWQgYnkgYW55IHBsYXRmb3Jt
cyB0aGF0IHJlc3BlY3QgdGhlIGFjY2VsZXJhdGVkIGJpdC4KQEAgLTQzLDggKzQzLDggQEAgdm9p
ZCBCaXRtYXBUZXh0dXJlOjp1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFw
cGVyLCBHcmFwaGljc0xheWVyKgogICAgICAgICByZXR1cm47CiAKICAgICBHcmFwaGljc0NvbnRl
eHQmIGNvbnRleHQgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpOwotICAgIGNvbnRleHQuc2V0SW1h
Z2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25R
dWFsaXR5KCkpOwotICAgIGNvbnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXIt
PnRleHREcmF3aW5nTW9kZSgpKTsKKyAgICBjb250ZXh0LnNldEltYWdlSW50ZXJwb2xhdGlvblF1
YWxpdHkodGV4dHVyZU1hcHBlci5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOworICAgIGNv
bnRleHQuc2V0VGV4dERyYXdpbmdNb2RlKHRleHR1cmVNYXBwZXIudGV4dERyYXdpbmdNb2RlKCkp
OwogCiAgICAgSW50UmVjdCBzb3VyY2VSZWN0KHRhcmdldFJlY3QpOwogICAgIHNvdXJjZVJlY3Qu
c2V0TG9jYXRpb24ob2Zmc2V0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZS5oCmluZGV4IGFkZjllNTg4ODQ4ZTg2MDdm
YmNhZmNmZjc3NGYxNzY3MjQxZTIzOTMuLmU5YzdkMDY0OGQ3NjgzMWVmNmI5NDU1Y2QxZmEwYmMx
OTNhYzU0NmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9CaXRtYXBUZXh0dXJlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL0JpdG1hcFRleHR1cmUuaApAQCAtNjUsNyArNjUsNyBAQCBwdWJsaWM6CiAKICAg
ICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBk
YXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UG9pbnQmIG9mZnNl
dCwgVXBkYXRlQ29udGVudHNGbGFnKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRl
bnRzKFRleHR1cmVNYXBwZXIqLCBHcmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0
LCBjb25zdCBJbnRQb2ludCYgb2Zmc2V0LCBVcGRhdGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxl
ID0gMSk7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBH
cmFwaGljc0xheWVyKiwgY29uc3QgSW50UmVjdCYgdGFyZ2V0LCBjb25zdCBJbnRQb2ludCYgb2Zm
c2V0LCBVcGRhdGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlID0gMSk7CiAgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNv
bnN0IEludFBvaW50JiBvZmZzZXQsIGludCBieXRlc1BlckxpbmUsIFVwZGF0ZUNvbnRlbnRzRmxh
ZykgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgPSAwOwogICAgIGlubGlu
ZSBGbGFncyBmbGFncygpIGNvbnN0IHsgcmV0dXJuIG1fZmxhZ3M7IH0KQEAgLTgzLDcgKzgzLDcg
QEAgcHVibGljOgogICAgIGlubGluZSBpbnQgbnVtYmVyT2ZCeXRlcygpIGNvbnN0IHsgcmV0dXJu
IHNpemUoKS53aWR0aCgpICogc2l6ZSgpLmhlaWdodCgpICogYnBwKCkgPj4gMzsgfQogICAgIGlu
bGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1cm4gIShtX2ZsYWdzICYgU3VwcG9ydHNB
bHBoYSk7IH0KIAotICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZp
bHRlcnMoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSB7IHJldHVybiB0
aGlzOyB9CisgICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVy
cyhUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIHsgcmV0dXJuIHRoaXM7
IH0KIAogcHJvdGVjdGVkOgogICAgIEludFNpemUgbV9jb250ZW50U2l6ZTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAKaW5kZXggODI0MzZjNDcxZTMyZDRlODkxZmQ1MTQ1ZDExODE3YzNhMWUxYTdjMC4u
MmE5ZmI4NTAzZThlZjQzNDBiZDUyNGJiZDEwZGNmYTAxNTMzYzViMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1
cmVHTC5jcHAKQEAgLTIyMSwxMyArMjIxLDEzIEBAIHN0YXRpYyB1bnNpZ25lZCBnZXRQYXNzZXNS
ZXF1aXJlZEZvckZpbHRlcihGaWx0ZXJPcGVyYXRpb246Ok9wZXJhdGlvblR5cGUgdHlwZSkKICAg
ICB9CiB9CiAKLVBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBs
eUZpbHRlcnMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVyT3BlcmF0
aW9ucyYgZmlsdGVycykKK1Bhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdM
OjphcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmlsdGVy
T3BlcmF0aW9ucyYgZmlsdGVycykKIHsKICAgICBpZiAoZmlsdGVycy5pc0VtcHR5KCkpCiAgICAg
ICAgIHJldHVybiB0aGlzOwogCi0gICAgVGV4dHVyZU1hcHBlckdMKiB0ZXhtYXBHTCA9IHN0YXRp
Y19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KHRleHR1cmVNYXBwZXIpOwotICAgIFJlZlB0cjxCaXRt
YXBUZXh0dXJlPiBwcmV2aW91c1N1cmZhY2UgPSB0ZXhtYXBHTC0+Y3VycmVudFN1cmZhY2UoKTsK
KyAgICBUZXh0dXJlTWFwcGVyR0wmIHRleG1hcEdMID0gc3RhdGljX2Nhc3Q8VGV4dHVyZU1hcHBl
ckdMJj4odGV4dHVyZU1hcHBlcik7CisgICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHByZXZpb3Vz
U3VyZmFjZSA9IHRleG1hcEdMLmN1cnJlbnRTdXJmYWNlKCk7CiAgICAgUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IHJlc3VsdFN1cmZhY2UgPSB0aGlzOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBp
bnRlcm1lZGlhdGVTdXJmYWNlOwogICAgIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiBzcGFyZVN1cmZh
Y2U7CkBAIC0yNDMsOCArMjQzLDggQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBCaXRtYXBU
ZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWEKICAgICAgICAg
ICAgIGJvb2wgbGFzdCA9IChpID09IGZpbHRlcnMuc2l6ZSgpIC0gMSkgJiYgKGogPT0gbnVtUGFz
c2VzIC0gMSk7CiAgICAgICAgICAgICBpZiAoIWxhc3QpIHsKICAgICAgICAgICAgICAgICBpZiAo
IWludGVybWVkaWF0ZVN1cmZhY2UpCi0gICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZVN1
cmZhY2UgPSB0ZXhtYXBHTC0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb250ZW50U2l6ZSgpKTsK
LSAgICAgICAgICAgICAgICB0ZXhtYXBHTC0+YmluZFN1cmZhY2UoaW50ZXJtZWRpYXRlU3VyZmFj
ZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIGludGVybWVkaWF0ZVN1cmZhY2UgPSB0ZXht
YXBHTC5hY3F1aXJlVGV4dHVyZUZyb21Qb29sKGNvbnRlbnRTaXplKCkpOworICAgICAgICAgICAg
ICAgIHRleG1hcEdMLmJpbmRTdXJmYWNlKGludGVybWVkaWF0ZVN1cmZhY2UuZ2V0KCkpOwogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobGFzdCkgewpAQCAtMjUyLDcgKzI1Miw3IEBA
IFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gQml0bWFwVGV4dHVyZUdMOjphcHBseUZpbHRlcnMo
VGV4dHVyZU1hcHBlciogdGV4dHVyZU1hCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKLSAgICAgICAgICAgIHRleG1hcEdMLT5kcmF3RmlsdGVyZWQoKnJlc3VsdFN1cmZh
Y2UuZ2V0KCksIHNwYXJlU3VyZmFjZS5nZXQoKSwgKmZpbHRlciwgaik7CisgICAgICAgICAgICB0
ZXhtYXBHTC5kcmF3RmlsdGVyZWQoKnJlc3VsdFN1cmZhY2UuZ2V0KCksIHNwYXJlU3VyZmFjZS5n
ZXQoKSwgKmZpbHRlciwgaik7CiAgICAgICAgICAgICBpZiAoIWogJiYgZmlsdGVyLT50eXBlKCkg
PT0gRmlsdGVyT3BlcmF0aW9uOjpEUk9QX1NIQURPVykgewogICAgICAgICAgICAgICAgIHNwYXJl
U3VyZmFjZSA9IHJlc3VsdFN1cmZhY2U7CiAgICAgICAgICAgICAgICAgcmVzdWx0U3VyZmFjZSA9
IG51bGxwdHI7CkBAIC0yNjEsNyArMjYxLDcgQEAgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBC
aXRtYXBUZXh0dXJlR0w6OmFwcGx5RmlsdGVycyhUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWEKICAg
ICAgICAgfQogICAgIH0KIAotICAgIHRleG1hcEdMLT5iaW5kU3VyZmFjZShwcmV2aW91c1N1cmZh
Y2UuZ2V0KCkpOworICAgIHRleG1hcEdMLmJpbmRTdXJmYWNlKHByZXZpb3VzU3VyZmFjZS5nZXQo
KSk7CiAgICAgcmV0dXJuIHJlc3VsdFN1cmZhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9CaXRtYXBUZXh0dXJlR0wuaAppbmRl
eCBkNWQ2NzM4YTNlZDFlZGUwODUzNGI2MTRhMDIwYjY0Mzk2Y2UwZTFmLi4yNzExNGJiNGY4MjZk
MzI2YjA4NmMwYmM1YjlhZWYyOGU0NjdiNzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvQml0bWFwVGV4dHVyZUdMLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0JpdG1hcFRleHR1cmVHTC5oCkBAIC01NCw3
ICs1NCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzTm9Td2l6emxlKGNvbnN0
IHZvaWQqLCBjb25zdCBJbnRSZWN0JiB0YXJnZXQsIGNvbnN0IEludFBvaW50JiBzb3VyY2VPZmZz
ZXQsIGludCBieXRlc1BlckxpbmUsIHVuc2lnbmVkIGJ5dGVzUGVyUGl4ZWwgPSA0LCBQbGF0Zm9y
bTNET2JqZWN0IGdsRm9ybWF0ID0gR3JhcGhpY3NDb250ZXh0M0Q6OlJHQkEpOwogICAgIHZpcnR1
YWwgYm9vbCBpc0JhY2tlZEJ5T3BlbkdMKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogCi0gICAgdmlydHVhbCBQYXNzUmVmUHRyPEJpdG1hcFRleHR1cmU+IGFwcGx5RmlsdGVycyhU
ZXh0dXJlTWFwcGVyKiwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBhcHBseUZpbHRlcnMoVGV4dHVyZU1hcHBl
ciYsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmKSBvdmVycmlkZTsKICAgICBzdHJ1Y3QgRmlsdGVy
SW5mbyB7CiAgICAgICAgIFJlZlB0cjxGaWx0ZXJPcGVyYXRpb24+IGZpbHRlcjsKICAgICAgICAg
dW5zaWduZWQgcGFzczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3Bw
CmluZGV4IGNlZGE4MmRmMjQ2NjQ0MWZhNmZiNDYyMmQwNzk1YTg1YWJhMDBiYWYuLmMxNTQ5Mjlj
MDIyMTA0MWE2ODJkY2I4MGU2NzhmNDJmOTdjZGEyYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9HcmFwaGljc0xheWVyVGV4dHVyZU1hcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL0dyYXBoaWNz
TGF5ZXJUZXh0dXJlTWFwcGVyLmNwcApAQCAtNTQ5LDcgKzU0OSw3IEBAIHZvaWQgR3JhcGhpY3NM
YXllclRleHR1cmVNYXBwZXI6OnVwZGF0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKCkKICAgICBiYWNr
aW5nU3RvcmUtPnVwZGF0ZUNvbnRlbnRzU2NhbGUocGFnZVNjYWxlRmFjdG9yKCkgKiBkZXZpY2VT
Y2FsZUZhY3RvcigpKTsKIAogICAgIGRpcnR5UmVjdC5zY2FsZShwYWdlU2NhbGVGYWN0b3IoKSAq
IGRldmljZVNjYWxlRmFjdG9yKCkpOwotICAgIGJhY2tpbmdTdG9yZS0+dXBkYXRlQ29udGVudHMo
dGV4dHVyZU1hcHBlciwgdGhpcywgbV9zaXplLCBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhKTsKKyAgICBiYWNraW5nU3RvcmUtPnVwZGF0
ZUNvbnRlbnRzKCp0ZXh0dXJlTWFwcGVyLCB0aGlzLCBtX3NpemUsIGRpcnR5UmVjdCwgQml0bWFw
VGV4dHVyZTo6VXBkYXRlQ2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwogCiAgICAgbV9uZWVk
c0Rpc3BsYXkgPSBmYWxzZTsKICAgICBtX25lZWRzRGlzcGxheVJlY3QgPSBJbnRSZWN0KCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckJhY2tpbmdTdG9yZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJCYWNraW5nU3RvcmUuaAppbmRleCAwNzZkMDFiZTk0MDVlMWMw
NDE1ODkwNTk3OWFlNjRkZjEzY2Y1MTVhLi4zMTM1Y2EwNjc4YjQ0YzdjZjNhZmRmNzNkYjYwMDg4
OTQxOGNiZjAyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQmFja2luZ1N0b3JlLmgKQEAgLTM5
LDggKzM5LDggQEAgY2xhc3MgR3JhcGhpY3NMYXllcjsKIGNsYXNzIFRleHR1cmVNYXBwZXJCYWNr
aW5nU3RvcmUgOiBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIsIHB1YmxpYyBSZWZD
b3VudGVkPFRleHR1cmVNYXBwZXJCYWNraW5nU3RvcmU+IHsKIHB1YmxpYzoKICAgICB2aXJ0dWFs
IFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0
JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCkgPSAwOwotICAgIHZpcnR1YWwg
dm9pZCBkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciosIGludCAvKiByZXBhaW50Q291
bnQgKi8sIGNvbnN0IENvbG9yJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRp
b25NYXRyaXgmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiwgZmxvYXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1
cmVNYXBwZXImLCBpbnQgLyogcmVwYWludENvdW50ICovLCBjb25zdCBDb2xvciYsIGNvbnN0IEZs
b2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JikgeyB9CiAgICAgdmlydHVhbCB+
VGV4dHVyZU1hcHBlckJhY2tpbmdTdG9yZSgpIHsgfQogCiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQ
U0NvdW50ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJGUFNDb3VudGVyLmNwcAppbmRleCAyZDMzM2FmMzkwZTUzODJlMWFlYzhlNTM2
NGJiNDJmZmUwZTE4NmUxLi5iYzcyMjU2OTZkMDcyMzhjZjhmNzk0OTQ3NzJjODU3MTU0Yjk5MzRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckZQU0NvdW50ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBTQ291bnRlci5jcHAKQEAgLTQ2LDcgKzQ2LDcg
QEAgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OlRleHR1cmVNYXBwZXJGUFNDb3VudGVyKCkKICAg
ICB9CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlckZQU0NvdW50ZXI6OnVwZGF0ZUZQU0FuZERpc3Bs
YXkoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRQb2ludCYgbG9jYXRp
b24sIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXRyaXgpCit2b2lkIFRleHR1cmVNYXBw
ZXJGUFNDb3VudGVyOjp1cGRhdGVGUFNBbmREaXNwbGF5KFRleHR1cmVNYXBwZXImIHRleHR1cmVN
YXBwZXIsIGNvbnN0IEZsb2F0UG9pbnQmIGxvY2F0aW9uLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgbWF0cml4KQogewogICAgIGlmICghbV9pc1Nob3dpbmdGUFMpCiAgICAgICAgIHJldHVy
bjsKQEAgLTU5LDcgKzU5LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyRlBTQ291bnRlcjo6dXBkYXRl
RlBTQW5kRGlzcGxheShUZXh0dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLAogICAgICAgICBtX2Zw
c1RpbWVzdGFtcCArPSBkZWx0YTsKICAgICB9CiAKLSAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3TnVt
YmVyKG1fbGFzdEZQUywgQ29sb3I6OmJsYWNrLCBsb2NhdGlvbiwgbWF0cml4KTsKKyAgICB0ZXh0
dXJlTWFwcGVyLmRyYXdOdW1iZXIobV9sYXN0RlBTLCBDb2xvcjo6YmxhY2ssIGxvY2F0aW9uLCBt
YXRyaXgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckZQU0NvdW50ZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
RlBTQ291bnRlci5oCmluZGV4IDY0OTk4OWM3NmM0MTgzOWE5ZGNmYjBkOWQ5NjlmNzM4NjQ1NGVl
MzAuLjVhYmZkOWRjYjQzOGRmNjI0OGY2MmZjODUxMjI2YjE3ZjQ2NjZjYWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyRlBT
Q291bnRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyRlBTQ291bnRlci5oCkBAIC0zNSw3ICszNSw3IEBAIGNsYXNzIFRleHR1cmVN
YXBwZXJGUFNDb3VudGVyIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoK
ICAgICBUZXh0dXJlTWFwcGVyRlBTQ291bnRlcigpOwotICAgIHZvaWQgdXBkYXRlRlBTQW5kRGlz
cGxheShUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRQb2ludCYgPSBGbG9hdFBvaW50Ojp6ZXJv
KCksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkp
OworICAgIHZvaWQgdXBkYXRlRlBTQW5kRGlzcGxheShUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxv
YXRQb2ludCYgPSBGbG9hdFBvaW50Ojp6ZXJvKCksIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4
JiA9IFRyYW5zZm9ybWF0aW9uTWF0cml4KCkpOwogCiBwcml2YXRlOgogICAgIGJvb2wgbV9pc1No
b3dpbmdGUFM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlckxheWVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCmluZGV4IGZjNzcxMDYyZTFjMDJh
ZjcwZjNmM2MzMmQ2MzdmY2QwM2VmODdmZjEuLjZiZGU0MGE1MDljMjMzNjg2MjZkZGYxZDBkNzY5
Y2Y3MGJiYjU2YjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTGF5ZXIuY3BwCkBAIC0zMSwxNSArMzEs
MTUgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBUZXh0dXJlTWFwcGVyUGFpbnRPcHRp
b25zIHsKIHB1YmxpYzoKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZTsKLSAgICBm
bG9hdCBvcGFjaXR5OworICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMoVGV4dHVyZU1hcHBl
ciYgdGV4dHVyZU1hcHBlcikKKyAgICAgICAgOiB0ZXh0dXJlTWFwcGVyKHRleHR1cmVNYXBwZXIp
CisgICAgeyB9CisKKyAgICBUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyOwogICAgIFRyYW5z
Zm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybTsKKyAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3Vy
ZmFjZTsKKyAgICBmbG9hdCBvcGFjaXR5IHsgMSB9OwogICAgIEludFNpemUgb2Zmc2V0OwotICAg
IFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXI7Ci0gICAgVGV4dHVyZU1hcHBlclBhaW50T3B0
aW9ucygpCi0gICAgICAgIDogb3BhY2l0eSgxKQotICAgICAgICAsIHRleHR1cmVNYXBwZXIoMCkK
LSAgICB7IH0KIH07CiAKIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpjb21wdXRlVHJhbnNmb3Jt
c1JlY3Vyc2l2ZSgpCkBAIC03OCw5ICs3OCwxMCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6
cGFpbnQoKQogewogICAgIGNvbXB1dGVUcmFuc2Zvcm1zUmVjdXJzaXZlKCk7CiAKLSAgICBUZXh0
dXJlTWFwcGVyUGFpbnRPcHRpb25zIG9wdGlvbnM7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVy
ID0gbV90ZXh0dXJlTWFwcGVyOwotICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci0+YmluZFN1cmZh
Y2UoMCk7CisgICAgQVNTRVJUKG1fdGV4dHVyZU1hcHBlcik7CisgICAgVGV4dHVyZU1hcHBlclBh
aW50T3B0aW9ucyBvcHRpb25zKCptX3RleHR1cmVNYXBwZXIpOworICAgIG9wdGlvbnMudGV4dHVy
ZU1hcHBlci5iaW5kU3VyZmFjZSgwKTsKKwogICAgIHBhaW50UmVjdXJzaXZlKG9wdGlvbnMpOwog
fQogCkBAIC0xMTYsMTQgKzExNywxNCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFpbnRT
ZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAgICAgdHJhbnNm
b3JtLm11bHRpcGx5KG1fY3VycmVudFRyYW5zZm9ybS5jb21iaW5lZCgpKTsKIAogICAgIGlmICht
X3N0YXRlLnNvbGlkQ29sb3IuaXNWYWxpZCgpICYmICFtX3N0YXRlLmNvbnRlbnRzUmVjdC5pc0Vt
cHR5KCkgJiYgbV9zdGF0ZS5zb2xpZENvbG9yLmFscGhhKCkpIHsKLSAgICAgICAgb3B0aW9ucy50
ZXh0dXJlTWFwcGVyLT5kcmF3U29saWRDb2xvcihtX3N0YXRlLmNvbnRlbnRzUmVjdCwgdHJhbnNm
b3JtLCBibGVuZFdpdGhPcGFjaXR5KG1fc3RhdGUuc29saWRDb2xvciwgb3B0aW9ucy5vcGFjaXR5
KSk7CisgICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5kcmF3U29saWRDb2xvcihtX3N0YXRl
LmNvbnRlbnRzUmVjdCwgdHJhbnNmb3JtLCBibGVuZFdpdGhPcGFjaXR5KG1fc3RhdGUuc29saWRD
b2xvciwgb3B0aW9ucy5vcGFjaXR5KSk7CiAgICAgICAgIGlmIChtX3N0YXRlLnNob3dEZWJ1Z0Jv
cmRlcnMpCi0gICAgICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIobV9z
dGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgsIGxheWVyUmVj
dCgpLCB0cmFuc2Zvcm0pOworICAgICAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmRyYXdC
b3JkZXIobV9zdGF0ZS5kZWJ1Z0JvcmRlckNvbG9yLCBtX3N0YXRlLmRlYnVnQm9yZGVyV2lkdGgs
IGxheWVyUmVjdCgpLCB0cmFuc2Zvcm0pOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
b3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5zZXRXcmFwTW9kZShUZXh0dXJlTWFwcGVyOjpTdHJldGNo
V3JhcCk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5zZXRQYXR0ZXJuVHJhbnNmb3JtKFRy
YW5zZm9ybWF0aW9uTWF0cml4KCkpOworICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5zZXRXcmFw
TW9kZShUZXh0dXJlTWFwcGVyOjpTdHJldGNoV3JhcCk7CisgICAgb3B0aW9ucy50ZXh0dXJlTWFw
cGVyLnNldFBhdHRlcm5UcmFuc2Zvcm0oVHJhbnNmb3JtYXRpb25NYXRyaXgoKSk7CiAKICAgICBp
ZiAobV9iYWNraW5nU3RvcmUpIHsKICAgICAgICAgRmxvYXRSZWN0IHRhcmdldFJlY3QgPSBsYXll
clJlY3QoKTsKQEAgLTE0MSw4ICsxNDIsOCBAQCB2b2lkIFRleHR1cmVNYXBwZXJMYXllcjo6cGFp
bnRTZWxmKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMpCiAKICAgICBp
ZiAoIW1fc3RhdGUuY29udGVudHNUaWxlU2l6ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgY29tcHV0
ZVBhdHRlcm5UcmFuc2Zvcm1JZk5lZWRlZCgpOwotICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBw
ZXItPnNldFdyYXBNb2RlKFRleHR1cmVNYXBwZXI6OlJlcGVhdFdyYXApOwotICAgICAgICBvcHRp
b25zLnRleHR1cmVNYXBwZXItPnNldFBhdHRlcm5UcmFuc2Zvcm0obV9wYXR0ZXJuVHJhbnNmb3Jt
KTsKKyAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldFdyYXBNb2RlKFRleHR1cmVNYXBw
ZXI6OlJlcGVhdFdyYXApOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuc2V0UGF0dGVy
blRyYW5zZm9ybShtX3BhdHRlcm5UcmFuc2Zvcm0pOwogICAgIH0KIAogICAgIEFTU0VSVCghbGF5
ZXJSZWN0KCkuaXNFbXB0eSgpKTsKQEAgLTE3MiwxNCArMTczLDE0IEBAIHZvaWQgVGV4dHVyZU1h
cHBlckxheWVyOjpwYWludFNlbGZBbmRDaGlsZHJlbihjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb25zJiBvCiAgICAgICAgIGNsaXBUcmFuc2Zvcm0udHJhbnNsYXRlKG9wdGlvbnMub2Zmc2V0
LndpZHRoKCksIG9wdGlvbnMub2Zmc2V0LmhlaWdodCgpKTsKICAgICAgICAgY2xpcFRyYW5zZm9y
bS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7CiAgICAgICAgIGNsaXBUcmFuc2Zvcm0ubXVs
dGlwbHkobV9jdXJyZW50VHJhbnNmb3JtLmNvbWJpbmVkKCkpOwotICAgICAgICBvcHRpb25zLnRl
eHR1cmVNYXBwZXItPmJlZ2luQ2xpcChjbGlwVHJhbnNmb3JtLCBsYXllclJlY3QoKSk7CisgICAg
ICAgIG9wdGlvbnMudGV4dHVyZU1hcHBlci5iZWdpbkNsaXAoY2xpcFRyYW5zZm9ybSwgbGF5ZXJS
ZWN0KCkpOwogICAgIH0KIAogICAgIGZvciAoYXV0byogY2hpbGQgOiBtX2NoaWxkcmVuKQogICAg
ICAgICBjaGlsZC0+cGFpbnRSZWN1cnNpdmUob3B0aW9ucyk7CiAKICAgICBpZiAoc2hvdWxkQ2xp
cCkKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CisgICAgICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5lbmRDbGlwKCk7CiB9CiAKIGJvb2wgVGV4dHVyZU1hcHBlckxh
eWVyOjpzaG91bGRCbGVuZCgpIGNvbnN0CkBAIC0zMjgsMTIgKzMyOSwxMiBAQCB2b2lkIFRleHR1
cmVNYXBwZXJMYXllcjo6cGFpbnRVc2luZ092ZXJsYXBSZWdpb25zKGNvbnN0IFRleHR1cmVNYXBw
ZXJQYWludE9wdGlvbgogICAgIFZlY3RvcjxJbnRSZWN0PiByZWN0cyA9IG5vbk92ZXJsYXBSZWdp
b24ucmVjdHMoKTsKIAogICAgIGZvciAoYXV0byYgcmVjdCA6IHJlY3RzKSB7Ci0gICAgICAgIGlm
ICghcmVjdC5pbnRlcnNlY3RzKG9wdGlvbnMudGV4dHVyZU1hcHBlci0+Y2xpcEJvdW5kcygpKSkK
KyAgICAgICAgaWYgKCFyZWN0LmludGVyc2VjdHMob3B0aW9ucy50ZXh0dXJlTWFwcGVyLmNsaXBC
b3VuZHMoKSkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBvcHRpb25zLnRleHR1
cmVNYXBwZXItPmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCByZWN0KTsKKyAgICAg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmJlZ2luQ2xpcChUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCByZWN0KTsKICAgICAgICAgcGFpbnRTZWxmQW5kQ2hpbGRyZW5XaXRoUmVwbGljYShvcHRpb25z
KTsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5lbmRDbGlwKCk7CisgICAgICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5lbmRDbGlwKCk7CiAgICAgfQogCiAgICAgcmVjdHMgPSBvdmVy
bGFwUmVnaW9uLnJlY3RzKCk7CkBAIC0zNDMsOCArMzQ0LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVy
TGF5ZXI6OnBhaW50VXNpbmdPdmVybGFwUmVnaW9ucyhjb25zdCBUZXh0dXJlTWFwcGVyUGFpbnRP
cHRpb24KICAgICAgICAgcmVjdHMuYXBwZW5kKG92ZXJsYXBSZWdpb24uYm91bmRzKCkpOwogICAg
IH0KIAotICAgIEludFNpemUgbWF4VGV4dHVyZVNpemUgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIt
Pm1heFRleHR1cmVTaXplKCk7Ci0gICAgSW50UmVjdCBhZGp1c3RlZENsaXBCb3VuZHMob3B0aW9u
cy50ZXh0dXJlTWFwcGVyLT5jbGlwQm91bmRzKCkpOworICAgIEludFNpemUgbWF4VGV4dHVyZVNp
emUgPSBvcHRpb25zLnRleHR1cmVNYXBwZXIubWF4VGV4dHVyZVNpemUoKTsKKyAgICBJbnRSZWN0
IGFkanVzdGVkQ2xpcEJvdW5kcyhvcHRpb25zLnRleHR1cmVNYXBwZXIuY2xpcEJvdW5kcygpKTsK
ICAgICBhZGp1c3RlZENsaXBCb3VuZHMubW92ZSgtb3B0aW9ucy5vZmZzZXQpOwogICAgIGZvciAo
YXV0byYgcmVjdCA6IHJlY3RzKSB7CiAgICAgICAgIGZvciAoaW50IHggPSByZWN0LngoKTsgeCA8
IHJlY3QubWF4WCgpOyB4ICs9IG1heFRleHR1cmVTaXplLndpZHRoKCkpIHsKQEAgLTM2MiwzMiAr
MzYzLDMyIEBAIHZvaWQgVGV4dHVyZU1hcHBlckxheWVyOjpwYWludFVzaW5nT3ZlcmxhcFJlZ2lv
bnMoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9uCiAKIHZvaWQgVGV4dHVyZU1hcHBlckxh
eWVyOjphcHBseU1hc2soY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucykK
IHsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPnNldE1hc2tNb2RlKHRydWUpOworICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5zZXRNYXNrTW9kZSh0cnVlKTsKICAgICBwYWludFNlbGYob3B0
aW9ucyk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5zZXRNYXNrTW9kZShmYWxzZSk7Cisg
ICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLnNldE1hc2tNb2RlKGZhbHNlKTsKIH0KIAogUGFzc1Jl
ZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50SW50b1N1cmZhY2Uo
Y29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3B0aW9ucyYgb3B0aW9ucywgY29uc3QgSW50U2l6ZSYg
c2l6ZSkKIHsKLSAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4
dHVyZU1hcHBlci0+YWNxdWlyZVRleHR1cmVGcm9tUG9vbChzaXplKTsKKyAgICBSZWZQdHI8Qml0
bWFwVGV4dHVyZT4gc3VyZmFjZSA9IG9wdGlvbnMudGV4dHVyZU1hcHBlci5hY3F1aXJlVGV4dHVy
ZUZyb21Qb29sKHNpemUpOwogICAgIFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMgcGFpbnRPcHRp
b25zKG9wdGlvbnMpOwogICAgIHBhaW50T3B0aW9ucy5zdXJmYWNlID0gc3VyZmFjZTsKLSAgICBv
cHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJmYWNlKHN1cmZhY2UuZ2V0KCkpOworICAgIG9w
dGlvbnMudGV4dHVyZU1hcHBlci5iaW5kU3VyZmFjZShzdXJmYWNlLmdldCgpKTsKICAgICBwYWlu
dFNlbGZBbmRDaGlsZHJlbihwYWludE9wdGlvbnMpOwogICAgIGlmIChtX3N0YXRlLm1hc2tMYXll
cikKICAgICAgICAgbV9zdGF0ZS5tYXNrTGF5ZXItPmFwcGx5TWFzayhvcHRpb25zKTsKICAgICBz
dXJmYWNlID0gc3VyZmFjZS0+YXBwbHlGaWx0ZXJzKG9wdGlvbnMudGV4dHVyZU1hcHBlciwgbV9j
dXJyZW50RmlsdGVycyk7Ci0gICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3VyZmFjZShz
dXJmYWNlLmdldCgpKTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmluZFN1cmZhY2Uoc3Vy
ZmFjZS5nZXQoKSk7CiAgICAgcmV0dXJuIHN1cmZhY2UucmVsZWFzZSgpOwogfQogCiBzdGF0aWMg
dm9pZCBjb21taXRTdXJmYWNlKGNvbnN0IFRleHR1cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlv
bnMsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gc3VyZmFjZSwgY29uc3QgSW50UmVjdCYgcmVj
dCwgZmxvYXQgb3BhY2l0eSkKIHsKLSAgICBvcHRpb25zLnRleHR1cmVNYXBwZXItPmJpbmRTdXJm
YWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CisgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLmJp
bmRTdXJmYWNlKG9wdGlvbnMuc3VyZmFjZS5nZXQoKSk7CiAgICAgVHJhbnNmb3JtYXRpb25NYXRy
aXggdGFyZ2V0VHJhbnNmb3JtOwogICAgIHRhcmdldFRyYW5zZm9ybS50cmFuc2xhdGUob3B0aW9u
cy5vZmZzZXQud2lkdGgoKSwgb3B0aW9ucy5vZmZzZXQuaGVpZ2h0KCkpOwogICAgIHRhcmdldFRy
YW5zZm9ybS5tdWx0aXBseShvcHRpb25zLnRyYW5zZm9ybSk7Ci0gICAgb3B0aW9ucy50ZXh0dXJl
TWFwcGVyLT5kcmF3VGV4dHVyZSgqc3VyZmFjZS5nZXQoKSwgcmVjdCwgdGFyZ2V0VHJhbnNmb3Jt
LCBvcGFjaXR5KTsKKyAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuZHJhd1RleHR1cmUoKnN1cmZh
Y2UuZ2V0KCksIHJlY3QsIHRhcmdldFRyYW5zZm9ybSwgb3BhY2l0eSk7CiB9CiAKIHZvaWQgVGV4
dHVyZU1hcHBlckxheWVyOjpwYWludFdpdGhJbnRlcm1lZGlhdGVTdXJmYWNlKGNvbnN0IFRleHR1
cmVNYXBwZXJQYWludE9wdGlvbnMmIG9wdGlvbnMsIGNvbnN0IEludFJlY3QmIHJlY3QpCkBAIC00
MTMsOCArNDE0LDggQEAgdm9pZCBUZXh0dXJlTWFwcGVyTGF5ZXI6OnBhaW50V2l0aEludGVybWVk
aWF0ZVN1cmZhY2UoY29uc3QgVGV4dHVyZU1hcHBlclBhaW50T3AKIAogICAgIG1haW5TdXJmYWNl
ID0gcGFpbnRJbnRvU3VyZmFjZShwYWludE9wdGlvbnMsIHJlY3Quc2l6ZSgpKTsKICAgICBpZiAo
cmVwbGljYVN1cmZhY2UpIHsKLSAgICAgICAgb3B0aW9ucy50ZXh0dXJlTWFwcGVyLT5iaW5kU3Vy
ZmFjZShyZXBsaWNhU3VyZmFjZS5nZXQoKSk7Ci0gICAgICAgIG9wdGlvbnMudGV4dHVyZU1hcHBl
ci0+ZHJhd1RleHR1cmUoKm1haW5TdXJmYWNlLmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2ludDo6
emVybygpLCByZWN0LnNpemUoKSkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVNYXBwZXIuYmlu
ZFN1cmZhY2UocmVwbGljYVN1cmZhY2UuZ2V0KCkpOworICAgICAgICBvcHRpb25zLnRleHR1cmVN
YXBwZXIuZHJhd1RleHR1cmUoKm1haW5TdXJmYWNlLmdldCgpLCBGbG9hdFJlY3QoRmxvYXRQb2lu
dDo6emVybygpLCByZWN0LnNpemUoKSkpOwogICAgICAgICBtYWluU3VyZmFjZSA9IHJlcGxpY2FT
dXJmYWNlOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaApp
bmRleCAyNDgyZTBlOTQzZDcxZjFjZDAxMTYzNzVhZGRlN2YwNGJlOGE0YTFkLi45ZjNmNDVhMzc5
MDU0OGFlMGEzOWJlNzA1ZTU1NmUxMWJjZDRiMTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXIuaApAQCAtMzksMTEgKzM5LDExIEBAIHB1YmxpYzoKIAogICAgIFRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyKCkgOiBtX2NsaWVudCgwKSB7IH0KICAgICB2aXJ0dWFsIH5U
ZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcigpIHsgfQotICAgIHZpcnR1YWwgdm9pZCBwYWludFRv
VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1vZGVsVmlld01hdHJpeCA9IFRyYW5zZm9ybWF0aW9uTWF0cml4
KCksIGZsb2F0IG9wYWNpdHkgPSAxLjApID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5z
Zm9ybWF0aW9uTWF0cml4JiBtb2RlbFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgp
LCBmbG9hdCBvcGFjaXR5ID0gMS4wKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHN3YXBCdWZmZXJz
KCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdCb3JkZXIoVGV4dHVyZU1hcHBlciogdGV4dHVy
ZU1hcHBlciwgY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxv
YXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgdHJhbnNmb3Jt
KQorICAgIHZpcnR1YWwgdm9pZCBkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IENvbG9yJiBjb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKICAg
ICB7Ci0gICAgICAgIHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoY29sb3IsIGJvcmRlcldpZHRo
LCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOworICAgICAgICB0ZXh0dXJlTWFwcGVyLmRyYXdCb3Jk
ZXIoY29sb3IsIGJvcmRlcldpZHRoLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0pOwogICAgIH0KICAg
ICB2b2lkIHNldENsaWVudChUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllcjo6Q2xpZW50KiBjbGll
bnQpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1
ZmZlci5jcHAKaW5kZXggYjJkNjg4YjU1NDZhMmI5NzUyZTFiYmJlNjkxOTU1ZDRiMGEwN2RhZC4u
NmJjNjg2MmI3MTA3OTBlYTI5MzdmNzkwMjI4YjI5NjM1MzU1NmFlMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyQnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIuY3BwCkBAIC00OSwxNyArNDks
MTcgQEAgYm9vbCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6Y2FuUmV1c2VXaXRo
b3V0UmVzZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwKICAgICByZXR1cm4gbV90ZXh0dXJlICYmICht
X3RleHR1cmUtPnNpemUoKSA9PSBzaXplKSAmJiAoc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdM
Kj4obV90ZXh0dXJlLmdldCgpKS0+aW50ZXJuYWxGb3JtYXQoKSA9PSBpbnRlcm5hbEZvcm1hdCB8
fCBpbnRlcm5hbEZvcm1hdCA9PSBHcmFwaGljc0NvbnRleHQzRDo6RE9OVF9DQVJFKTsKIH0KIAot
dm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1RleHR1cmVNYXBw
ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRS
ZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4LCBmbG9hdCBv
cGFjaXR5KQordm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlcjo6cGFpbnRUb1Rl
eHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgRmxvYXRSZWN0
JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0cml4
LCBmbG9hdCBvcGFjaXR5KQogewogICAgIGlmIChtX2hhc01hbmFnZWRUZXh0dXJlKSB7CiAgICAg
ICAgIEFTU0VSVChtX3RleHR1cmUpOwotICAgICAgICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVy
ZSgqbV90ZXh0dXJlLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAg
ICAgICB0ZXh0dXJlTWFwcGVyLmRyYXdUZXh0dXJlKCptX3RleHR1cmUsIHRhcmdldFJlY3QsIG1v
ZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBB
U1NFUlQobV90ZXh0dXJlSUQpOwotICAgIFRleHR1cmVNYXBwZXJHTCogdGV4bWFwR0wgPSBzdGF0
aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsKLSAgICB0ZXhtYXBHTC0+
ZHJhd1RleHR1cmUobV90ZXh0dXJlSUQsIG1fZXh0cmFGbGFncywgbV9zaXplLCB0YXJnZXRSZWN0
LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHkpOworICAgIFRleHR1cmVNYXBwZXJHTCYgdGV4bWFw
R0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVyKTsKKyAgICB0
ZXhtYXBHTC5kcmF3VGV4dHVyZShtX3RleHR1cmVJRCwgbV9leHRyYUZsYWdzLCBtX3NpemUsIHRh
cmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVy
LmgKaW5kZXggNjU3ZDI4MzkyZDA5M2YxOTYzZDg3N2Q3ZjQ2MjYwMzI2N2VjMWU1OC4uODRjZTVl
Y2M1ODEzNjg1N2I1NzE4ZmY1MjJiNmUwZmRhMTBmZmIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
QnVmZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyQnVmZmVyLmgKQEAgLTQyLDcgKzQyLDcgQEAgcHVibGlj
OgogCiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJCdWZmZXIoKSA9IGRl
ZmF1bHQ7CiAKLSAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciosIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
KSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1h
cHBlciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
KSBmaW5hbDsKIAogICAgIGJvb2wgY2FuUmV1c2VXaXRob3V0UmVzZXQoY29uc3QgSW50U2l6ZSYs
IEdDM0RpbnQgaW50ZXJuYWxGb3JtYXQpOwogICAgIEJpdG1hcFRleHR1cmVHTCYgdGV4dHVyZUdM
KCkgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMJj4oKm1fdGV4dHVyZSk7IH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuY3BwCmlu
ZGV4IGU5N2ZjZDg5YzJjODFiZmYxNzhlYTliNWM0ZmUzZTg2NjA0YzQxNTUuLjEyZThmNDg1NGU0
OWRkMDBkYWQ3NjkxYzFmODJkZWMzYTRhZWIyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyU3VyZmFjZUJhY2tpbmdTdG9y
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmNwcApAQCAtNDQsNyArNDQsNyBAQCBSZWZQdHI8
Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnRleHR1cmUo
KSBjb25zdAogICAgIHJldHVybiBlbXB0eVRleHR1cmU7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBl
clN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIq
IHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBw
ZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAo
bV9ncmFwaGljc1N1cmZhY2UpCiAgICAgICAgIG1fZ3JhcGhpY3NTdXJmYWNlLT5wYWludFRvVGV4
dHVyZU1hcHBlcih0ZXh0dXJlTWFwcGVyLCB0YXJnZXRSZWN0LCB0cmFuc2Zvcm0sIG9wYWNpdHkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJTdXJmYWNlQmFja2luZ1N0b3JlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaAppbmRl
eCAyMjRiODA2MDUyMDg1ZTdlMzYyOTlmZGQ0OWU2ZDAyZDZjYTcwNDU0Li45OTMxZGI3ZDI5YTBj
M2NiY2MzZDcxNjU5NTE0ZDU1ZDhjMzk1M2VhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclN1cmZhY2VCYWNraW5nU3RvcmUuaApAQCAtMzcsNyArMzcsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBzZXRHcmFwaGljc1N1cmZhY2UoUGFzc1JlZlB0cjxHcmFwaGljc1N1cmZhY2U+KTsKICAg
ICB2b2lkIHN3YXBCdWZmZXJzSWZOZWVkZWQodWludDMyX3QgZnJvbnRCdWZmZXIpOwogICAgIHZp
cnR1YWwgUmVmUHRyPEJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdDsKLSAgICB2aXJ0dWFs
IHZvaWQgcGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciosIGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQpOworICAgIHZpcnR1YWwgdm9p
ZCBwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCk7CiAgICAgdmlydHVhbCB+VGV4dHVy
ZU1hcHBlclN1cmZhY2VCYWNraW5nU3RvcmUoKSB7IH0KIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclRpbGUuY3BwCmluZGV4IDFiYjBhNGYyNGFmZmY4NDRlODZkNDdkMWRjNWViZDljZDI1MDUx
MDEuLjM2OTcxOTZhOWMzYjY3Y2U1ZTRhYmQxN2MwNzRmMjg5MTBhY2EyYzAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyVGls
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXJUaWxlLmNwcApAQCAtMjksNyArMjksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
IGNsYXNzIEdyYXBoaWNzTGF5ZXI7CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVwZGF0ZUNv
bnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEltYWdlKiBpbWFnZSwgY29uc3Qg
SW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgdXBk
YXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMo
VGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250
ZW50c0ZsYWcpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCht
X3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CkBAIC00MywxNCAr
NDMsMTQgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWcKICAgICAvLyBOb3JtYWxpemUgdGFyZ2V0
UmVjdCB0byB0aGUgdGV4dHVyZSdzIGNvb3JkaW5hdGVzLgogICAgIHRhcmdldFJlY3QubW92ZSgt
bV9yZWN0LngoKSwgLW1fcmVjdC55KCkpOwogICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAgICAg
IG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgbV90
ZXh0dXJlID0gdGV4dHVyZU1hcHBlci5jcmVhdGVUZXh0dXJlKCk7CiAgICAgICAgIG1fdGV4dHVy
ZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIGltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKSA/IDAgOiBCaXRtYXBUZXh0dXJlOjpTdXBwb3J0c0FscGhhKTsKICAgICB9CiAKICAg
ICBtX3RleHR1cmUtPnVwZGF0ZUNvbnRlbnRzKGltYWdlLCB0YXJnZXRSZWN0LCBzb3VyY2VPZmZz
ZXQsIHVwZGF0ZUNvbnRlbnRzRmxhZyk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnVw
ZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZXIq
IHNvdXJjZUxheWVyLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVw
ZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcsIGZsb2F0IHNjYWxlKQordm9pZCBU
ZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1h
cHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5ZXIsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZywg
ZmxvYXQgc2NhbGUpCiB7CiAgICAgSW50UmVjdCB0YXJnZXRSZWN0ID0gZW5jbG9zaW5nSW50UmVj
dChtX3JlY3QpOwogICAgIHRhcmdldFJlY3QuaW50ZXJzZWN0KGRpcnR5UmVjdCk7CkBAIC02Miwx
NyArNjIsMTcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyVGlsZTo6dXBkYXRlQ29udGVudHMoVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXkKICAgICB0YXJnZXRSZWN0Lm1vdmUo
LW1fcmVjdC54KCksIC1tX3JlY3QueSgpKTsKIAogICAgIGlmICghbV90ZXh0dXJlKSB7Ci0gICAg
ICAgIG1fdGV4dHVyZSA9IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAg
bV90ZXh0dXJlID0gdGV4dHVyZU1hcHBlci5jcmVhdGVUZXh0dXJlKCk7CiAgICAgICAgIG1fdGV4
dHVyZS0+cmVzZXQodGFyZ2V0UmVjdC5zaXplKCksIEJpdG1hcFRleHR1cmU6OlN1cHBvcnRzQWxw
aGEpOwogICAgIH0KIAogICAgIG1fdGV4dHVyZS0+dXBkYXRlQ29udGVudHModGV4dHVyZU1hcHBl
ciwgc291cmNlTGF5ZXIsIHRhcmdldFJlY3QsIHNvdXJjZU9mZnNldCwgdXBkYXRlQ29udGVudHNG
bGFnLCBzY2FsZSk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVN
YXBwZXIqIHRleHR1cmVNYXBwZXIsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zv
cm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IHVuc2lnbmVkIGV4cG9zZWRFZGdlcykKK3ZvaWQgVGV4
dHVyZU1hcHBlclRpbGU6OnBhaW50KFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IHVu
c2lnbmVkIGV4cG9zZWRFZGdlcykKIHsKICAgICBpZiAodGV4dHVyZSgpLmdldCgpKQotICAgICAg
ICB0ZXh0dXJlTWFwcGVyLT5kcmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRy
YW5zZm9ybSwgb3BhY2l0eSwgZXhwb3NlZEVkZ2VzKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci5k
cmF3VGV4dHVyZSgqdGV4dHVyZSgpLmdldCgpLCByZWN0KCksIHRyYW5zZm9ybSwgb3BhY2l0eSwg
ZXhwb3NlZEVkZ2VzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaAppbmRleCA3OWQ3M2VlYjJlZTNiYzlmOThmYjJmMjU4OTcyYWEwZTZmYWNkYzdiLi42
ZTc2MjEwYTFmZTBjNmVmN2Q0MTE5OTE4YjZlYjVmZjljN2Q1MGU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
clRpbGUuaApAQCAtMzksOSArMzksOSBAQCBwdWJsaWM6CiAgICAgaW5saW5lIHZvaWQgc2V0VGV4
dHVyZShCaXRtYXBUZXh0dXJlKiB0ZXh0dXJlKSB7IG1fdGV4dHVyZSA9IHRleHR1cmU7IH0KICAg
ICBpbmxpbmUgdm9pZCBzZXRSZWN0KGNvbnN0IEZsb2F0UmVjdCYgcmVjdCkgeyBtX3JlY3QgPSBy
ZWN0OyB9CiAKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXIqLCBJbWFnZSos
IGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOwotICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciosIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLCBm
bG9hdCBzY2FsZSA9IDEpOwotICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyKiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzKTsKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImLCBJbWFnZSos
IGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcgVXBkYXRl
Q2FuTW9kaWZ5T3JpZ2luYWxJbWFnZURhdGEpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4
dHVyZU1hcHBlciYsIEdyYXBoaWNzTGF5ZXIqLCBjb25zdCBJbnRSZWN0JiwgQml0bWFwVGV4dHVy
ZTo6VXBkYXRlQ29udGVudHNGbGFnIFVwZGF0ZUNhbk1vZGlmeU9yaWdpbmFsSW1hZ2VEYXRhLCBm
bG9hdCBzY2FsZSA9IDEpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChUZXh0dXJlTWFwcGVyJiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBmbG9hdCwgY29uc3QgdW5zaWduZWQgZXhwb3Nl
ZEVkZ2VzKTsKICAgICB2aXJ0dWFsIH5UZXh0dXJlTWFwcGVyVGlsZSgpIHsgfQogCiAgICAgZXhw
bGljaXQgVGV4dHVyZU1hcHBlclRpbGUoY29uc3QgRmxvYXRSZWN0JiByZWN0KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJU
aWxlZEJhY2tpbmdTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCAzNGUxZWU1OGJi
NGFlNThhYzcwYjI4NGI1N2Q1MGJmZjg2ZjQ2ZWNkLi45OTBjYTc2NDkyZGNkNzMzZjRlNjQ0Yjhi
ZWZmM2FmNzI5NTIzYzZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFj
a2luZ1N0b3JlLmNwcApAQCAtMzAsNyArMzAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEdyYXBoaWNzTGF5ZXI7CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
Ojp1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIpCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVu
dHNGcm9tSW1hZ2VJZk5lZWRlZChUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyKQogewogICAg
IGlmICghbV9pbWFnZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDcsNyArNDcsNyBAQCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3RvcmU6OmFkanVzdGVkVHJh
bnNmb3JtRm9yUmVjdChjbwogICAgIHJldHVybiBUcmFuc2Zvcm1hdGlvbk1hdHJpeDo6cmVjdFRv
UmVjdChyZWN0KCksIHRhcmdldFJlY3QpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1h
cHBlciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1h
dHJpeCYgdHJhbnNmb3JtLCBmbG9hdCBvcGFjaXR5KQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVN
YXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICB1cGRhdGVDb250ZW50c0Zy
b21JbWFnZUlmTmVlZGVkKHRleHR1cmVNYXBwZXIpOwogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4
IGFkanVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0
KHRhcmdldFJlY3QpOwpAQCAtNTUsMTggKzU1LDE4IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVk
QmFja2luZ1N0b3JlOjpwYWludFRvVGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyKiB0ZXh0dXJl
CiAgICAgICAgIHRpbGUucGFpbnQodGV4dHVyZU1hcHBlciwgYWRqdXN0ZWRUcmFuc2Zvcm0sIG9w
YWNpdHksIGNhbGN1bGF0ZUV4cG9zZWRUaWxlRWRnZXMocmVjdCgpLCB0aWxlLnJlY3QoKSkpOwog
fQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd0JvcmRlcihUZXh0
dXJlTWFwcGVyKiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xvciYgYm9yZGVyQ29sb3IsIGZsb2F0
IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9y
bWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdT
dG9yZTo6ZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFwcGVyLCBjb25zdCBDb2xv
ciYgYm9yZGVyQ29sb3IsIGZsb2F0IGJvcmRlcldpZHRoLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdl
dFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7CiAgICAgVHJh
bnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0gKiBhZGp1c3Rl
ZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChhdXRvJiB0aWxlIDogbV90
aWxlcykKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9y
ZGVyV2lkdGgsIHRpbGUucmVjdCgpLCBhZGp1c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIHRleHR1
cmVNYXBwZXIuZHJhd0JvcmRlcihib3JkZXJDb2xvciwgYm9yZGVyV2lkdGgsIHRpbGUucmVjdCgp
LCBhZGp1c3RlZFRyYW5zZm9ybSk7CiB9CiAKLXZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2lu
Z1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwg
aW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2
b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6ZHJhd1JlcGFpbnRDb3VudGVyKFRl
eHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGludCByZXBhaW50Q291bnQsIGNvbnN0IENvbG9y
JiBib3JkZXJDb2xvciwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zv
cm1hdGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFk
anVzdGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRh
cmdldFJlY3QpOwogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMpCi0gICAgICAgIHRleHR1
cmVNYXBwZXItPmRyYXdOdW1iZXIocmVwYWludENvdW50LCBib3JkZXJDb2xvciwgdGlsZS5yZWN0
KCkubG9jYXRpb24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgICAgICB0ZXh0dXJlTWFwcGVy
LmRyYXdOdW1iZXIocmVwYWludENvdW50LCBib3JkZXJDb2xvciwgdGlsZS5yZWN0KCkubG9jYXRp
b24oKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOwogfQogCiB2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJh
Y2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHNTY2FsZShmbG9hdCBzY2FsZSkKQEAgLTE1MCwxNiAr
MTUwLDE2IEBAIHZvaWQgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlOjpjcmVhdGVPckRl
c3Ryb3lUaWxlc0lmTmVlZGVkKGNvbnN0IEZsb2F0U2l6CiAgICAgfQogfQogCi12b2lkIFRleHR1
cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciog
dGV4dHVyZU1hcHBlciwgSW1hZ2UqIGltYWdlLCBjb25zdCBGbG9hdFNpemUmIHRvdGFsU2l6ZSwg
Y29uc3QgSW50UmVjdCYgZGlydHlSZWN0LCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50c0Zs
YWcgdXBkYXRlQ29udGVudHNGbGFnKQordm9pZCBUZXh0dXJlTWFwcGVyVGlsZWRCYWNraW5nU3Rv
cmU6OnVwZGF0ZUNvbnRlbnRzKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIEltYWdlKiBp
bWFnZSwgY29uc3QgRmxvYXRTaXplJiB0b3RhbFNpemUsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVj
dCwgQml0bWFwVGV4dHVyZTo6VXBkYXRlQ29udGVudHNGbGFnIHVwZGF0ZUNvbnRlbnRzRmxhZykK
IHsKLSAgICBjcmVhdGVPckRlc3Ryb3lUaWxlc0lmTmVlZGVkKHRvdGFsU2l6ZSwgdGV4dHVyZU1h
cHBlci0+bWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVPcGFx
dWUoKSk7CisgICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1
cmVNYXBwZXIubWF4VGV4dHVyZVNpemUoKSwgIWltYWdlLT5jdXJyZW50RnJhbWVLbm93blRvQmVP
cGFxdWUoKSk7CiAgICAgZm9yIChhdXRvJiB0aWxlIDogbV90aWxlcykKICAgICAgICAgdGlsZS51
cGRhdGVDb250ZW50cyh0ZXh0dXJlTWFwcGVyLCBpbWFnZSwgZGlydHlSZWN0LCB1cGRhdGVDb250
ZW50c0ZsYWcpOwogfQogCi12b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBk
YXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciog
c291cmNlTGF5ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBk
aXJ0eVJlY3QsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50
c0ZsYWcpCit2b2lkIFRleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZTo6dXBkYXRlQ29udGVu
dHMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllciogc291cmNlTGF5
ZXIsIGNvbnN0IEZsb2F0U2l6ZSYgdG90YWxTaXplLCBjb25zdCBJbnRSZWN0JiBkaXJ0eVJlY3Qs
IEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyB1cGRhdGVDb250ZW50c0ZsYWcpCiB7
Ci0gICAgY3JlYXRlT3JEZXN0cm95VGlsZXNJZk5lZWRlZCh0b3RhbFNpemUsIHRleHR1cmVNYXBw
ZXItPm1heFRleHR1cmVTaXplKCksIHRydWUpOworICAgIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZO
ZWVkZWQodG90YWxTaXplLCB0ZXh0dXJlTWFwcGVyLm1heFRleHR1cmVTaXplKCksIHRydWUpOwog
ICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMpCiAgICAgICAgIHRpbGUudXBkYXRlQ29udGVu
dHModGV4dHVyZU1hcHBlciwgc291cmNlTGF5ZXIsIGRpcnR5UmVjdCwgdXBkYXRlQ29udGVudHNG
bGFnLCBtX2NvbnRlbnRzU2NhbGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxlZEJhY2tpbmdTdG9yZS5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJUaWxl
ZEJhY2tpbmdTdG9yZS5oCmluZGV4IDRiZTIxNDk1MDFmOWFjYWMzY2E2OTM1M2MwZjNhZjZmZDRj
ZDVjYzguLmI0NWI1MDhlNGJhOTI1ZjcyOTUwZDM2N2I4ZTVlYjgwM2I5NzRlNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
VGlsZWRCYWNraW5nU3RvcmUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlLmgKQEAgLTM4LDEzICszOCwx
MyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3Jl
KCkgeyB9CiAKICAgICB2aXJ0dWFsIFJlZlB0cjxCaXRtYXBUZXh0dXJlPiB0ZXh0dXJlKCkgY29u
c3Qgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1
cmVNYXBwZXIqLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYs
IGZsb2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFw
cGVyKiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0Jiwg
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
ZHJhd1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25z
dCBDb2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikg
b3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVN
YXBwZXImLCBjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihUZXh0dXJlTWFwcGVy
JiwgY29uc3QgQ29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiwgY29u
c3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
d1JlcGFpbnRDb3VudGVyKFRleHR1cmVNYXBwZXImLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBD
b2xvciYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzU2NhbGUoZmxvYXQpOwotICAgIHZvaWQg
dXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciosIEltYWdlKiwgY29uc3QgRmxvYXRTaXplJiwg
Y29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNvbnRlbnRzRmxhZyk7Ci0gICAg
dm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyKiwgR3JhcGhpY3NMYXllciosIGNvbnN0
IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpVcGRhdGVDb250ZW50
c0ZsYWcpOworICAgIHZvaWQgdXBkYXRlQ29udGVudHMoVGV4dHVyZU1hcHBlciYsIEltYWdlKiwg
Y29uc3QgRmxvYXRTaXplJiwgY29uc3QgSW50UmVjdCYsIEJpdG1hcFRleHR1cmU6OlVwZGF0ZUNv
bnRlbnRzRmxhZyk7CisgICAgdm9pZCB1cGRhdGVDb250ZW50cyhUZXh0dXJlTWFwcGVyJiwgR3Jh
cGhpY3NMYXllciosIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0
dXJlOjpVcGRhdGVDb250ZW50c0ZsYWcpOwogCiAgICAgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2Uo
SW1hZ2UqIGltYWdlKSB7IG1faW1hZ2UgPSBpbWFnZTsgfQogCkBAIC01Miw3ICs1Miw3IEBAIHBy
aXZhdGU6CiAgICAgVGV4dHVyZU1hcHBlclRpbGVkQmFja2luZ1N0b3JlKCkgeyB9CiAKICAgICB2
b2lkIGNyZWF0ZU9yRGVzdHJveVRpbGVzSWZOZWVkZWQoY29uc3QgRmxvYXRTaXplJiBiYWNraW5n
U3RvcmVTaXplLCBjb25zdCBJbnRTaXplJiB0aWxlU2l6ZSwgYm9vbCBoYXNBbHBoYSk7Ci0gICAg
dm9pZCB1cGRhdGVDb250ZW50c0Zyb21JbWFnZUlmTmVlZGVkKFRleHR1cmVNYXBwZXIqKTsKKyAg
ICB2b2lkIHVwZGF0ZUNvbnRlbnRzRnJvbUltYWdlSWZOZWVkZWQoVGV4dHVyZU1hcHBlciYpOwog
ICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVzdGVkVHJhbnNmb3JtRm9yUmVjdChjb25zdCBG
bG9hdFJlY3QmKTsKICAgICBpbmxpbmUgRmxvYXRSZWN0IHJlY3QoKSBjb25zdAogICAgIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29t
cG9zaXRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L0Fj
Y2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmNwcAppbmRleCAyZjA4OGE1ZTlhYzRmNzA4Njgx
MzQ4YjIxMTRkYWJhOGU5ZDk3YmE2Li45YTI2ZDkyYTRiYTdjOWIwZGMwY2QzODY2ZWE1ODNiMTA0
Y2QwMzMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9BY2Nl
bGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuY3BwCkBAIC0xODcsNyAr
MTg3LDcgQEAgdm9pZCBBY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dDo6Y29tcG9zaXRlTGF5
ZXJzVG9Db250ZXh0KENvbXBvc2l0ZVB1cnBvc2UgcHUKIAogICAgIG1fdGV4dHVyZU1hcHBlci0+
YmVnaW5QYWludGluZygpOwogICAgIGRvd25jYXN0PEdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVy
PigqbV9yb290TGF5ZXIpLmxheWVyKCkucGFpbnQoKTsKLSAgICBtX2Zwc0NvdW50ZXIudXBkYXRl
RlBTQW5kRGlzcGxheShtX3RleHR1cmVNYXBwZXIuZ2V0KCkpOworICAgIG1fZnBzQ291bnRlci51
cGRhdGVGUFNBbmREaXNwbGF5KCptX3RleHR1cmVNYXBwZXIpOwogICAgIG1fdGV4dHVyZU1hcHBl
ci0+ZW5kUGFpbnRpbmcoKTsKIAogICAgIG1fY29udGV4dC0+c3dhcEJ1ZmZlcnMoKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5h
dGVkQmFja2luZ1N0b3JlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmNwcAppbmRleCA1MWRiMDhjZTM2MGJmOGFj
ZmI2MGEzZWJjODAwOGUwZjJhOTQwMGZkLi40NWRmMWE3NWQyZGNjMGE2ZmI0MjI0ZjVmNzlkNmI3
MDBhOTAyZjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRH
cmFwaGljcy9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuY3BwCkBA
IC0zMCw3ICszMCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsKIAotdm9pZCBDb29yZGluYXRlZEJhY2tpbmdTdG9yZVRpbGU6OnN3YXBCdWZmZXJzKFRl
eHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit2b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3Jl
VGlsZTo6c3dhcEJ1ZmZlcnMoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlcikKIHsKICAgICBp
ZiAoIW1fc3VyZmFjZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNDQsMTMgKzQ0LDEzIEBAIHZvaWQg
Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmVUaWxlOjpzd2FwQnVmZmVycyhUZXh0dXJlTWFwcGVyKiB0
ZXh0dXJlTWFwcGVyKQogICAgIH0KICAgICBSZWZQdHI8Qml0bWFwVGV4dHVyZT4gdGV4dHVyZSA9
IHRoaXMtPnRleHR1cmUoKTsKICAgICBpZiAoIXRleHR1cmUpIHsKLSAgICAgICAgdGV4dHVyZSA9
IHRleHR1cmVNYXBwZXItPmNyZWF0ZVRleHR1cmUoKTsKKyAgICAgICAgdGV4dHVyZSA9IHRleHR1
cmVNYXBwZXIuY3JlYXRlVGV4dHVyZSgpOwogICAgICAgICBzZXRUZXh0dXJlKHRleHR1cmUuZ2V0
KCkpOwogICAgICAgICBzaG91bGRSZXNldCA9IHRydWU7CiAgICAgfQogCi0gICAgQVNTRVJUKHRl
eHR1cmVNYXBwZXItPm1heFRleHR1cmVTaXplKCkud2lkdGgoKSA+PSBtX3RpbGVSZWN0LnNpemUo
KS53aWR0aCgpKTsKLSAgICBBU1NFUlQodGV4dHVyZU1hcHBlci0+bWF4VGV4dHVyZVNpemUoKS5o
ZWlnaHQoKSA+PSBtX3RpbGVSZWN0LnNpemUoKS5oZWlnaHQoKSk7CisgICAgQVNTRVJUKHRleHR1
cmVNYXBwZXIubWF4VGV4dHVyZVNpemUoKS53aWR0aCgpID49IG1fdGlsZVJlY3Quc2l6ZSgpLndp
ZHRoKCkpOworICAgIEFTU0VSVCh0ZXh0dXJlTWFwcGVyLm1heFRleHR1cmVTaXplKCkuaGVpZ2h0
KCkgPj0gbV90aWxlUmVjdC5zaXplKCkuaGVpZ2h0KCkpOwogICAgIGlmIChzaG91bGRSZXNldCkK
ICAgICAgICAgdGV4dHVyZS0+cmVzZXQobV90aWxlUmVjdC5zaXplKCksIG1fc3VyZmFjZS0+c3Vw
cG9ydHNBbHBoYSgpKTsKIApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRCYWNr
aW5nU3RvcmU6OnNldFNpemUoY29uc3QgRmxvYXRTaXplJiBzaXplKQogICAgIG1fcGVuZGluZ1Np
emUgPSBzaXplOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpwYWludFRpbGVz
VG9UZXh0dXJlTWFwcGVyKFZlY3RvcjxUZXh0dXJlTWFwcGVyVGlsZSo+JiB0aWxlcywgVGV4dHVy
ZU1hcHBlciogdGV4dHVyZU1hcHBlciwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRyYW5z
Zm9ybSwgZmxvYXQgb3BhY2l0eSwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQordm9pZCBDb29yZGlu
YXRlZEJhY2tpbmdTdG9yZTo6cGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcihWZWN0b3I8VGV4dHVy
ZU1hcHBlclRpbGUqPiYgdGlsZXMsIFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0sIGZsb2F0IG9wYWNpdHksIGNvbnN0IEZs
b2F0UmVjdCYgcmVjdCkKIHsKICAgICBmb3IgKGF1dG8mIHRpbGUgOiB0aWxlcykKICAgICAgICAg
dGlsZS0+cGFpbnQodGV4dHVyZU1hcHBlciwgdHJhbnNmb3JtLCBvcGFjaXR5LCBjYWxjdWxhdGVF
eHBvc2VkVGlsZUVkZ2VzKHJlY3QsIHRpbGUtPnJlY3QoKSkpOwpAQCAtMTE4LDcgKzExOCw3IEBA
IFRyYW5zZm9ybWF0aW9uTWF0cml4IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjphZGp1c3RlZFRy
YW5zZm9ybUZvclJlY3QoY29uc3QgRmxvCiAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4
OjpyZWN0VG9SZWN0KHJlY3QoKSwgdGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmIHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5n
U3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBwZXIs
IGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgm
IHRyYW5zZm9ybSwgZmxvYXQgb3BhY2l0eSkKIHsKICAgICBpZiAobV90aWxlcy5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybjsKQEAgLTE1NSwyMSArMTU1LDIxIEBAIHZvaWQgQ29vcmRpbmF0ZWRC
YWNraW5nU3RvcmU6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXIqIHRleHR1cmVN
YXBwZXIsCiAgICAgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBlcih0aWxlc1RvUGFpbnQsIHRleHR1
cmVNYXBwZXIsIGFkanVzdGVkVHJhbnNmb3JtLCBvcGFjaXR5LCByZWN0KCkpOwogfQogCi12b2lk
IENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3Qm9yZGVyKFRleHR1cmVNYXBwZXIqIHRleHR1
cmVNYXBwZXIsIGNvbnN0IENvbG9yJiBib3JkZXJDb2xvciwgZmxvYXQgYm9yZGVyV2lkdGgsIGNv
bnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIHRy
YW5zZm9ybSkKK3ZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmRyYXdCb3JkZXIoVGV4dHVy
ZU1hcHBlciYgdGV4dHVyZU1hcHBlciwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBmbG9hdCBi
b3JkZXJXaWR0aCwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1h
dGlvbk1hdHJpeCYgdHJhbnNmb3JtKQogewogICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IGFkanVz
dGVkVHJhbnNmb3JtID0gdHJhbnNmb3JtICogYWRqdXN0ZWRUcmFuc2Zvcm1Gb3JSZWN0KHRhcmdl
dFJlY3QpOwogICAgIGZvciAoYXV0byYgdGlsZSA6IG1fdGlsZXMudmFsdWVzKCkpCi0gICAgICAg
IHRleHR1cmVNYXBwZXItPmRyYXdCb3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0aWxl
LnJlY3QoKSwgYWRqdXN0ZWRUcmFuc2Zvcm0pOworICAgICAgICB0ZXh0dXJlTWFwcGVyLmRyYXdC
b3JkZXIoYm9yZGVyQ29sb3IsIGJvcmRlcldpZHRoLCB0aWxlLnJlY3QoKSwgYWRqdXN0ZWRUcmFu
c2Zvcm0pOwogfQogCi12b2lkIENvb3JkaW5hdGVkQmFja2luZ1N0b3JlOjpkcmF3UmVwYWludENv
dW50ZXIoVGV4dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlciwgaW50IHJlcGFpbnRDb3VudCwgY29u
c3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0
IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCit2b2lkIENvb3JkaW5hdGVkQmFja2lu
Z1N0b3JlOjpkcmF3UmVwYWludENvdW50ZXIoVGV4dHVyZU1hcHBlciYgdGV4dHVyZU1hcHBlciwg
aW50IHJlcGFpbnRDb3VudCwgY29uc3QgQ29sb3ImIGJvcmRlckNvbG9yLCBjb25zdCBGbG9hdFJl
Y3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiB0cmFuc2Zvcm0pCiB7
CiAgICAgVHJhbnNmb3JtYXRpb25NYXRyaXggYWRqdXN0ZWRUcmFuc2Zvcm0gPSB0cmFuc2Zvcm0g
KiBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QodGFyZ2V0UmVjdCk7CiAgICAgZm9yIChhdXRvJiB0
aWxlIDogbV90aWxlcy52YWx1ZXMoKSkKLSAgICAgICAgdGV4dHVyZU1hcHBlci0+ZHJhd051bWJl
cihyZXBhaW50Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1
c3RlZFRyYW5zZm9ybSk7CisgICAgICAgIHRleHR1cmVNYXBwZXIuZHJhd051bWJlcihyZXBhaW50
Q291bnQsIGJvcmRlckNvbG9yLCB0aWxlLnJlY3QoKS5sb2NhdGlvbigpLCBhZGp1c3RlZFRyYW5z
Zm9ybSk7CiB9CiAKLXZvaWQgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmU6OmNvbW1pdFRpbGVPcGVy
YXRpb25zKFRleHR1cmVNYXBwZXIqIHRleHR1cmVNYXBwZXIpCit2b2lkIENvb3JkaW5hdGVkQmFj
a2luZ1N0b3JlOjpjb21taXRUaWxlT3BlcmF0aW9ucyhUZXh0dXJlTWFwcGVyJiB0ZXh0dXJlTWFw
cGVyKQogewogICAgIGlmICghbV9wZW5kaW5nU2l6ZS5pc1plcm8oKSkgewogICAgICAgICBtX3Np
emUgPSBtX3BlbmRpbmdTaXplOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvU2hhcmVkL0Nv
b3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaCBiL1NvdXJjZS9XZWJL
aXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVkQmFja2luZ1N0b3JlLmgK
aW5kZXggYmI2MzY1MTk0MGJmYWE5YzgxMTUwMzFiM2UzOTczYjI0YWE3YjJlZC4uOTgwMjYyNjJh
ZTY0ZjA3OTQ3OTlkMjljNGU5ZDFiZjlhODNiNmZjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvU2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFwaGljcy9Db29yZGluYXRl
ZEJhY2tpbmdTdG9yZS5oCkBAIC00NCw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICBp
bmxpbmUgZmxvYXQgc2NhbGUoKSBjb25zdCB7IHJldHVybiBtX3NjYWxlOyB9Ci0gICAgdm9pZCBz
d2FwQnVmZmVycyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CisgICAgdm9pZCBzd2FwQnVmZmVy
cyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7CiAgICAgdm9pZCBzZXRCYWNrQnVmZmVyKGNvbnN0
IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0cjxX
ZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+IGJ1ZmZlciwgY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKIAogcHJpdmF0ZToKQEAgLTYyLDE4ICs2MiwxOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBy
ZW1vdmVBbGxUaWxlcygpOwogICAgIHZvaWQgdXBkYXRlVGlsZSh1aW50MzJfdCB0aWxlSUQsIGNv
bnN0IFdlYkNvcmU6OkludFJlY3QmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiwgUGFzc1JlZlB0
cjxXZWJDb3JlOjpDb29yZGluYXRlZFN1cmZhY2U+LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYp
OwogICAgIHN0YXRpYyBSZWY8Q29vcmRpbmF0ZWRCYWNraW5nU3RvcmU+IGNyZWF0ZSgpIHsgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUpOyB9Ci0gICAgdm9pZCBj
b21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyKik7CisgICAgdm9pZCBj
b21taXRUaWxlT3BlcmF0aW9ucyhXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJik7CiAgICAgUmVmUHRy
PFdlYkNvcmU6OkJpdG1hcFRleHR1cmU+IHRleHR1cmUoKSBjb25zdCBvdmVycmlkZTsKICAgICB2
b2lkIHNldFNpemUoY29uc3QgV2ViQ29yZTo6RmxvYXRTaXplJik7Ci0gICAgdmlydHVhbCB2b2lk
IHBhaW50VG9UZXh0dXJlTWFwcGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIqLCBjb25zdCBXZWJD
b3JlOjpGbG9hdFJlY3QmLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZs
b2F0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyKiwgY29uc3QgV2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29u
c3QgV2ViQ29yZTo6RmxvYXRSZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRy
aXgmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdlYkNv
cmU6OlRleHR1cmVNYXBwZXIqLCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpDb2xv
ciYsIGNvbnN0IFdlYkNvcmU6OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0
aW9uTWF0cml4Jikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBhaW50VG9UZXh0dXJlTWFw
cGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXImLCBjb25zdCBXZWJDb3JlOjpGbG9hdFJlY3QmLCBj
b25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0KSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd0JvcmRlcihXZWJDb3JlOjpUZXh0dXJlTWFwcGVyJiwgY29uc3Qg
V2ViQ29yZTo6Q29sb3ImLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgV2ViQ29yZTo6RmxvYXRS
ZWN0JiwgY29uc3QgV2ViQ29yZTo6VHJhbnNmb3JtYXRpb25NYXRyaXgmKSBvdmVycmlkZTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZHJhd1JlcGFpbnRDb3VudGVyKFdlYkNvcmU6OlRleHR1cmVNYXBwZXIm
LCBpbnQgcmVwYWludENvdW50LCBjb25zdCBXZWJDb3JlOjpDb2xvciYsIGNvbnN0IFdlYkNvcmU6
OkZsb2F0UmVjdCYsIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4Jikgb3ZlcnJp
ZGU7CiAKIHByaXZhdGU6CiAgICAgQ29vcmRpbmF0ZWRCYWNraW5nU3RvcmUoKQogICAgICAgICA6
IG1fc2NhbGUoMS4pCiAgICAgeyB9Ci0gICAgdm9pZCBwYWludFRpbGVzVG9UZXh0dXJlTWFwcGVy
KFZlY3RvcjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyVGlsZSo+JiwgV2ViQ29yZTo6VGV4dHVyZU1h
cHBlciosIGNvbnN0IFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQsIGNvbnN0
IFdlYkNvcmU6OkZsb2F0UmVjdCYpOworICAgIHZvaWQgcGFpbnRUaWxlc1RvVGV4dHVyZU1hcHBl
cihWZWN0b3I8V2ViQ29yZTo6VGV4dHVyZU1hcHBlclRpbGUqPiYsIFdlYkNvcmU6OlRleHR1cmVN
YXBwZXImLCBjb25zdCBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJpeCYsIGZsb2F0LCBjb25z
dCBXZWJDb3JlOjpGbG9hdFJlY3QmKTsKICAgICBXZWJDb3JlOjpUcmFuc2Zvcm1hdGlvbk1hdHJp
eCBhZGp1c3RlZFRyYW5zZm9ybUZvclJlY3QoY29uc3QgV2ViQ29yZTo6RmxvYXRSZWN0Jik7CiAg
ICAgV2ViQ29yZTo6RmxvYXRSZWN0IHJlY3QoKSBjb25zdCB7IHJldHVybiBXZWJDb3JlOjpGbG9h
dFJlY3QoV2ViQ29yZTo6RmxvYXRQb2ludDo6emVybygpLCBtX3NpemUpOyB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdyYXBoaWNzL0Nvb3JkaW5hdGVk
R3JhcGhpY3NTY2VuZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvQ29vcmRpbmF0ZWRHcmFw
aGljcy9Db29yZGluYXRlZEdyYXBoaWNzU2NlbmUuY3BwCmluZGV4IGUxNTAwZDYwYTAxZDBmMjQx
ZmE0MzQ5N2MzYThiMjU4YWIyMTFiNTAuLjBmN2UxZjIxOGJhNDk1N2Q5ODNiMDE5YzZhNjY4Zjlj
MWJhYWI1NGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9Db29yZGluYXRlZEdy
YXBoaWNzL0Nvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
U2hhcmVkL0Nvb3JkaW5hdGVkR3JhcGhpY3MvQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lLmNwcApA
QCAtMTEwLDcgKzExMCw3IEBAIHZvaWQgQ29vcmRpbmF0ZWRHcmFwaGljc1NjZW5lOjpwYWludFRv
Q3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpCiAgICAgfQogCiAgICAg
Y3VycmVudFJvb3RMYXllci0+cGFpbnQoKTsKLSAgICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5k
RGlzcGxheShtX3RleHR1cmVNYXBwZXIuZ2V0KCksIGNsaXBSZWN0LmxvY2F0aW9uKCksIG1hdHJp
eCk7CisgICAgbV9mcHNDb3VudGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkoKm1fdGV4dHVyZU1hcHBl
ciwgY2xpcFJlY3QubG9jYXRpb24oKSwgbWF0cml4KTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVu
ZENsaXAoKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVuZFBhaW50aW5nKCk7CiAKQEAgLTE0Myw3
ICsxNDMsNyBAQCB2b2lkIENvb3JkaW5hdGVkR3JhcGhpY3NTY2VuZTo6cGFpbnRUb0dyYXBoaWNz
Q29udGV4dChQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogcAogICAgICAgICBtX3RleHR1cmVNYXBw
ZXItPmRyYXdTb2xpZENvbG9yKGNsaXBSZWN0LCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBtX3Zp
ZXdCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgbGF5ZXItPnBhaW50KCk7Ci0gICAgbV9mcHNDb3Vu
dGVyLnVwZGF0ZUZQU0FuZERpc3BsYXkobV90ZXh0dXJlTWFwcGVyLmdldCgpLCBjbGlwUmVjdC5s
b2NhdGlvbigpKTsKKyAgICBtX2Zwc0NvdW50ZXIudXBkYXRlRlBTQW5kRGlzcGxheSgqbV90ZXh0
dXJlTWFwcGVyLCBjbGlwUmVjdC5sb2NhdGlvbigpKTsKICAgICBtX3RleHR1cmVNYXBwZXItPmVu
ZFBhaW50aW5nKCk7CiAgICAgbV90ZXh0dXJlTWFwcGVyLT5zZXRHcmFwaGljc0NvbnRleHQoMCk7
CiB9CkBAIC01ODQsNyArNTg0LDcgQEAgdm9pZCBDb29yZGluYXRlZEdyYXBoaWNzU2NlbmU6OnJl
bW92ZVJlbGVhc2VkSW1hZ2VCYWNraW5nc0lmTmVlZGVkKCkKIHZvaWQgQ29vcmRpbmF0ZWRHcmFw
aGljc1NjZW5lOjpjb21taXRQZW5kaW5nQmFja2luZ1N0b3JlT3BlcmF0aW9ucygpCiB7CiAgICAg
Zm9yIChhdXRvJiBiYWNraW5nU3RvcmUgOiBtX2JhY2tpbmdTdG9yZXNXaXRoUGVuZGluZ0J1ZmZl
cnMpCi0gICAgICAgIGJhY2tpbmdTdG9yZS0+Y29tbWl0VGlsZU9wZXJhdGlvbnMobV90ZXh0dXJl
TWFwcGVyLmdldCgpKTsKKyAgICAgICAgYmFja2luZ1N0b3JlLT5jb21taXRUaWxlT3BlcmF0aW9u
cygqbV90ZXh0dXJlTWFwcGVyKTsKIAogICAgIG1fYmFja2luZ1N0b3Jlc1dpdGhQZW5kaW5nQnVm
ZmVycy5jbGVhcigpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>