<?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>77716</bug_id>
          
          <creation_ts>2012-02-02 22:43:37 -0800</creation_ts>
          <short_desc>REGRESSION(r106620): It broke non ENABLE(3D_RENDERING) builds (Requested by Ossy_morning on #webkit).</short_desc>
          <delta_ts>2012-02-02 23:00:20 -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>528+ (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>
          
          <blocked>77148</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>mrobinson</cc>
    
    <cc>noam</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>548467</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 22:43:37 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/106620 broke the build:
It broke non ENABLE(3D_RENDERING) builds (Requested by Ossy_morning on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548468</commentid>
    <comment_count>1</comment_count>
      <attachid>125263</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-02 22:44:08 -0800</bug_when>
    <thetext>Created attachment 125263
ROLLOUT of r106620

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548479</commentid>
    <comment_count>2</comment_count>
      <attachid>125263</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-02 23:00:11 -0800</bug_when>
    <thetext>Comment on attachment 125263
ROLLOUT of r106620

Clearing flags on attachment: 125263

Committed r106630: &lt;http://trac.webkit.org/changeset/106630&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>548480</commentid>
    <comment_count>3</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-02-02 23:00:20 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>125263</attachid>
            <date>2012-02-02 22:44:08 -0800</date>
            <delta_ts>2012-02-02 23:00:11 -0800</delta_ts>
            <desc>ROLLOUT of r106620</desc>
            <filename>bug-77716-20120203064534.patch</filename>
            <type>text/plain</type>
            <size>67342</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTA2NjI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWExNTYzN2Y0MTk1ZGFm
NTUxNzhiN2EzZDczNDM0NWY4MTJkNzcwNS4uZDRmOGVkODhmNjdkZGFmMjc2ZmUzMmFiNDczZWFj
NjllZjI5ZDMxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyNyBAQAorMjAxMi0wMi0wMiAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjEwNjYyMC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTA2NjIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NzcxNgorCisgICAgICAgIEl0IGJyb2tlIG5vbiBFTkFCTEUoM0RfUkVOREVS
SU5HKSBidWlsZHMgKFJlcXVlc3RlZCBieQorICAgICAgICBPc3N5X21vcm5pbmcgb24gI3dlYmtp
dCkuCisKKyAgICAgICAgKiBHTlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFRhcmdldC5w
cmk6CisgICAgICAgICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L0dyYXBoaWNzQ29udGV4dC5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChHcmFwaGlj
c0NvbnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBw
ZXJDYWlyby5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1Rl
eHR1cmVNYXBwZXJHTC5jcHA6CisgICAgICAgIChFbnRyeSk6CisgICAgICAgIChEaXJlY3RseUNv
bXBvc2l0ZWRJbWFnZVJlcG9zaXRvcnkpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBl
ckdMRGF0YTo6RGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZXBvc2l0b3J5OjpmaW5kT3JDcmVhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMRGF0YTo6RGlyZWN0bHlDb21wb3Np
dGVkSW1hZ2VSZXBvc2l0b3J5OjpkZXJlZik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFw
cGVyR0xEYXRhOjpEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVJlcG9zaXRvcnk6OkRpcmVjdGx5Q29t
cG9zaXRlZEltYWdlUmVwb3NpdG9yeSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
R0xEYXRhOjpEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVJlcG9zaXRvcnk6On5EaXJlY3RseUNvbXBv
c2l0ZWRJbWFnZVJlcG9zaXRvcnkpOgorICAgICAgICAoVGV4dHVyZU1hcHBlckdMRGF0YSk6Cisg
ICAgICAgIChCaXRtYXBUZXh0dXJlR0wpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVy
ZUdMOjppc09wYXF1ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnBhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1bnBhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjppc1BhY2tlZCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBUZXh0dXJlR0w6OkJpdG1hcFRleHR1cmVHTCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyR0w6OmJlZ2luUGFpbnRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4
dHVyZUdMOjpyZXNldCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmJlZ2lu
UGFpbnQpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjplbmRQYWludCk6Cisg
ICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVHTDo6dXBk
YXRlQ29udGVudHMpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZUdMOjp1cGRhdGVS
YXdDb250ZW50cyk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OnNldENvbnRl
bnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlR0w6OmRlc3Ryb3kp
OgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlckdMOjpiaW5kU3VyZmFjZSk6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5oOgorICAgICAg
ICAoVGV4dHVyZU1hcHBlckdMKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJHTDo6
YWxsb3dTdXJmYWNlRm9yUm9vdCk6CisgICAgICAgIChCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZl
cik6CisgICAgICAgIChXZWJDb3JlOjpCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlcjo6fkJHUkEz
MlByZW11bHRpbXBsaWVkQnVmZmVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpwYWludFRvVGV4dHVyZU1hcHBlcik6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0UXQuY3BwOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3F0L1RleHR1cmVNYXBwZXJRdC5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUXQ6OmRl
c3Ryb3kpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVF0OjpyZXNldCk6CisgICAg
ICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUXQ6OmJlZ2luUGFpbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6Qml0bWFwVGV4dHVyZVF0OjplbmRQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRt
YXBUZXh0dXJlUXQ6OnVwZGF0ZUNvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRl
eHR1cmVRdDo6c2F2ZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUXQ6OnNldENv
bnRlbnRzVG9JbWFnZSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUXQ6OnBhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVF0Ojp1bnBhY2spOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dHVyZU1hcHBlclF0OjpiZWdpbkNsaXApOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlclF0OjplbmRDbGlwKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBw
ZXJRdDo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJRdDo6
VGV4dHVyZU1hcHBlclF0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJRdDo6c2V0
R3JhcGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJRdDo6Z3Jh
cGhpY3NDb250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJRdDo6YmluZFN1
cmZhY2UpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclF0OjpkcmF3VGV4dHVyZSk6
CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dHVyZU1hcHBlclF0OjpjcmVhdGVUZXh0dXJlKToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFRleHR1cmVRdDo6Qml0bWFwVGV4dHVyZVF0KToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHR1cmVNYXBwZXJRdDo6YmVnaW5QYWludGluZyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyUXQ6OmVuZFBhaW50aW5nKToKKyAgICAgICAgKEJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyUXQpOgorICAgICAgICAoV2ViQ29yZTo6QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJRdDo6
YmVnaW5QYWludCk6CisgICAgICAgIChXZWJDb3JlOjpCR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZl
clF0OjplbmRQYWludCk6CisgICAgICAgIChXZWJDb3JlOjpCR1JBMzJQcmVtdWx0aW1wbGllZEJ1
ZmZlclF0OjpkYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkJHUkEzMlByZW11bHRpbXBsaWVkQnVm
ZmVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6dWlkRm9ySW1hZ2UpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL3F0L1RleHR1cmVNYXBwZXJRdC5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoQml0bWFwVGV4dHVyZVF0KToKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFRleHR1cmVRdDo6fkJpdG1hcFRleHR1cmVRdCk6CisgICAgICAgIChXZWJDb3JlOjpC
aXRtYXBUZXh0dXJlUXQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFwVGV4dHVyZVF0
Ojppc1ZhbGlkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVRdDo6c291cmNlUmVj
dCk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlUXQ6OmlzUGFja2VkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmVRdDo6cGFpbnRlcik6CisgICAgICAgIChUZXh0dXJl
TWFwcGVyUXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVyZU1hcHBlclF0OjphbGxvd1N1cmZh
Y2VGb3JSb290KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXJRdDo6aW5pdGlhbGl6
ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUXQ6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUXQ6OmN1cnJlbnRQYWludGVyKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHA6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkJpdG1hcFRleHR1cmU6OkJpdG1hcFRleHR1cmUpOgorICAgICAgICAoV2ViQ29yZTo6Qml0bWFw
VGV4dHVyZTo6YWxsb3dPZmZsaW5lVGV4dHVyZVVwbG9hZCk6CisgICAgICAgIChCaXRtYXBUZXh0
dXJlKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnBhY2spOgorICAgICAgICAo
V2ViQ29yZTo6Qml0bWFwVGV4dHVyZTo6dW5wYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1h
cFRleHR1cmU6OmlzUGFja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OnVw
ZGF0ZVJhd0NvbnRlbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmJlZ2lu
UGFpbnRNZWRpYSk6CisgICAgICAgIChXZWJDb3JlOjpCaXRtYXBUZXh0dXJlOjpzYXZlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6OmxvY2spOgorICAgICAgICAoV2ViQ29yZTo6
Qml0bWFwVGV4dHVyZTo6dW5sb2NrKToKKyAgICAgICAgKFdlYkNvcmU6OkJpdG1hcFRleHR1cmU6
OmlzTG9ja2VkKToKKyAgICAgICAgKFRleHR1cmVNYXBwZXIpOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dHVyZU1hcHBlcjo6dmlld3BvcnRTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI6OnNldFZpZXdwb3J0U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVy
OjphbGxvd1BhcnRpYWxVcGRhdGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6
OmlzT3BlbkdMQmFja2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHR1cmVNYXBwZXI6OnNldFRy
YW5zZm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0dXJlTWFwcGVyOjp0cmFuc2Zvcm0pOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZm
ZXIuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0
dXJlTWFwcGVySW1hZ2VCdWZmZXIuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dHVyZU1hcHBlck5vZGU6OnJlbmRlckNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dHVy
ZU1hcHBlck5vZGU6OnNldENvbnRlbnRzVGlsZUJhY2tCdWZmZXIpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5oOgorICAgICAgICAoVGV4dHVy
ZU1hcHBlck5vZGUpOgorCiAyMDEyLTAyLTAyICBLZWlzaGkgSGF0dG9yaSAgPGtlaXNoaUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIENvbG9ySW5wdXRUeXBlIG5lZWRzIHRvIHVzZSBlbnN1cmVJbmxp
bmVTdHlsZURlY2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQvQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggMWJjMzkxZGZhOTAxZjJkMjBiN2VjYjExMzAz
MmU4ZDE0OWQwYjE4OS4uMWEwNDZkZjQ2MmU5NTJjNDZhZGI3OTU5Yjk5ZWEzYzZiYTBiZDhiYiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAorMjAxMi0wMi0wMiAgU2hlcmlmZiBCb3Qg
IDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9s
bGluZyBvdXQgcjEwNjYyMC4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2Vz
ZXQvMTA2NjIwCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD03NzcxNgorCisgICAgICAgIEl0IGJyb2tlIG5vbiBFTkFCTEUoM0RfUkVOREVSSU5HKSBidWls
ZHMgKFJlcXVlc3RlZCBieQorICAgICAgICBPc3N5X21vcm5pbmcgb24gI3dlYmtpdCkuCisKKyAg
ICAgICAgKiBBcGkvcXdlYmZyYW1lLmNwcDoKKyAgICAgICAgKFFXZWJGcmFtZVByaXZhdGU6OnJl
bmRlckNvbXBvc2l0ZWRMYXllcnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1BhZ2VDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlQ2xpZW50UVdpZGdldDo6c2V0Um9vdEdy
YXBoaWNzTGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUNsaWVudFFHcmFwaGljc1dpZGdl
dDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIpOgorCiAyMDEyLTAyLTAyICBObydhbSBSb3NlbnRoYWwg
IDxub2FtLnJvc2VudGhhbEBub2tpYS5jb20+CiAKICAgICAgICAgW1F0XVtUZXhtYXBdIFJlZmFj
dG9yIFRleHR1cmVNYXBwZXIgQVBJIHRvIHVzZSBJbWFnZUJ1ZmZlcnMgd2hlbiBwb3NzaWJsZS4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZwppbmRleCBlOGQzOTFlNGNjM2ZmMTY2ZGMxYzFjY2IwYzMwOTA0ZjU2MjBiYzYwLi41
ZjhmMzQ0YjdlZWE0NjM5MmRiNzExMzQ2NDhhODhmNzY3NzNlODBjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTggQEAKKzIwMTItMDItMDIgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RA
Z21haWwuY29tPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDY2MjAuCisg
ICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzEwNjYyMAorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3MTYKKworICAgICAgICBJ
dCBicm9rZSBub24gRU5BQkxFKDNEX1JFTkRFUklORykgYnVpbGRzIChSZXF1ZXN0ZWQgYnkKKyAg
ICAgICAgT3NzeV9tb3JuaW5nIG9uICN3ZWJraXQpLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0
L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TGF5ZXJUcmVlSG9z
dFByb3h5OjpwYWludFRvQ3VycmVudEdMQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUhvc3RQcm94eTo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OkxheWVyVHJlZUhvc3RQcm94eTo6Y3JlYXRlSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpMYXll
clRyZWVIb3N0UHJveHk6OmVuc3VyZVJvb3RMYXllcik6CisKIDIwMTItMDItMDIgIE5vJ2FtIFJv
c2VudGhhbCAgPG5vYW0ucm9zZW50aGFsQG5va2lhLmNvbT4KIAogICAgICAgICBbUXRdW1RleG1h
cF0gUmVmYWN0b3IgVGV4dHVyZU1hcHBlciBBUEkgdG8gdXNlIEltYWdlQnVmZmVycyB3aGVuIHBv
c3NpYmxlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBi
L1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KaW5kZXggZTJjYmFkMmE5OTBmMjUz
NWRjOGFlZWU4YmQzOGQ0NjA1Y2Y1ZmQ5Mi4uMmIxZjE0Yzk0Y2MyZDFmYjVjMTkwYjk1YzNlNTQy
M2NjNDBiYmYzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5h
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCkBAIC01NzMzLDExICs1
NzMzLDkgQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmgg
XAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlckltYWdlQnVmZmVyLmNwcCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCi0gICAgICAgIFNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5j
cHAgXAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlck5vZGUuaCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcCBcCisJU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmggXAor
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllci5oCiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5jcHAgXAogCVNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWlyby5oCkBAIC01
NzU1LDEwICs1NzUzLDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oIFwKIAlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFuaW1hdGlvbi5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5p
bWF0aW9uLmggXAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmNwcCBcCi0gICAgICAgIFNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBcCi0g
ICAgICAgIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFw
cGVyTm9kZS5jcHAgXAotICAgICAgICBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBcCisJU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcCBcCisJU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmggXAogCVNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5o
CiB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2NhaXJvL1RleHR1cmVNYXBwZXJHTENhaXJvLmNwcCBcCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9UYXJnZXQucHJpIGIvU291cmNlL1dlYkNvcmUvVGFyZ2V0LnByaQppbmRleCBhN2U1
MzQxZmZjODNjMDY3MDkzZGIyN2IzMzRlNmUxOWZlNWM0NDg1Li5mYzZmNmU2NGYzOGYzYzlhZDli
MThjMWJjNGI2NGJjMDdjN2FkZTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9UYXJnZXQu
cHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1RhcmdldC5wcmkKQEAgLTM5MzksMTkgKzM5MzksMTkg
QEAgd2luMzI6IXdpbjMyLWcrKyo6Y29udGFpbnMoUU1BS0VfSE9TVC5hcmNoLCB4ODZfNjQpOnsK
IAogY29udGFpbnMoQ09ORklHLCB0ZXhtYXApIHsKICAgICBIRUFERVJTICs9IFwKKyAgICAgICAg
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGV4dHVyZU1hcHBlclF0LmggXAogICAgICAgICBwbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvR3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9MYXllclRyYW5zZm9ybS5oIFwKICAgICAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaCBcCiAgICAgICAgIHBsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmggXAotICAgICAgICBwbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggXAogICAgICAg
ICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCBcCiAgICAgICAg
IHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oCiAK
ICAgICBTT1VSQ0VTICs9IFwKKyAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGV4dHVyZU1h
cHBlclF0LmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9MYXllclRyYW5z
Zm9ybS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBl
ci5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckFu
aW1hdGlvbi5jcHAgXAotICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlckltYWdlQnVmZmVyLmNwcCBcCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyTm9kZS5jcHAgXAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
R3JhcGhpY3NMYXllclRleHR1cmVNYXBwZXIuY3BwCiAKQEAgLTM5NTksNyArMzk1OSw2IEBAIGNv
bnRhaW5zKENPTkZJRywgdGV4bWFwKSB7CiAgICAgICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5oCiAgICAgICAgIFNPVVJDRVMgKz0gcGxhdGZv
cm0vZ3JhcGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5jcHAKICAgICAgICAgQ09ORklHICs9
IG9wZW5nbC1zaGltcwotICAgICAgICBERUZJTkVTICs9IFdURl9VU0VfVEVYVFVSRV9NQVBQRVJf
R0wKICAgICB9CiB9IGVsc2UgewogICAgIEhFQURFUlMgKz0gcGxhdGZvcm0vZ3JhcGhpY3MvcXQv
R3JhcGhpY3NMYXllclF0LmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lw
aSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCAxY2Q1NmJhOGI4ZGU4ZTc2MGMw
OTY4ZjgzZjExYmQ0MDRkNTYzNmE0Li4xMDFjODdmNjlkY2E4MWNjMGVjNDA0ZTFmYzhhMDY0YTg1
MjNkMzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291
cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCkBAIC0zNTgwLDggKzM1ODAsNiBAQAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgnLAogICAgICAgICAg
ICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyQW5pbWF0aW9uLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJBbmlt
YXRpb24uaCcsCi0gICAgICAgICAgICAncGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJJbWFnZUJ1ZmZlci5jcHAnLAotICAgICAgICAgICAgJ3BsYXRmb3JtL2dyYXBoaWNzL3Rl
eG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCcsCiAgICAgICAgICAgICAncGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcCcsCiAgICAgICAgICAgICAncGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmgnLAogICAgICAgICAgICAg
J3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllci5oJywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0dyYXBoaWNzQ29u
dGV4dC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0
LmgKaW5kZXggZjdiZWY0Zjk1ODk1OGYyYmQ3MTI0NTk4MjU3ZmNkNzljZWIxZmRjOS4uZGVhOTUw
YjFkY2E0NmQ3NjU5ZmMwOTNjZTEwY2EyODA2ZGQ0ZjQxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvR3JhcGhpY3NDb250ZXh0LmgKQEAgLTEyNCw3ICsxMjQs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgS1VSTDsKICAgICBjbGFzcyBHcmFw
aGljc0NvbnRleHQzRDsKICAgICBjbGFzcyBUZXh0UnVuOwotICAgIGNsYXNzIFRyYW5zZm9ybWF0
aW9uTWF0cml4OwogCiAgICAgZW51bSBUZXh0RHJhd2luZ01vZGUgewogICAgICAgICBUZXh0TW9k
ZUludmlzaWJsZSA9IDAsCkBAIC00MTAsMTIgKzQwOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdm9pZCBzZXRDVE0oY29uc3QgQWZmaW5lVHJhbnNmb3JtJik7CiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSBnZXRDVE0oKSBjb25zdDsKIAotI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcp
ICYmIFVTRShURVhUVVJFX01BUFBFUikKLSAgICAgICAgLy8gVGhpcyBpcyBuZWVkZWQgd2hlbiB1
c2luZyBhY2NlbGVyYXRlZC1jb21wb3NpdGluZyBpbiBzb2Z0d2FyZSBtb2RlLCBsaWtlIGluIFRl
eHR1cmVNYXBwZXIuCi0gICAgICAgIHZvaWQgY29uY2F0M0RUcmFuc2Zvcm0oY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmKTsKLSAgICAgICAgdm9pZCBzZXQzRFRyYW5zZm9ybShjb25zdCBUcmFu
c2Zvcm1hdGlvbk1hdHJpeCYpOwotICAgICAgICBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBnZXQzRFRy
YW5zZm9ybSgpIGNvbnN0OwotI2VuZGlmCiAgICAgICAgIC8vIENyZWF0ZSBhbiBpbWFnZSBidWZm
ZXIgY29tcGF0aWJsZSB3aXRoIHRoaXMgY29udGV4dCwgd2l0aCBzdWl0YWJsZSByZXNvbHV0aW9u
CiAgICAgICAgIC8vIGZvciBkcmF3aW5nIGludG8gdGhlIGJ1ZmZlciBhbmQgdGhlbiBpbnRvIHRo
aXMgY29udGV4dC4KICAgICAgICAgUGFzc093blB0cjxJbWFnZUJ1ZmZlcj4gY3JlYXRlQ29tcGF0
aWJsZUJ1ZmZlcihjb25zdCBJbnRTaXplJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyQ2Fpcm8uY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vVGV4dHVyZU1hcHBlckNhaXJvLmNw
cAppbmRleCBlNzI5NTExOTVhYWY5ZDVhNzJhZjU4MTFlYmFhMDkxY2U4NDMwMWMzLi42MWQ4YjIw
NWIxYTFkZGIyYTJiNjAyNzdmZTE3YmU5YWVjMzM2NDA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9UZXh0dXJlTWFwcGVyQ2Fpcm8uY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NhaXJvL1RleHR1cmVNYXBwZXJDYWly
by5jcHAKQEAgLTExNSw2ICsxMTUsMTEgQEAgdm9pZCBUZXh0dXJlTWFwcGVyQ2Fpcm86OmRyYXdU
ZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmUKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQogCitQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVN
YXBwZXI6OmNyZWF0ZShHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpCit7CisgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBUZXh0dXJlTWFwcGVyQ2Fpcm8pOworfQorCiBQYXNzUmVmUHRyPEJpdG1hcFRl
eHR1cmU+IFRleHR1cmVNYXBwZXJDYWlybzo6Y3JlYXRlVGV4dHVyZSgpCiB7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBCaXRtYXBUZXh0dXJlQ2Fpcm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CmluZGV4IDU4NzI5MzYzZmEyNDRlZTFjOTRiOTZjNWIzYjZhYjVlZWIzOGRlNTYuLmRkZmY2MDUx
YzRkMzUxNTFkNDk0ZGI0NGVhMjIwNDY2YmM3MTgyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuY3Bw
CkBAIC0yNjUsNiArMjY1LDU3IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKIAogICAg
IH07CiAKKyAgICBzdHJ1Y3QgRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VSZXBvc2l0b3J5IHsKKyAg
ICAgICAgc3RydWN0IEVudHJ5IHsKKyAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlOworICAgICAg
ICAgICAgaW50IHJlZkNvdW50OworICAgICAgICB9OworICAgICAgICB0eXBlZGVmIEhhc2hNYXA8
SW1hZ2VVSUQsIEVudHJ5PiBJbWFnZVRleHR1cmVNYXA7CisgICAgICAgIEltYWdlVGV4dHVyZU1h
cCBpbWFnZVRvVGV4dHVyZTsKKworICAgICAgICBHTHVpbnQgZmluZE9yQ3JlYXRlKEltYWdlVUlE
IGltYWdlLCBib29sJiBmb3VuZCkKKyAgICAgICAgeworICAgICAgICAgICAgSW1hZ2VUZXh0dXJl
TWFwOjppdGVyYXRvciBpdCA9IGltYWdlVG9UZXh0dXJlLmZpbmQoaW1hZ2UpOworICAgICAgICAg
ICAgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpdCAhPSBpbWFnZVRvVGV4dHVyZS5l
bmQoKSkgeworICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQucmVmQ291bnQrKzsKKyAgICAgICAg
ICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0LT5zZWNvbmQu
dGV4dHVyZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEVudHJ5IGVudHJ5OworICAgICAg
ICAgICAgR0xfQ01EKGdsR2VuVGV4dHVyZXMoMSwgJmVudHJ5LnRleHR1cmUpKTsKKyAgICAgICAg
ICAgIGVudHJ5LnJlZkNvdW50ID0gMTsKKyAgICAgICAgICAgIGltYWdlVG9UZXh0dXJlLmFkZChp
bWFnZSwgZW50cnkpOworICAgICAgICAgICAgcmV0dXJuIGVudHJ5LnRleHR1cmU7CisgICAgICAg
IH0KKworICAgICAgICBib29sIGRlcmVmKEltYWdlVUlEIGltYWdlKQorICAgICAgICB7CisgICAg
ICAgICAgICBIYXNoTWFwPEltYWdlVUlELCBFbnRyeT46Oml0ZXJhdG9yIGl0ID0gaW1hZ2VUb1Rl
eHR1cmUuZmluZChpbWFnZSk7CisgICAgICAgICAgICBpZiAoaXQgIT0gaW1hZ2VUb1RleHR1cmUu
ZW5kKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXQtPnNlY29uZC5yZWZDb3VudCA8IDIpIHsK
KyAgICAgICAgICAgICAgICAgICAgaW1hZ2VUb1RleHR1cmUucmVtb3ZlKGl0KTsKKyAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgRGlyZWN0
bHlDb21wb3NpdGVkSW1hZ2VSZXBvc2l0b3J5KCkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgfkRpcmVjdGx5Q29tcG9zaXRlZEltYWdlUmVwb3NpdG9yeSgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAoSW1hZ2VUZXh0dXJlTWFwOjppdGVyYXRvciBpdCA9IGltYWdlVG9UZXh0
dXJlLmJlZ2luKCk7IGl0ICE9IGltYWdlVG9UZXh0dXJlLmVuZCgpOyArK2l0KSB7CisgICAgICAg
ICAgICAgICAgR0x1aW50IHRleHR1cmUgPSBpdC0+c2Vjb25kLnRleHR1cmU7CisgICAgICAgICAg
ICAgICAgaWYgKHRleHR1cmUpCisgICAgICAgICAgICAgICAgICAgIEdMX0NNRChnbERlbGV0ZVRl
eHR1cmVzKDEsICZ0ZXh0dXJlKSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgIH0g
ZGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VzOworCiAgICAgU2hhcmVkR0xEYXRhJiBzaGFyZWRHTERh
dGEoKSBjb25zdAogICAgIHsKICAgICAgICAgcmV0dXJuICoobV9zaGFyZWRHTERhdGEuZ2V0KCkp
OwpAQCAtMjgxLDcgKzMzMiw2IEBAIHN0cnVjdCBUZXh0dXJlTWFwcGVyR0xEYXRhIHsKICAgICBp
bnQgY3VycmVudFByb2dyYW07CiAgICAgR0xpbnQgcHJldmlvdXNQcm9ncmFtOwogICAgIEdMaW50
IHByZXZpb3VzU2Npc3NvclN0YXRlOwotICAgIEdMaW50IHZpZXdwb3J0WzRdOwogICAgIFJlZlB0
cjxTaGFyZWRHTERhdGE+IG1fc2hhcmVkR0xEYXRhOwogfTsKIApAQCAtMjkyLDI1ICszNDIsNTYg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CiAgICAgdmlydHVh
bCB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmLCBib29sIG9wYXF1ZSk7CiAgICAgdm9pZCBiaW5k
KCk7CisgICAgdmlydHVhbCBQbGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludChjb25z
dCBJbnRSZWN0JiBkaXJ0eVJlY3QpOworICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludCgpOworICAg
IHZpcnR1YWwgdm9pZCBzZXRDb250ZW50c1RvSW1hZ2UoSW1hZ2UqKTsKICAgICB+Qml0bWFwVGV4
dHVyZUdMKCkgeyBkZXN0cm95KCk7IH0KICAgICB2aXJ0dWFsIHVpbnQzMl90IGlkKCkgY29uc3Qg
eyByZXR1cm4gbV9pZDsgfQorICAgIGlubGluZSBib29sIGlzT3BhcXVlKCkgY29uc3QgeyByZXR1
cm4gbV9vcGFxdWU7IH0KICAgICBpbmxpbmUgRmxvYXRTaXplIHJlbGF0aXZlU2l6ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fcmVsYXRpdmVTaXplOyB9CiAgICAgdm9pZCBzZXRUZXh0dXJlTWFwcGVyKFRl
eHR1cmVNYXBwZXJHTCogdGV4bWFwKSB7IG1fdGV4dHVyZU1hcHBlciA9IHRleG1hcDsgfQotICAg
IHZvaWQgdXBkYXRlQ29udGVudHMoSW1hZ2UqLCBjb25zdCBJbnRSZWN0JiwgY29uc3QgSW50UmVj
dCYsIFBpeGVsRm9ybWF0KTsKLSAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKGNvbnN0IHZvaWQqLCBj
b25zdCBJbnRSZWN0Jik7CisKKyAgICB2b2lkIHVwZGF0ZUNvbnRlbnRzKFBpeGVsRm9ybWF0LCBj
b25zdCBJbnRSZWN0Jiwgdm9pZCopOworICAgIHZvaWQgdXBkYXRlUmF3Q29udGVudHMoY29uc3Qg
SW50UmVjdCYsIGNvbnN0IHZvaWQqKTsKKyAgICB2b2lkIHBhY2soKQorICAgIHsKKyAgICAgICAg
Ly8gVGhpcyBpcyBjdXJyZW50bHkgYSBzdHViLgorICAgICAgICBpZiAoaXNQYWNrZWQoKSkKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV9pc1BhY2tlZCA9IHRydWU7CisgICAgfQorCisg
ICAgdm9pZCB1bnBhY2soKQorICAgIHsKKyAgICAgICAgLy8gVGhpcyBpcyBjdXJyZW50bHkgYSBz
dHViLgorICAgICAgICBpZiAoIWlzUGFja2VkKCkpCisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIG1faXNQYWNrZWQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIGlzUGFja2VkKCkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2lzUGFja2VkOworICAgIH0KIAogcHJpdmF0ZToK
ICAgICBHTHVpbnQgbV9pZDsKKyAgICBJbWFnZVVJRCBtX2ltYWdlVUlEOwogICAgIEZsb2F0U2l6
ZSBtX3JlbGF0aXZlU2l6ZTsKKyAgICBib29sIG1fb3BhcXVlOwogICAgIEludFNpemUgbV90ZXh0
dXJlU2l6ZTsKKyAgICBPd25QdHI8QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IG1fYnVmZmVy
OwogICAgIEludFJlY3QgbV9kaXJ0eVJlY3Q7CiAgICAgR0x1aW50IG1fZmJvOwogICAgIEdMdWlu
dCBtX3JibzsKICAgICBJbnRTaXplIG1fYWN0dWFsU2l6ZTsKICAgICBib29sIG1fc3VyZmFjZU5l
ZWRzUmVzZXQ7CisgICAgYm9vbCBtX2lzUGFja2VkOwogICAgIFRleHR1cmVNYXBwZXJHTCogbV90
ZXh0dXJlTWFwcGVyOwogICAgIEJpdG1hcFRleHR1cmVHTCgpCiAgICAgICAgIDogbV9pZCgwKQor
ICAgICAgICAsIG1faW1hZ2VVSUQoMCkKKyAgICAgICAgLCBtX29wYXF1ZShmYWxzZSkKICAgICAg
ICAgLCBtX2ZibygwKQogICAgICAgICAsIG1fcmJvKDApCiAgICAgICAgICwgbV9zdXJmYWNlTmVl
ZHNSZXNldCh0cnVlKQpAQCAtNDYzLDcgKzU0NCw2IEBAIHZvaWQgVGV4dHVyZU1hcHBlckdMOjpi
ZWdpblBhaW50aW5nKCkKICNlbmRpZgogICAgIGdsQ2xlYXJTdGVuY2lsKDApOwogICAgIGdsQ2xl
YXIoR0xfU1RFTkNJTF9CVUZGRVJfQklUKTsKLSAgICBnbEdldEludGVnZXJ2KEdMX1ZJRVdQT1JU
LCBkYXRhKCkudmlld3BvcnQpOwogICAgIGJpbmRTdXJmYWNlKDApOwogfQogCkBAIC01ODMsNiAr
NjYzLDcgQEAgc3RhdGljIHZvaWQgdGV4SW1hZ2UyRFJlc291cmNlU2FmZShzaXplX3Qgd2lkdGgs
IHNpemVfdCBoZWlnaHQpCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6cmVzZXQoY29uc3QgSW50U2l6
ZSYgbmV3U2l6ZSwgYm9vbCBvcGFxdWUpCiB7CiAgICAgQml0bWFwVGV4dHVyZTo6cmVzZXQobmV3
U2l6ZSwgb3BhcXVlKTsKKyAgICBtX2ltYWdlVUlEID0gMDsKICAgICBJbnRTaXplIG5ld1RleHR1
cmVTaXplID0gbmV4dFBvd2VyT2ZUd28obmV3U2l6ZSk7CiAgICAgYm9vbCBqdXN0Q3JlYXRlZCA9
IGZhbHNlOwogICAgIGlmICghbV9pZCkgewpAQCAtNjAxLDEwICs2ODIsMjggQEAgdm9pZCBCaXRt
YXBUZXh0dXJlR0w6OnJlc2V0KGNvbnN0IEludFNpemUmIG5ld1NpemUsIGJvb2wgb3BhcXVlKQog
ICAgIH0KICAgICBtX2FjdHVhbFNpemUgPSBuZXdTaXplOwogICAgIG1fcmVsYXRpdmVTaXplID0g
RmxvYXRTaXplKGZsb2F0KG5ld1NpemUud2lkdGgoKSkgLyBtX3RleHR1cmVTaXplLndpZHRoKCks
IGZsb2F0KG5ld1NpemUuaGVpZ2h0KCkpIC8gbV90ZXh0dXJlU2l6ZS5oZWlnaHQoKSk7CisgICAg
bV9vcGFxdWUgPSBvcGFxdWU7CiAgICAgbV9zdXJmYWNlTmVlZHNSZXNldCA9IHRydWU7CiB9CiAK
K1BsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBCaXRtYXBUZXh0dXJlR0w6OmJlZ2luUGFpbnQoY29u
c3QgSW50UmVjdCYgZGlydHlSZWN0KQoreworICAgIG1fYnVmZmVyID0gQkdSQTMyUHJlbXVsdGlt
cGxpZWRCdWZmZXI6OmNyZWF0ZSgpOworICAgIG1fZGlydHlSZWN0ID0gZGlydHlSZWN0OworICAg
IHJldHVybiBtX2J1ZmZlci0+YmVnaW5QYWludChkaXJ0eVJlY3QsIG1fb3BhcXVlKTsKK30KIAor
dm9pZCBCaXRtYXBUZXh0dXJlR0w6OmVuZFBhaW50KCkKK3sKKyAgICBpZiAoIW1fYnVmZmVyKQor
ICAgICAgICByZXR1cm47CisgICAgbV9idWZmZXItPmVuZFBhaW50KCk7CisgICAgdXBkYXRlQ29u
dGVudHMoQkdSQUZvcm1hdCwgbV9kaXJ0eVJlY3QsIG1fYnVmZmVyLT5kYXRhKCkpOworICAgIEdM
X0NNRChnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIG1faWQpKQorICAgIG1fYnVmZmVyLmNs
ZWFyKCk7Cit9CisKKyNpZmRlZiBURVhNQVBfT1BFTkdMX0VTXzIKIHN0YXRpYyB2b2lkIHN3aXp6
bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXplKQogewogICAg
IGludCB3aWR0aCA9IHNpemUud2lkdGgoKTsKQEAgLTYxNSwzMSArNzE0LDc5IEBAIHN0YXRpYyB2
b2lkIHN3aXp6bGVCR1JBVG9SR0JBKHVpbnQzMl90KiBkYXRhLCBjb25zdCBJbnRTaXplJiBzaXpl
KQogICAgICAgICAgICAgcFt4XSA9ICgocFt4XSA8PCAxNikgJiAweGZmMDAwMCkgfCAoKHBbeF0g
Pj4gMTYpICYgMHhmZikgfCAocFt4XSAmIDB4ZmYwMGZmMDApOwogICAgIH0KIH0KKyNlbmRpZgog
Ci12b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoY29uc3Qgdm9pZCogZGF0YSwg
Y29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCkKK3ZvaWQgQml0bWFwVGV4dHVyZUdMOjp1cGRhdGVD
b250ZW50cyhQaXhlbEZvcm1hdCBwaXhlbEZvcm1hdCwgY29uc3QgSW50UmVjdCYgcmVjdCwgdm9p
ZCogYml0cykKIHsKICAgICBHTF9DTUQoZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtX2lk
KSkKLSAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHRhcmdldFJl
Y3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53aWR0aCgpLCB0YXJnZXRSZWN0Lmhl
aWdodCgpLCBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCBkYXRhKSkKKyNpZmRlZiBURVhNQVBf
T1BFTkdMX0VTXzIKKyAgICBib29sIHNob3VsZFN3aXp6bGUgPSBmYWxzZTsKKyNlbmRpZgorCisg
ICAgR0xpbnQgZ2xGb3JtYXQgPSBHTF9SR0JBOworICAgIHN3aXRjaCAocGl4ZWxGb3JtYXQpIHsK
KyAgICBjYXNlIFJHQkFGb3JtYXQ6CisgICAgICAgIGdsRm9ybWF0ID0gR0xfUkdCQTsKKyAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBSR0JGb3JtYXQ6CisgICAgICAgIGdsRm9ybWF0ID0gR0xfUkdC
OworICAgICAgICBicmVhazsKKyAgICBjYXNlIEJHUkFGb3JtYXQ6CisjaWZkZWYgVEVYTUFQX09Q
RU5HTF9FU18yCisgICAgICAgIHNob3VsZFN3aXp6bGUgPSB0cnVlOworICAgICAgICBnbEZvcm1h
dCA9IEdMX1JHQkE7CisjZWxzZQorICAgICAgICBnbEZvcm1hdCA9IEdMX0JHUkE7CisjZW5kaWYK
KyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBCR1JGb3JtYXQ6CisjaWZkZWYgVEVYTUFQX09QRU5H
TF9FU18yCisgICAgICAgIHNob3VsZFN3aXp6bGUgPSB0cnVlOworICAgICAgICBnbEZvcm1hdCA9
IEdMX1JHQjsKKyNlbHNlCisgICAgICAgIGdsRm9ybWF0ID0gR0xfQkdSOworI2VuZGlmCisgICAg
ICAgICBicmVhazsKKyAgICB9CisKKyNpZmRlZiBURVhNQVBfT1BFTkdMX0VTXzIKKyAgICBpZiAo
c2hvdWxkU3dpenpsZSkKKyAgICAgICAgc3dpenpsZUJHUkFUb1JHQkEoc3RhdGljX2Nhc3Q8dWlu
dDMyX3QqPihiaXRzKSwgcmVjdC5zaXplKCkpOworI2VuZGlmCisgICAgR0xfQ01EKGdsVGV4U3Vi
SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLCByZWN0LngoKSwgcmVjdC55KCksIHJlY3Qud2lkdGgo
KSwgcmVjdC5oZWlnaHQoKSwgZ2xGb3JtYXQsIEdMX1VOU0lHTkVEX0JZVEUsIGJpdHMpKQogfQog
Ci12b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBjb25z
dCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBCaXRtYXBU
ZXh0dXJlOjpQaXhlbEZvcm1hdCBmb3JtYXQpCit2b2lkIEJpdG1hcFRleHR1cmVHTDo6dXBkYXRl
UmF3Q29udGVudHMoY29uc3QgSW50UmVjdCYgcmVjdCwgY29uc3Qgdm9pZCogYml0cykKIHsKLSAg
ICBpZiAoIWltYWdlKQotICAgICAgICByZXR1cm47CiAgICAgR0xfQ01EKGdsQmluZFRleHR1cmUo
R0xfVEVYVFVSRV8yRCwgbV9pZCkpCiAgICAgR0x1aW50IGdsRm9ybWF0ID0gaXNPcGFxdWUoKSA/
IEdMX1JHQiA6IEdMX1JHQkE7Ci0gICAgTmF0aXZlSW1hZ2VQdHIgZnJhbWVJbWFnZSA9IGltYWdl
LT5uYXRpdmVJbWFnZUZvckN1cnJlbnRGcmFtZSgpOwotICAgIGlmICghZnJhbWVJbWFnZSkKKyAg
ICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIHJlY3QueCgpLCByZWN0
LnkoKSwgcmVjdC53aWR0aCgpLCByZWN0LmhlaWdodCgpLCBnbEZvcm1hdCwgR0xfVU5TSUdORURf
QllURSwgYml0cykpCit9CisKK3ZvaWQgQml0bWFwVGV4dHVyZUdMOjpzZXRDb250ZW50c1RvSW1h
Z2UoSW1hZ2UqIGltYWdlKQoreworICAgIEltYWdlVUlEIHVpZCA9IGltYWdlID8gdWlkRm9ySW1h
Z2UoaW1hZ2UpIDogMDsKKyAgICBpZiAoIWltYWdlIHx8ICF1aWQpIHsKKyAgICAgICAgaWYgKG1f
aW1hZ2VVSUQpCisgICAgICAgICAgICBkZXN0cm95KCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9
CiAKLSNpZiBQTEFURk9STShRVCkKLSAgICBRSW1hZ2UgcXRJbWFnZSA9IGZyYW1lSW1hZ2UtPnRv
SW1hZ2UoKTsKLSAgICBpZiAoSW50U2l6ZShxdEltYWdlLnNpemUoKSkgIT0gc291cmNlUmVjdC5z
aXplKCkpCi0gICAgICAgIHF0SW1hZ2UgPSBxdEltYWdlLmNvcHkoc291cmNlUmVjdCk7Ci0gICAg
aWYgKGZvcm1hdCA9PSBCR1JBRm9ybWF0IHx8IGZvcm1hdCA9PSBCR1JGb3JtYXQpCi0gICAgICAg
IHN3aXp6bGVCR1JBVG9SR0JBKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3QqPihxdEltYWdlLmJp
dHMoKSksIHF0SW1hZ2Uuc2l6ZSgpKTsKLSAgICBHTF9DTUQoZ2xUZXhTdWJJbWFnZTJEKEdMX1RF
WFRVUkVfMkQsIDAsIHRhcmdldFJlY3QueCgpLCB0YXJnZXRSZWN0LnkoKSwgdGFyZ2V0UmVjdC53
aWR0aCgpLCB0YXJnZXRSZWN0LmhlaWdodCgpLCBnbEZvcm1hdCwgR0xfVU5TSUdORURfQllURSwg
cXRJbWFnZS5jb25zdEJpdHMoKSkpCi0jZW5kaWYKKyAgICBpZiAodWlkID09IG1faW1hZ2VVSUQp
CisgICAgICAgIHJldHVybjsKKyAgICBib29sIGZvdW5kID0gZmFsc2U7CisgICAgR0x1aW50IG5l
d1RleHR1cmVJRCA9IG1fdGV4dHVyZU1hcHBlci0+ZGF0YSgpLmRpcmVjdGx5Q29tcG9zaXRlZElt
YWdlcy5maW5kT3JDcmVhdGUodWlkLCBmb3VuZCk7CisgICAgaWYgKG5ld1RleHR1cmVJRCAhPSBt
X2lkKSB7CisgICAgICAgIG1faW1hZ2VVSUQgPSB1aWQ7CisgICAgICAgIGRlc3Ryb3koKTsKKyAg
ICAgICAgbV9pZCA9IG5ld1RleHR1cmVJRDsKKyAgICAgICAgcmVzZXQoaW1hZ2UtPnNpemUoKSwg
ZmFsc2UpOworICAgICAgICBpZiAoIWZvdW5kKSB7CisgICAgICAgICAgICBHcmFwaGljc0NvbnRl
eHQgY29udGV4dChiZWdpblBhaW50KEludFJlY3QoMCwgMCwgbV90ZXh0dXJlU2l6ZS53aWR0aCgp
LCBtX3RleHR1cmVTaXplLmhlaWdodCgpKSkpOworICAgICAgICAgICAgY29udGV4dC5kcmF3SW1h
Z2UoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIEludFBvaW50KDAsIDApLCBDb21wb3NpdGVD
b3B5KTsKKyAgICAgICAgICAgIGVuZFBhaW50KCk7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIHN0
YXRpYyBpbmxpbmUgVHJhbnNmb3JtYXRpb25NYXRyaXggY3JlYXRlUHJvamVjdGlvbk1hdHJpeChj
b25zdCBJbnRTaXplJiBzaXplLCBib29sIGZsaXApCkBAIC02OTAsNyArODM3LDcgQEAgdm9pZCBC
aXRtYXBUZXh0dXJlR0w6OmJpbmQoKQogCiB2b2lkIEJpdG1hcFRleHR1cmVHTDo6ZGVzdHJveSgp
CiB7Ci0gICAgaWYgKG1faWQpCisgICAgaWYgKG1faWQgJiYgKCFtX2ltYWdlVUlEIHx8ICFtX3Rl
eHR1cmVNYXBwZXItPmRhdGEoKS5kaXJlY3RseUNvbXBvc2l0ZWRJbWFnZXMuZGVyZWYobV9pbWFn
ZVVJRCkpKQogICAgICAgICBHTF9DTUQoZ2xEZWxldGVUZXh0dXJlcygxLCAmbV9pZCkpCiAKICAg
ICBpZiAobV9mYm8pCkBAIC03MjUsMTMgKzg3MiwxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJHTDo6
YmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSAqc3VyZmFjZVBvaW50ZXIpCiAgICAgQml0bWFwVGV4
dHVyZUdMKiBzdXJmYWNlID0gc3RhdGljX2Nhc3Q8Qml0bWFwVGV4dHVyZUdMKj4oc3VyZmFjZVBv
aW50ZXIpOwogCiAgICAgaWYgKCFzdXJmYWNlKSB7Ci0gICAgICAgIEludFNpemUgdmlld3BvcnRT
aXplKGRhdGEoKS52aWV3cG9ydFsyXSwgZGF0YSgpLnZpZXdwb3J0WzNdKTsKICAgICAgICAgR0xf
Q01EKGdsQmluZEZyYW1lYnVmZmVyKEdMX0ZSQU1FQlVGRkVSLCAwKSkKLSAgICAgICAgZGF0YSgp
LnByb2plY3Rpb25NYXRyaXggPSBjcmVhdGVQcm9qZWN0aW9uTWF0cml4KHZpZXdwb3J0U2l6ZSwg
dHJ1ZSk7CisgICAgICAgIGRhdGEoKS5wcm9qZWN0aW9uTWF0cml4ID0gY3JlYXRlUHJvamVjdGlv
bk1hdHJpeCh2aWV3cG9ydFNpemUoKSwgdHJ1ZSkubXVsdGlwbHkodHJhbnNmb3JtKCkpOwogICAg
ICAgICBHTF9DTUQoZ2xTdGVuY2lsRnVuYyhkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3RlbmNpbElu
ZGV4ID4gMSA/IEdMX0VRVUFMIDogR0xfQUxXQVlTLCBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuc3Rl
bmNpbEluZGV4IC0gMSwgZGF0YSgpLnNoYXJlZEdMRGF0YSgpLnN0ZW5jaWxJbmRleCAtIDEpKQog
ICAgICAgICBHTF9DTUQoZ2xTdGVuY2lsT3AoR0xfS0VFUCwgR0xfS0VFUCwgR0xfS0VFUCkpCi0g
ICAgICAgIEdMX0NNRChnbFZpZXdwb3J0KDAsIDAsIHZpZXdwb3J0U2l6ZS53aWR0aCgpLCB2aWV3
cG9ydFNpemUuaGVpZ2h0KCkpKQotICAgICAgICBkYXRhKCkuc2hhcmVkR0xEYXRhKCkuY2xpcFN0
YWNrLmFwcGVuZChJbnRSZWN0KGRhdGEoKS52aWV3cG9ydFswXSwgZGF0YSgpLnZpZXdwb3J0WzFd
LCBkYXRhKCkudmlld3BvcnRbMl0sIGRhdGEoKS52aWV3cG9ydFszXSkpOworICAgICAgICBHTF9D
TUQoZ2xWaWV3cG9ydCgwLCAwLCB2aWV3cG9ydFNpemUoKS53aWR0aCgpLCB2aWV3cG9ydFNpemUo
KS5oZWlnaHQoKSkpCisgICAgICAgIGRhdGEoKS5zaGFyZWRHTERhdGEoKS5jbGlwU3RhY2suYXBw
ZW5kKEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgdmlld3BvcnRTaXplKCkpKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtODM5LDkgKzk4NSw0IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGVUZXh0dXJlKCkKICAgICByZXR1cm4gYWRvcHRS
ZWYodGV4dHVyZSk7CiB9CiAKLVBhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBl
cjo6cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpCi17Ci0gICAgcmV0dXJuIFRleHR1cmVNYXBw
ZXJHTDo6Y3JlYXRlKCk7Ci19Ci0KIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmgKaW5kZXggMDhmYTBhZGVm
OGY4YTYwOGQ1MjA3NTk3NTU0NmQ2YTY2MzY2YTI3Yi4uMWI0MTE4NTdjNzdhZmUxYTM2N2E0YWRi
YmY4NTU3Mzk1ZTQ4YzA4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvb3BlbmdsL1RleHR1cmVNYXBwZXJHTC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL29wZW5nbC9UZXh0dXJlTWFwcGVyR0wuaApAQCAtNDMsMTcgKzQzLDE2IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUodWludDMyX3QgdGV4dHVyZSwg
Ym9vbCBvcGFxdWUsIGNvbnN0IEZsb2F0U2l6ZSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IFRy
YW5zZm9ybWF0aW9uTWF0cml4JiwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSog
bWFza1RleHR1cmUsIGJvb2wgZmxpcCk7CiAgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJp
dG1hcFRleHR1cmUqIHN1cmZhY2UpOwogICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZv
aWQgYmVnaW5QYWludGluZygpOwotICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpOwogICAg
IHZpcnR1YWwgdm9pZCBlbmRDbGlwKCk7CisgICAgdmlydHVhbCBib29sIGFsbG93U3VyZmFjZUZv
clJvb3QoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCk7CiAgICAgdmlydHVhbCBjb25zdCBjaGFyKiB0
eXBlKCkgY29uc3Q7CiAgICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hcHBlckdMPiBjcmVh
dGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlckdMKTsgfQorICAgIHZvaWQg
YmVnaW5QYWludGluZygpOworICAgIHZvaWQgZW5kUGFpbnRpbmcoKTsKICAgICB2b2lkIHNldEdy
YXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqIGNvbnRleHQpIHsgbV9jb250ZXh0ID0gY29u
dGV4dDsgfQogICAgIEdyYXBoaWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0OyB9CiAgICAgdmlydHVhbCBib29sIGlzT3BlbkdMQmFja2VkKCkgY29uc3QgeyBy
ZXR1cm4gdHJ1ZTsgfQotICAgIHZvaWQgcGxhdGZvcm1VcGRhdGVDb250ZW50cyhOYXRpdmVJbWFn
ZVB0ciwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpQaXhl
bEZvcm1hdCk7Ci0gICAgdmlydHVhbCBBY2NlbGVyYXRpb25Nb2RlIGFjY2VsZXJhdGlvbk1vZGUo
KSBjb25zdCB7IHJldHVybiBPcGVuR0xNb2RlOyB9CiAKIHByaXZhdGU6CiAgICAgYm9vbCBiZWdp
blNjaXNzb3JDbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3QgRmxvYXRSZWN0
Jik7CkBAIC02NSw2ICs2NCwxNiBAQCBwcml2YXRlOgogfTsKIAogLy8gQW4gb2Zmc2NyZWVuIGJ1
ZmZlciB0byBiZSByZW5kZXJlZCBieSBzb2Z0d2FyZS4KK2NsYXNzIEJHUkEzMlByZW11bHRpbXBs
aWVkQnVmZmVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5CR1JBMzJQcmVtdWx0aW1wbGllZEJ1ZmZlcigpIHsgfQorICAgIHZpcnR1YWwgUGxh
dGZvcm1HcmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnQoY29uc3QgSW50UmVjdCYgZGlydHlSZWN0
LCBib29sIG9wYXF1ZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludCgpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSA9IDA7CisgICAgc3RhdGljIFBhc3NPd25QdHI8QkdSQTMy
UHJlbXVsdGltcGxpZWRCdWZmZXI+IGNyZWF0ZSgpOworfTsKKwogc3RhdGljIGlubGluZSBpbnQg
bmV4dFBvd2VyT2ZUd28oaW50IG51bSkKIHsKICAgICBmb3IgKGludCBpID0gMHgxMDAwMDAwMDsg
aSA+IDA7IGkgPj49IDEpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dDNEUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKaW5kZXggNjZiYzc2ZTgxMGM0
MDFkZjQ4ZTZiNGUzOGFmMWI0MDkxZDVhMTQyZC4uNDk1YmNhZGQzMjdjMDdjODEwY2YwM2I2NWYz
ZTcwZTkxZWJmOTU4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250ZXh0M0RRdC5jcHAKQEAgLTE0Niw3ICsxNDYsNyBA
QCB2b2lkIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6cGFpbnRUb1RleHR1cmVNYXBwZXIoVGV4
dHVyZU1hcHBlciogdGV4dHVyZU1hcHBlcgogewogICAgIGJsaXRNdWx0aXNhbXBsZUZyYW1lYnVm
ZmVyQW5kUmVzdG9yZUNvbnRleHQoKTsKIAotICAgIGlmICh0ZXh0dXJlTWFwcGVyLT5hY2NlbGVy
YXRpb25Nb2RlKCkgPT0gVGV4dHVyZU1hcHBlcjo6T3BlbkdMTW9kZSkgeworICAgIGlmICh0ZXh0
dXJlTWFwcGVyLT5pc09wZW5HTEJhY2tlZCgpKSB7CiAgICAgICAgIFRleHR1cmVNYXBwZXJHTCog
dGV4bWFwR0wgPSBzdGF0aWNfY2FzdDxUZXh0dXJlTWFwcGVyR0wqPih0ZXh0dXJlTWFwcGVyKTsK
ICAgICAgICAgdGV4bWFwR0wtPmRyYXdUZXh0dXJlKG1fY29udGV4dC0+bV90ZXh0dXJlLCAhbV9j
b250ZXh0LT5tX2F0dHJzLmFscGhhLCBGbG9hdFNpemUoMSwgMSksIHRhcmdldFJlY3QsIG1hdHJp
eCwgb3BhY2l0eSwgbWFzaywgdHJ1ZSAvKiBmbGlwICovKTsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3NDb250
ZXh0UXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvcXQvR3JhcGhpY3ND
b250ZXh0UXQuY3BwCmluZGV4IDkwMDc5ZWUzMDRmYmE4MWY3NWFhZjcwZmM3OWQ3NTJjNTcxNWY1
NjUuLmVjNzNjM2ZlYjQ1NzAxNmQxYTliOTc2YTM2M2NiNzMzZTlmODQyNWMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L0dyYXBoaWNzQ29udGV4dFF0LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9HcmFwaGljc0NvbnRl
eHRRdC5jcHAKQEAgLTEzMzUsMzIgKzEzMzUsNiBAQCB2b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0
Q1RNKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtKQogICAgIG1fZGF0YS0+cCgpLT5z
ZXRXb3JsZFRyYW5zZm9ybSh0cmFuc2Zvcm0pOwogfQogCi0jaWYgRU5BQkxFKDNEX1JFTkRFUklO
RykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotVHJhbnNmb3JtYXRpb25NYXRyaXggR3JhcGhpY3ND
b250ZXh0OjpnZXQzRFRyYW5zZm9ybSgpIGNvbnN0Ci17Ci0gICAgaWYgKHBhaW50aW5nRGlzYWJs
ZWQoKSkKLSAgICAgICAgcmV0dXJuIFRyYW5zZm9ybWF0aW9uTWF0cml4KCk7Ci0KLSAgICByZXR1
cm4gcGxhdGZvcm1Db250ZXh0KCktPmNvbWJpbmVkVHJhbnNmb3JtKCk7Ci19Ci0KLXZvaWQgR3Jh
cGhpY3NDb250ZXh0Ojpjb25jYXQzRFRyYW5zZm9ybShjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJp
eCYgdHJhbnNmb3JtKQotewotICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIG1fZGF0YS0+cCgpLT5zZXRXb3JsZFRyYW5zZm9ybSh0cmFuc2Zvcm0sIHRy
dWUpOwotfQotCi12b2lkIEdyYXBoaWNzQ29udGV4dDo6c2V0M0RUcmFuc2Zvcm0oY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIHRyYW5zZm9ybSkKLXsKLSAgICBpZiAocGFpbnRpbmdEaXNhYmxl
ZCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBtX2RhdGEtPnAoKS0+c2V0V29ybGRUcmFuc2Zv
cm0odHJhbnNmb3JtLCBmYWxzZSk7Ci19Ci0jZW5kaWYKLQogdm9pZCBHcmFwaGljc0NvbnRleHQ6
OnNldFVSTEZvclJlY3QoY29uc3QgS1VSTCYsIGNvbnN0IEludFJlY3QmKQogewogICAgIG5vdElt
cGxlbWVudGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9xdC9UZXh0dXJlTWFwcGVyUXQuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvcXQvVGV4dHVyZU1hcHBlclF0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40NDY0MWNlNjM0NzFhYjQ2ZGEx
NWFiMTg3YTU1OWExZDAxN2ZiMTJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvcXQvVGV4dHVyZU1hcHBlclF0LmNwcApAQCAtMCwwICsxLDI2MyBA
QAorLyoKKyBDb3B5cmlnaHQgKEMpIDIwMTAgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBz
dWJzaWRpYXJ5KC1pZXMpCisKKyBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyB2ZXJzaW9uIDIgb2YgdGhlIExp
Y2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJy
YW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCisgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBt
b3JlIGRldGFpbHMuCisKKyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgYWxvbmcgd2l0aCB0aGlzIGxpYnJh
cnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUXQuaCIKKworI2luY2x1ZGUgPFF0Q29yZS9x
ZGVidWcuaD4KKyNpbmNsdWRlIDxRdEd1aS9xcGFpbnRlbmdpbmUuaD4KKyNpbmNsdWRlIDxRdEd1
aS9xcGl4bWFwLmg+CisKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjIGluY2x1ZGUgIm9w
ZW5nbC9UZXh0dXJlTWFwcGVyR0wuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K3ZvaWQgQml0bWFwVGV4dHVyZVF0OjpkZXN0cm95KCkKK3sKKyAgICBpZiAobV9waXhtYXAucGFp
bnRpbmdBY3RpdmUoKSkKKyAgICAgICAgcUZhdGFsKCJEZXN0cm95aW5nIGFuIGFjdGl2ZSBwaXht
YXAiKTsKKyAgICBtX3BpeG1hcCA9IFFQaXhtYXAoKTsKK30KKwordm9pZCBCaXRtYXBUZXh0dXJl
UXQ6OnJlc2V0KGNvbnN0IEludFNpemUmIHNpemUsIGJvb2wgaXNPcGFxdWUpCit7CisgICAgQml0
bWFwVGV4dHVyZTo6cmVzZXQoc2l6ZSwgaXNPcGFxdWUpOworCisgICAgaWYgKHNpemUud2lkdGgo
KSA+IG1fcGl4bWFwLnNpemUoKS53aWR0aCgpIHx8IHNpemUuaGVpZ2h0KCkgPiBtX3BpeG1hcC5z
aXplKCkuaGVpZ2h0KCkgfHwgbV9waXhtYXAuaXNOdWxsKCkpCisgICAgICAgIG1fcGl4bWFwID0g
UVBpeG1hcChzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOworICAgIGlmICghaXNPcGFxdWUp
CisgICAgICAgIG1fcGl4bWFwLmZpbGwoUXQ6OnRyYW5zcGFyZW50KTsKK30KKworUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIEJpdG1hcFRleHR1cmVRdDo6YmVnaW5QYWludChjb25zdCBJbnRSZWN0
JiBkaXJ0eVJlY3QpCit7CisgICAgbV9wYWludGVyLmJlZ2luKCZtX3BpeG1hcCk7CisgICAgVGV4
dHVyZU1hcHBlclF0Ojppbml0aWFsaXplKCZtX3BhaW50ZXIpOworICAgIG1fcGFpbnRlci5zZXRD
b21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0aW9uTW9kZV9DbGVhcik7CisgICAgbV9w
YWludGVyLmZpbGxSZWN0KFFSZWN0KGRpcnR5UmVjdCksIFF0Ojp0cmFuc3BhcmVudCk7CisgICAg
bV9wYWludGVyLnNldENvbXBvc2l0aW9uTW9kZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1Nv
dXJjZU92ZXIpOworICAgIHJldHVybiAmbV9wYWludGVyOworfQorCit2b2lkIEJpdG1hcFRleHR1
cmVRdDo6ZW5kUGFpbnQoKQoreworICAgIG1fcGFpbnRlci5lbmQoKTsKK30KKwordm9pZCBCaXRt
YXBUZXh0dXJlUXQ6OnVwZGF0ZUNvbnRlbnRzKFBpeGVsRm9ybWF0IHBpeGVsRm9ybWF0LCBjb25z
dCBJbnRSZWN0JiByZWN0LCB2b2lkKiBiaXRzKQoreworICAgIG1fcGFpbnRlci5iZWdpbigmbV9w
aXhtYXApOworICAgIFFJbWFnZTo6Rm9ybWF0IHF0Rm9ybWF0ID0gUUltYWdlOjpGb3JtYXRfQVJH
QjMyX1ByZW11bHRpcGxpZWQ7CisgICAgaWYgKHBpeGVsRm9ybWF0ID09IEJHUkZvcm1hdCB8fCBw
aXhlbEZvcm1hdCA9PSBSR0JGb3JtYXQpCisgICAgICAgIHF0Rm9ybWF0ID0gUUltYWdlOjpGb3Jt
YXRfUkdCMzI7CisgICAgUUltYWdlIGltYWdlKHN0YXRpY19jYXN0PHVjaGFyKj4oYml0cyksIHJl
Y3Qud2lkdGgoKSwgcmVjdC5oZWlnaHQoKSwgcXRGb3JtYXQpOworICAgIGlmIChwaXhlbEZvcm1h
dCA9PSBCR1JGb3JtYXQgfHwgcGl4ZWxGb3JtYXQgPT0gQkdSQUZvcm1hdCkKKyAgICAgICAgaW1h
Z2UgPSBpbWFnZS5yZ2JTd2FwcGVkKCk7CisgICAgbV9wYWludGVyLnNldENvbXBvc2l0aW9uTW9k
ZShRUGFpbnRlcjo6Q29tcG9zaXRpb25Nb2RlX1NvdXJjZSk7CisgICAgbV9wYWludGVyLmRyYXdJ
bWFnZShyZWN0LCBpbWFnZSk7CisgICAgbV9wYWludGVyLmVuZCgpOworfQorCitib29sIEJpdG1h
cFRleHR1cmVRdDo6c2F2ZShjb25zdCBTdHJpbmcmIHBhdGgpCit7CisgICAgcmV0dXJuIG1fcGl4
bWFwLnNhdmUocGF0aCwgIlBORyIpOworfQorCit2b2lkIEJpdG1hcFRleHR1cmVRdDo6c2V0Q29u
dGVudHNUb0ltYWdlKEltYWdlKiBpbWFnZSkKK3sKKyAgICBpZiAoIWltYWdlKQorICAgICAgICBy
ZXR1cm47CisgICAgY29uc3QgUVBpeG1hcCogcGl4bWFwID0gaW1hZ2UtPm5hdGl2ZUltYWdlRm9y
Q3VycmVudEZyYW1lKCk7CisgICAgaWYgKCFwaXhtYXApCisgICAgICAgIHJldHVybjsKKyAgICBC
aXRtYXBUZXh0dXJlOjpyZXNldChwaXhtYXAtPnNpemUoKSwgIXBpeG1hcC0+aGFzQWxwaGFDaGFu
bmVsKCkpOworICAgIG1fcGl4bWFwID0gKnBpeG1hcDsKK30KKwordm9pZCBCaXRtYXBUZXh0dXJl
UXQ6OnBhY2soKQoreworICAgIGlmIChtX3BpeG1hcC5pc051bGwoKSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV9pbWFnZSA9IG1fcGl4bWFwLnRvSW1hZ2UoKTsKKyAgICBtX3BpeG1hcCA9IFFQ
aXhtYXAoKTsKKyAgICBtX2lzUGFja2VkID0gdHJ1ZTsKK30KKwordm9pZCBCaXRtYXBUZXh0dXJl
UXQ6OnVucGFjaygpCit7CisgICAgbV9pc1BhY2tlZCA9IGZhbHNlOworICAgIGlmIChtX2ltYWdl
LmlzTnVsbCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3BpeG1hcCA9IFFQaXhtYXA6OmZy
b21JbWFnZShtX2ltYWdlKTsKKyAgICBtX2ltYWdlID0gUUltYWdlKCk7Cit9CisKK3ZvaWQgVGV4
dHVyZU1hcHBlclF0OjpiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJp
eCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQoreworICAgICBRUGFpbnRlciogcGFpbnRlciA9IGN1
cnJlbnRQYWludGVyKCk7CisgICAgIHBhaW50ZXItPnNhdmUoKTsKKyAgICAgUVRyYW5zZm9ybSBw
cmV2VHJhbnNmb3JtID0gcGFpbnRlci0+dHJhbnNmb3JtKCk7CisgICAgIHBhaW50ZXItPnNldFRy
YW5zZm9ybShtYXRyaXgsIGZhbHNlKTsKKyAgICAgcGFpbnRlci0+c2V0Q2xpcFJlY3QocmVjdCk7
CisgICAgIHBhaW50ZXItPnNldFRyYW5zZm9ybShwcmV2VHJhbnNmb3JtLCBmYWxzZSk7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlclF0OjplbmRDbGlwKCkKK3sKKyAgICBjdXJyZW50UGFpbnRlcigp
LT5yZXN0b3JlKCk7Cit9CisKK0ludFNpemUgVGV4dHVyZU1hcHBlclF0Ojp2aWV3cG9ydFNpemUo
KSBjb25zdAoreworICAgIHJldHVybiBJbnRTaXplKG1fcGFpbnRlci0+ZGV2aWNlKCktPndpZHRo
KCksIG1fcGFpbnRlci0+ZGV2aWNlKCktPmhlaWdodCgpKTsKK30KKworCitUZXh0dXJlTWFwcGVy
UXQ6OlRleHR1cmVNYXBwZXJRdCgpCisgICAgOiBtX2N1cnJlbnRTdXJmYWNlKDApCit7Cit9CisK
K3ZvaWQgVGV4dHVyZU1hcHBlclF0OjpzZXRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0
KiBjb250ZXh0KQoreworICAgIG1fY29udGV4dCA9IGNvbnRleHQ7CisgICAgbV9wYWludGVyID0g
Y29udGV4dCA/IGNvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpIDogMDsKKyAgICBpbml0aWFsaXpl
KG1fcGFpbnRlcik7Cit9CisKK0dyYXBoaWNzQ29udGV4dCogVGV4dHVyZU1hcHBlclF0OjpncmFw
aGljc0NvbnRleHQoKQoreworICAgIHJldHVybiBtX2NvbnRleHQ7Cit9CisKK3ZvaWQgVGV4dHVy
ZU1hcHBlclF0OjpiaW5kU3VyZmFjZShCaXRtYXBUZXh0dXJlKiBzdXJmYWNlKQoreworICAgIGlm
IChtX2N1cnJlbnRTdXJmYWNlID09IHN1cmZhY2UpCisgICAgICAgIHJldHVybjsKKyAgICBpZiAo
bV9jdXJyZW50U3VyZmFjZSkKKyAgICAgICAgbV9jdXJyZW50U3VyZmFjZS0+bV9wYWludGVyLmVu
ZCgpOworICAgIGlmICghc3VyZmFjZSkgeworICAgICAgICBtX2N1cnJlbnRTdXJmYWNlID0gMDsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBCaXRtYXBUZXh0dXJlUXQqIHN1cmZhY2VRdCA9
IHN0YXRpY19jYXN0PEJpdG1hcFRleHR1cmVRdCo+KHN1cmZhY2UpOworICAgIGlmICghc3VyZmFj
ZVF0LT5tX3BhaW50ZXIuaXNBY3RpdmUoKSkKKyAgICAgICAgc3VyZmFjZVF0LT5tX3BhaW50ZXIu
YmVnaW4oJnN1cmZhY2VRdC0+bV9waXhtYXApOworICAgIG1fY3VycmVudFN1cmZhY2UgPSBzdXJm
YWNlUXQ7Cit9CisKKwordm9pZCBUZXh0dXJlTWFwcGVyUXQ6OmRyYXdUZXh0dXJlKGNvbnN0IEJp
dG1hcFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
VHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFw
VGV4dHVyZSogbWFza1RleHR1cmUpCit7CisgICAgY29uc3QgQml0bWFwVGV4dHVyZVF0JiB0ZXh0
dXJlUXQgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlUXQmPih0ZXh0dXJlKTsKKyAg
ICBRUGFpbnRlciogcGFpbnRlciA9IG1fcGFpbnRlcjsKKyAgICBRUGl4bWFwIHBpeG1hcCA9IHRl
eHR1cmVRdC5tX3BpeG1hcDsKKyAgICBpZiAobV9jdXJyZW50U3VyZmFjZSkKKyAgICAgICAgcGFp
bnRlciA9ICZtX2N1cnJlbnRTdXJmYWNlLT5tX3BhaW50ZXI7CisKKyAgICBpZiAobWFza1RleHR1
cmUgJiYgbWFza1RleHR1cmUtPmlzVmFsaWQoKSkgeworICAgICAgICBjb25zdCBCaXRtYXBUZXh0
dXJlUXQqIG1hc2sgPSBzdGF0aWNfY2FzdDxjb25zdCBCaXRtYXBUZXh0dXJlUXQqPihtYXNrVGV4
dHVyZSk7CisgICAgICAgIFFQaXhtYXAgaW50ZXJtZWRpYXRlUGl4bWFwKHBpeG1hcC5zaXplKCkp
OworICAgICAgICBpbnRlcm1lZGlhdGVQaXhtYXAuZmlsbChRdDo6dHJhbnNwYXJlbnQpOworICAg
ICAgICBRUGFpbnRlciBtYXNrUGFpbnRlcigmaW50ZXJtZWRpYXRlUGl4bWFwKTsKKyAgICAgICAg
bWFza1BhaW50ZXIuc2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVyOjpDb21wb3NpdGlvbk1vZGVf
U291cmNlKTsKKyAgICAgICAgbWFza1BhaW50ZXIuZHJhd1BpeG1hcCgwLCAwLCBwaXhtYXApOwor
ICAgICAgICBtYXNrUGFpbnRlci5zZXRDb21wb3NpdGlvbk1vZGUoUVBhaW50ZXI6OkNvbXBvc2l0
aW9uTW9kZV9EZXN0aW5hdGlvbkluKTsKKyAgICAgICAgbWFza1BhaW50ZXIuZHJhd1BpeG1hcChR
UmVjdCgwLCAwLCBwaXhtYXAud2lkdGgoKSwgcGl4bWFwLmhlaWdodCgpKSwgbWFzay0+bV9waXht
YXAsIG1hc2stPnNvdXJjZVJlY3QoKSk7CisgICAgICAgIG1hc2tQYWludGVyLmVuZCgpOworICAg
ICAgICBwaXhtYXAgPSBpbnRlcm1lZGlhdGVQaXhtYXA7CisgICAgfQorCisgICAgY29uc3QgcXJl
YWwgcHJldk9wYWNpdHkgPSBwYWludGVyLT5vcGFjaXR5KCk7CisgICAgY29uc3QgUVRyYW5zZm9y
bSBwcmV2VHJhbnNmb3JtID0gcGFpbnRlci0+dHJhbnNmb3JtKCk7CisgICAgcGFpbnRlci0+c2V0
T3BhY2l0eShvcGFjaXR5KTsKKyAgICBwYWludGVyLT5zZXRUcmFuc2Zvcm0obWF0cml4LCB0cnVl
KTsKKyAgICBwYWludGVyLT5kcmF3UGl4bWFwKHRhcmdldFJlY3QsIHBpeG1hcCwgRmxvYXRSZWN0
KHRleHR1cmVRdC5zb3VyY2VSZWN0KCkpKTsKKyAgICBwYWludGVyLT5zZXRUcmFuc2Zvcm0ocHJl
dlRyYW5zZm9ybSk7CisgICAgcGFpbnRlci0+c2V0T3BhY2l0eShwcmV2T3BhY2l0eSk7Cit9CisK
K1Bhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKEdyYXBoaWNz
Q29udGV4dCogY29udGV4dCkKK3sKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisgICAgaWYg
KGNvbnRleHQgJiYgY29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPnBhaW50RW5naW5lKCktPnR5
cGUoKSA9PSBRUGFpbnRFbmdpbmU6Ok9wZW5HTDIpCisgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgVGV4dHVyZU1hcHBlckdMKTsKKyNlbmRpZgorICAgIHJldHVybiBhZG9wdFB0cihuZXcgVGV4
dHVyZU1hcHBlclF0KTsKK30KKworUGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBUZXh0dXJlTWFw
cGVyUXQ6OmNyZWF0ZVRleHR1cmUoKQoreworICAgIHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFw
VGV4dHVyZVF0KCkpOworfQorCitCaXRtYXBUZXh0dXJlUXQ6OkJpdG1hcFRleHR1cmVRdCgpCisg
ICAgOiBtX2lzUGFja2VkKGZhbHNlKQoreworCit9CisKK3ZvaWQgVGV4dHVyZU1hcHBlclF0Ojpi
ZWdpblBhaW50aW5nKCkKK3sKKyAgICBtX3BhaW50ZXItPnNhdmUoKTsKK30KKwordm9pZCBUZXh0
dXJlTWFwcGVyUXQ6OmVuZFBhaW50aW5nKCkKK3sKKyAgICBtX3BhaW50ZXItPnJlc3RvcmUoKTsK
K30KKworI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKK2NsYXNzIEJHUkEzMlByZW11bHRpbXBs
aWVkQnVmZmVyUXQgOiBwdWJsaWMgQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXIgeworcHVibGlj
OgorICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnQoY29uc3Qg
SW50UmVjdCYgcmVjdCwgYm9vbCBvcGFxdWUpCisgICAgeworICAgICAgICAvLyBtX2ltYWdlIGlz
IG9ubHkgdXNpbmcgZHVyaW5nIHBhaW50LCBpdCdzIHNhZmUgdG8gb3ZlcnJpZGUgaXQuCisgICAg
ICAgIG1faW1hZ2UgPSBRSW1hZ2UocmVjdC5zaXplKCkud2lkdGgoKSwgcmVjdC5zaXplKCkuaGVp
Z2h0KCksIG9wYXF1ZSA/IFFJbWFnZTo6Rm9ybWF0X1JHQjMyIDogUUltYWdlOjpGb3JtYXRfQVJH
QjMyX1ByZW11bHRpcGxpZWQpOworICAgICAgICBpZiAoIW9wYXF1ZSkKKyAgICAgICAgICAgIG1f
aW1hZ2UuZmlsbCgwKTsKKyAgICAgICAgbV9wYWludGVyLmJlZ2luKCZtX2ltYWdlKTsKKyAgICAg
ICAgVGV4dHVyZU1hcHBlclF0Ojppbml0aWFsaXplKCZtX3BhaW50ZXIpOworICAgICAgICBtX3Bh
aW50ZXIudHJhbnNsYXRlKC1yZWN0LngoKSwgLXJlY3QueSgpKTsKKyAgICAgICAgcmV0dXJuICZt
X3BhaW50ZXI7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50KCkgeyBtX3BhaW50
ZXIuZW5kKCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQqIGRhdGEoKSB7IHJldHVybiBtX2ltYWdlLmJp
dHMoKTsgfQorCitwcml2YXRlOgorICAgIFFQYWludGVyIG1fcGFpbnRlcjsKKyAgICBRSW1hZ2Ug
bV9pbWFnZTsKK307CisKK1Bhc3NPd25QdHI8QkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXI+IEJH
UkEzMlByZW11bHRpbXBsaWVkQnVmZmVyOjpjcmVhdGUoKQoreworICAgIHJldHVybiBhZG9wdFB0
cihuZXcgQkdSQTMyUHJlbXVsdGltcGxpZWRCdWZmZXJRdCgpKTsKK30KKwordWludDY0X3QgdWlk
Rm9ySW1hZ2UoSW1hZ2UqIGltYWdlKQoreworICAgIHJldHVybiBpbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKS0+c2VyaWFsTnVtYmVyKCk7Cit9CisjZW5kaWYKK307CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UZXh0dXJlTWFwcGVyUXQu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0L1RleHR1cmVNYXBwZXJRdC5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjA4ZmVlMDNmMWQxNGU2ODE3ZWM1YzE5NzljYzk4YTRiMGJlMDZhYzAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC9UZXh0
dXJlTWFwcGVyUXQuaApAQCAtMCwwICsxLDg3IEBACisvKgorIENvcHlyaWdodCAoQykgMjAxMCBO
b2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKKworIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyBt
b2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YworIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBh
bnkgbGF0ZXIgdmVyc2lvbi4KKworIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUg
aG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElC
LiAgSWYgbm90LCB3cml0ZSB0bworIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgInRleG1hcC9UZXh0dXJlTWFwcGVyLmgiCisKKyNpZm5k
ZWYgVGV4dHVyZU1hcHBlclF0X2gKKyNkZWZpbmUgVGV4dHVyZU1hcHBlclF0X2gKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBCaXRtYXBUZXh0dXJlUXQgOiBwdWJsaWMgQml0bWFwVGV4
dHVyZSB7CisgICAgZnJpZW5kIGNsYXNzIFRleHR1cmVNYXBwZXJRdDsKK3B1YmxpYzoKKyAgICBC
aXRtYXBUZXh0dXJlUXQoKTsKKyAgICB+Qml0bWFwVGV4dHVyZVF0KCkgeyBkZXN0cm95KCk7IH0K
KyAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpOworICAgIHZpcnR1YWwgSW50U2l6ZSBzaXplKCkg
Y29uc3QgeyByZXR1cm4gSW50U2l6ZShtX3BpeG1hcC53aWR0aCgpLCBtX3BpeG1hcC5oZWlnaHQo
KSk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcmVzZXQoY29uc3QgSW50U2l6ZSYsIGJvb2wgb3BhcXVl
KTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtR3JhcGhpY3NDb250ZXh0KiBiZWdpblBhaW50KGNvbnN0
IEludFJlY3QmIGRpcnR5UmVjdCk7CisgICAgdmlydHVhbCB2b2lkIGVuZFBhaW50KCk7CisgICAg
dmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopOworICAgIHZpcnR1YWwgYm9v
bCBzYXZlKGNvbnN0IFN0cmluZyYgcGF0aCk7CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQoKSBj
b25zdCB7IHJldHVybiAhbV9waXhtYXAuaXNOdWxsKCkgfHwgIW1faW1hZ2UuaXNOdWxsKCk7IH0K
KyAgICBJbnRSZWN0IHNvdXJjZVJlY3QoKSBjb25zdCB7IHJldHVybiBJbnRSZWN0KDAsIDAsIGNv
bnRlbnRTaXplKCkud2lkdGgoKSwgY29udGVudFNpemUoKS5oZWlnaHQoKSk7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgcGFjaygpOworICAgIHZpcnR1YWwgdm9pZCB1bnBhY2soKTsKKyAgICB2aXJ0dWFs
IGJvb2wgaXNQYWNrZWQoKSBjb25zdCB7IHJldHVybiBtX2lzUGFja2VkOyB9CisgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUNvbnRlbnRzKFBpeGVsRm9ybWF0LCBjb25zdCBJbnRSZWN0Jiwgdm9pZCog
Yml0cyk7CisKKyAgICBRUGFpbnRlciogcGFpbnRlcigpIHsgcmV0dXJuICZtX3BhaW50ZXI7IH0K
KworcHJpdmF0ZToKKyAgICBRUGFpbnRlciBtX3BhaW50ZXI7CisgICAgUVBpeG1hcCBtX3BpeG1h
cDsKKyAgICBRSW1hZ2UgbV9pbWFnZTsKKyAgICBib29sIG1faXNQYWNrZWQ7Cit9OworCitjbGFz
cyBUZXh0dXJlTWFwcGVyUXQgOiBwdWJsaWMgVGV4dHVyZU1hcHBlciB7CitwdWJsaWM6CisgICAg
VGV4dHVyZU1hcHBlclF0KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZHJhd1RleHR1cmUoY29uc3Qg
Qml0bWFwVGV4dHVyZSYsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNm
b3JtYXRpb25NYXRyaXgmLCBmbG9hdCBvcGFjaXR5LCBjb25zdCBCaXRtYXBUZXh0dXJlKiBtYXNr
VGV4dHVyZSk7CisgICAgdmlydHVhbCB2b2lkIGJpbmRTdXJmYWNlKEJpdG1hcFRleHR1cmUqIHN1
cmZhY2UpOworICAgIHZpcnR1YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25N
YXRyaXgmLCBjb25zdCBGbG9hdFJlY3QmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kQ2xpcCgpOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250ZXh0Kik7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpOworICAgIHZpcnR1
YWwgYm9vbCBhbGxvd1N1cmZhY2VGb3JSb290KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gY3JlYXRlVGV4dHVyZSgpOworICAg
IHZpcnR1YWwgSW50U2l6ZSB2aWV3cG9ydFNpemUoKSBjb25zdDsKKyAgICB2aXJ0dWFsIHZvaWQg
YmVnaW5QYWludGluZygpOworICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpOworCisgICAg
c3RhdGljIHZvaWQgaW5pdGlhbGl6ZShRUGFpbnRlciogcGFpbnRlcikKKyAgICB7CisgICAgICAg
IGlmIChwYWludGVyKQorICAgICAgICAgICAgcGFpbnRlci0+c2V0UmVuZGVySGludHMoUVBhaW50
ZXI6OkFudGlhbGlhc2luZyB8IFFQYWludGVyOjpTbW9vdGhQaXhtYXBUcmFuc2Zvcm0sIGZhbHNl
KTsKKyAgICB9CisKKyAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBjcmVhdGUo
KSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlclF0KTsgfQorcHJpdmF0ZToKKyAg
ICBpbmxpbmUgUVBhaW50ZXIqIGN1cnJlbnRQYWludGVyKCkgeyByZXR1cm4gbV9jdXJyZW50U3Vy
ZmFjZSA/IG1fY3VycmVudFN1cmZhY2UtPnBhaW50ZXIoKSA6IG1fcGFpbnRlcjsgfQorCisgICAg
UVBhaW50ZXIqIG1fcGFpbnRlcjsKKyAgICBHcmFwaGljc0NvbnRleHQqIG1fY29udGV4dDsKKyAg
ICBSZWZQdHI8Qml0bWFwVGV4dHVyZVF0PiBtX2N1cnJlbnRTdXJmYWNlOworfTsKKworfQorI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXht
YXAvVGV4dHVyZU1hcHBlci5jcHAKaW5kZXggNWU1MjhkNDZiYjM3ZTZjMDQ4Nzk0ZmQ3MTUwYzlm
YmVkNzUxODdhNC4uZGQzM2YwZDJhNTQxYzFiMTQ3NjU3MjQzM2FlM2Y0NmNjNTY5ZDI1MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVyLmNwcApAQCAtMjAsOCArMjAsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlRleHR1cmVNYXBwZXIuaCIKIAotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJJbWFn
ZUJ1ZmZlci5oIgotCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKSAmJiBVU0UoVEVY
VFVSRV9NQVBQRVIpCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTczLDEzICs3MSw1IEBAIFBh
c3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9t
UG9vbChjb25zdCBJbnRTaXplJiBzCiAgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIAot
Ci1QYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShBY2NlbGVy
YXRpb25Nb2RlIG1vZGUpCi17Ci0gICAgaWYgKG1vZGUgPT0gU29mdHdhcmVNb2RlKQotICAgICAg
ICByZXR1cm4gVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpjcmVhdGUoKTsKLSAgICByZXR1cm4g
cGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpOwotfQotCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5o
CmluZGV4IDhlMmU5ZjdlMzZiZDJiNDFjZWFjMjlmYjBhMzNiMWI2ZDQ0MzU5ODQuLmQ2NmZlMmZi
NGM5NTU1NWUwMTBmNDRkMTI5MzBmZmNjOWJjZmVlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuaApAQCAtNDcs
MzEgKzQ3LDQ2IEBAIGNsYXNzIFRleHR1cmVNYXBwZXI7CiBjbGFzcyBCaXRtYXBUZXh0dXJlICA6
IHB1YmxpYyBSZWZDb3VudGVkPEJpdG1hcFRleHR1cmU+IHsKIHB1YmxpYzoKICAgICBlbnVtIFBp
eGVsRm9ybWF0IHsgQkdSQUZvcm1hdCwgUkdCQUZvcm1hdCwgQkdSRm9ybWF0LCBSR0JGb3JtYXQg
fTsKLSAgICBCaXRtYXBUZXh0dXJlKCkKLSAgICAgICAgOiBtX2lzT3BhcXVlKHRydWUpCi0gICAg
ewotICAgIH0KLQorICAgIEJpdG1hcFRleHR1cmUoKSA6IG1fbG9ja0NvdW50KDApIHt9CiAgICAg
dmlydHVhbCB+Qml0bWFwVGV4dHVyZSgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkg
eyB9CiAKKyAgICB2aXJ0dWFsIGJvb2wgYWxsb3dPZmZsaW5lVGV4dHVyZVVwbG9hZCgpIGNvbnN0
IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBJbnRTaXplIHNpemUoKSBjb25zdCA9IDA7
Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNvbnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYs
IGNvbnN0IEludFJlY3QmLCBCaXRtYXBUZXh0dXJlOjpQaXhlbEZvcm1hdCkgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiwgY29uc3QgSW50UmVjdCYpID0g
MDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNWYWxpZCgpIGNvbnN0ID0gMDsKLQogICAgIHZpcnR1YWwg
aW50IGJwcCgpIGNvbnN0IHsgcmV0dXJuIDMyOyB9CisgICAgdmlydHVhbCBib29sIGlzVmFsaWQo
KSBjb25zdCA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlc2V0KGNvbnN0IEludFNpemUmIHNpemUs
IGJvb2wgb3BhcXVlID0gZmFsc2UpCiAgICAgewogICAgICAgICBtX2lzT3BhcXVlID0gb3BhcXVl
OwogICAgICAgICBtX2NvbnRlbnRTaXplID0gc2l6ZTsKICAgICB9CiAKKyAgICB2aXJ0dWFsIHZv
aWQgcGFjaygpIHsgfQorICAgIHZpcnR1YWwgdm9pZCB1bnBhY2soKSB7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNQYWNrZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdmlydHVhbCBQ
bGF0Zm9ybUdyYXBoaWNzQ29udGV4dCogYmVnaW5QYWludChjb25zdCBJbnRSZWN0JiBkaXJ0eVJl
Y3QpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5kUGFpbnQoKSA9IDA7CisKKyAgICAvLyBGb3Ig
cGVyZm9ybWFuY2UgcmVhc29ucywgQml0bWFwVGV4dHVyZSBtaWdodCBtb2RpZnkgdGhlIGJpdHMg
ZGlyZWN0bHkgKHN3aXp6bGUpLgorICAgIC8vIFRodXMsIHRoaXMgbWV0aG9kIGlzIG9ubHkgcmVj
b21tZW5kZWQgZm9yIGJ1ZmZlciB1cGRhdGUsIHN1Y2ggYXMgdXNlZCBieSBXZWJLaXQyLgorICAg
IHZpcnR1YWwgdm9pZCB1cGRhdGVDb250ZW50cyhQaXhlbEZvcm1hdCwgY29uc3QgSW50UmVjdCYs
IHZvaWQqIGJpdHMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlUmF3Q29udGVudHMoY29u
c3QgSW50UmVjdCYsIGNvbnN0IHZvaWQqIGJpdHMpIHsgfQorICAgIHZpcnR1YWwgUGxhdGZvcm1H
cmFwaGljc0NvbnRleHQqIGJlZ2luUGFpbnRNZWRpYSgpCisgICAgeworICAgICAgICByZXR1cm4g
YmVnaW5QYWludChJbnRSZWN0KDAsIDAsIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkp
KTsKKyAgICB9CisgICAgdmlydHVhbCB2b2lkIHNldENvbnRlbnRzVG9JbWFnZShJbWFnZSopID0g
MDsKKyAgICB2aXJ0dWFsIGJvb2wgc2F2ZShjb25zdCBTdHJpbmcmKSB7IHJldHVybiBmYWxzZTsg
fQorCisgICAgaW5saW5lIHZvaWQgbG9jaygpIHsgKyttX2xvY2tDb3VudDsgfQorICAgIGlubGlu
ZSB2b2lkIHVubG9jaygpIHsgLS1tX2xvY2tDb3VudDsgfQorICAgIGlubGluZSBib29sIGlzTG9j
a2VkKCkgeyByZXR1cm4gbV9sb2NrQ291bnQ7IH0KICAgICBpbmxpbmUgSW50U2l6ZSBjb250ZW50
U2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fY29udGVudFNpemU7IH0KICAgICBpbmxpbmUgaW50IG51
bWJlck9mQnl0ZXMoKSBjb25zdCB7IHJldHVybiBzaXplKCkud2lkdGgoKSAqIHNpemUoKS5oZWln
aHQoKSAqIGJwcCgpID4+IDM7IH0KLSAgICBpbmxpbmUgYm9vbCBpc09wYXF1ZSgpIGNvbnN0IHsg
cmV0dXJuIG1faXNPcGFxdWU7IH0KIAogcHJvdGVjdGVkOgorICAgIGludCBtX2xvY2tDb3VudDsK
ICAgICBJbnRTaXplIG1fY29udGVudFNpemU7CiAgICAgYm9vbCBtX2lzT3BhcXVlOwogfTsKQEAg
LTgyLDI2ICs5NywzMiBAQCBjbGFzcyBUZXh0dXJlTWFwcGVyIHsKICAgICBmcmllbmQgY2xhc3Mg
Qml0bWFwVGV4dHVyZTsKIAogcHVibGljOgotICAgIGVudW0gQWNjZWxlcmF0aW9uTW9kZSB7IFNv
ZnR3YXJlTW9kZSwgT3BlbkdMTW9kZSB9OwotICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVN
YXBwZXI+IGNyZWF0ZShBY2NlbGVyYXRpb25Nb2RlIG5ld01vZGUgPSBTb2Z0d2FyZU1vZGUpOwor
ICAgIHN0YXRpYyBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+IGNyZWF0ZShHcmFwaGljc0NvbnRl
eHQqIGdyYXBoaWNzQ29udGV4dCA9IDApOwogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXIoKSB7
IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkcmF3VGV4dHVyZShjb25zdCBCaXRtYXBUZXh0dXJlJiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXQsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtb2Rl
bFZpZXdNYXRyaXggPSBUcmFuc2Zvcm1hdGlvbk1hdHJpeCgpLCBmbG9hdCBvcGFjaXR5ID0gMS4w
ZiwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUgPSAwKSA9IDA7CiAKICAgICAvLyBt
YWtlcyBhIHN1cmZhY2UgdGhlIHRhcmdldCBmb3IgdGhlIGZvbGxvd2luZyBkcmF3VGV4dHVyZSBj
YWxscy4KICAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3VyZmFj
ZSkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzZXRHcmFwaGljc0NvbnRleHQoR3JhcGhpY3NDb250
ZXh0KiBjb250ZXh0KSB7IG1fY29udGV4dCA9IGNvbnRleHQ7IH0KLSAgICB2aXJ0dWFsIEdyYXBo
aWNzQ29udGV4dCogZ3JhcGhpY3NDb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0OyB9CisgICAg
dmlydHVhbCB2b2lkIHNldEdyYXBoaWNzQ29udGV4dChHcmFwaGljc0NvbnRleHQqKSA9IDA7Cisg
ICAgdmlydHVhbCBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgYmVnaW5DbGlwKGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgY29uc3Qg
RmxvYXRSZWN0JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBlbmRDbGlwKCkgPSAwOworICAgIHZp
cnR1YWwgYm9vbCBhbGxvd1N1cmZhY2VGb3JSb290KCkgY29uc3QgPSAwOwogICAgIHZpcnR1YWwg
UGFzc1JlZlB0cjxCaXRtYXBUZXh0dXJlPiBjcmVhdGVUZXh0dXJlKCkgPSAwOworICAgIEludFNp
emUgdmlld3BvcnRTaXplKCkgY29uc3QgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KKyAgICB2
b2lkIHNldFZpZXdwb3J0U2l6ZShjb25zdCBJbnRTaXplJiBzKSB7IG1fdmlld3BvcnRTaXplID0g
czsgfQogCiAgICAgdm9pZCBzZXRJbWFnZUludGVycG9sYXRpb25RdWFsaXR5KEludGVycG9sYXRp
b25RdWFsaXR5IHF1YWxpdHkpIHsgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eSA9IHF1YWxpdHk7IH0K
ICAgICB2b2lkIHNldFRleHREcmF3aW5nTW9kZShUZXh0RHJhd2luZ01vZGVGbGFncyBtb2RlKSB7
IG1fdGV4dERyYXdpbmdNb2RlID0gbW9kZTsgfQogCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkg
aW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJwb2xhdGlv
blF1YWxpdHk7IH0KICAgICBUZXh0RHJhd2luZ01vZGVGbGFncyB0ZXh0RHJhd2luZ01vZGUoKSBj
b25zdCB7IHJldHVybiBtX3RleHREcmF3aW5nTW9kZTsgfQotICAgIHZpcnR1YWwgQWNjZWxlcmF0
aW9uTW9kZSBhY2NlbGVyYXRpb25Nb2RlKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBh
bGxvd1BhcnRpYWxVcGRhdGVzKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFs
IGJvb2wgaXNPcGVuR0xCYWNrZWQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQorCisgICAgdm9p
ZCBzZXRUcmFuc2Zvcm0oY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCkgeyBtX3Ry
YW5zZm9ybSA9IG1hdHJpeDsgfQorICAgIFRyYW5zZm9ybWF0aW9uTWF0cml4IHRyYW5zZm9ybSgp
IGNvbnN0IHsgcmV0dXJuIG1fdHJhbnNmb3JtOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgYmVnaW5Q
YWludGluZygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBlbmRQYWludGluZygpIHsgfQpAQCAtMTA5
LDYgKzEzMCw3IEBAIHB1YmxpYzoKICAgICAvLyBBIHN1cmZhY2UgaXMgcmVsZWFzZWQgaW1wbGlj
aXRseSB3aGVuIGRlcmVmZXJlbmNlZC4KICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Qml0bWFwVGV4
dHVyZT4gYWNxdWlyZVRleHR1cmVGcm9tUG9vbChjb25zdCBJbnRTaXplJik7CiAKKwogcHJvdGVj
dGVkOgogICAgIFRleHR1cmVNYXBwZXIoKQogICAgICAgICA6IG1faW50ZXJwb2xhdGlvblF1YWxp
dHkoSW50ZXJwb2xhdGlvbkRlZmF1bHQpCkBAIC0xMTYsMjEgKzEzOCwxNCBAQCBwcm90ZWN0ZWQ6
CiAgICAge30KIAogcHJpdmF0ZToKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCi0gICAgc3Rh
dGljIFBhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4gcGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgp
OwotI2Vsc2UKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBwbGF0Zm9ybUNy
ZWF0ZUFjY2VsZXJhdGVkKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSNlbmRp
ZgogICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7CiAgICAg
VGV4dERyYXdpbmdNb2RlRmxhZ3MgbV90ZXh0RHJhd2luZ01vZGU7CisgICAgVHJhbnNmb3JtYXRp
b25NYXRyaXggbV90cmFuc2Zvcm07CisgICAgSW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBW
ZWN0b3I8UmVmUHRyPEJpdG1hcFRleHR1cmU+ID4gbV90ZXh0dXJlUG9vbDsKLSAgICBHcmFwaGlj
c0NvbnRleHQqIG1fY29udGV4dDsKIH07CiAKLX0KK307CiAKICNlbmRpZgogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlcklt
YWdlQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9U
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhYjBkMjc4MGVkMzMxNmQ1Nzk4ZGMyMTJiZWQ4NjM5ZjEwNWYzYjA3Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuY3BwCisrKyAvZGV2L251
bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gQ29weXJpZ2h0IChDKSAyMDEyIE5va2lhIENvcnBv
cmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0gVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotIG1vZGlmeSBpdCB1
bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gTGljZW5z
ZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0g
dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2
ZXJzaW9uLgotCi0gVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCi0gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmts
aW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAq
LwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlckltYWdlQnVm
ZmVyLmgiCi0KLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVIpCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0K
LXZvaWQgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyOjp1cGRhdGVDb250ZW50cyhjb25zdCB2b2lk
KiBkYXRhLCBjb25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0KQotewotI2lmIFBMQVRGT1JNKFFUKQot
ICAgIFFJbWFnZSBpbWFnZShyZWludGVycHJldF9jYXN0PGNvbnN0IHVjaGFyKj4oZGF0YSksIHRh
cmdldFJlY3Qud2lkdGgoKSwgdGFyZ2V0UmVjdC5oZWlnaHQoKSwgdGFyZ2V0UmVjdC53aWR0aCgp
ICogNCwgUUltYWdlOjpGb3JtYXRfQVJHQjMyX1ByZW11bHRpcGxpZWQpOwotICAgIFFQYWludGVy
KiBwYWludGVyID0gbV9pbWFnZS0+Y29udGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKTsKLSAgICBw
YWludGVyLT5zYXZlKCk7Ci0gICAgcGFpbnRlci0+c2V0Q29tcG9zaXRpb25Nb2RlKFFQYWludGVy
OjpDb21wb3NpdGlvbk1vZGVfU291cmNlKTsKLSAgICBwYWludGVyLT5kcmF3SW1hZ2UodGFyZ2V0
UmVjdCwgaW1hZ2UpOwotICAgIHBhaW50ZXItPnJlc3RvcmUoKTsKLSNlbmRpZgotfQotCi12b2lk
IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6dXBkYXRlQ29udGVudHMoSW1hZ2UqIGltYWdlLCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBQaXhl
bEZvcm1hdCkKLXsKLSAgICBtX2ltYWdlLT5jb250ZXh0KCktPmRyYXdJbWFnZShpbWFnZSwgQ29s
b3JTcGFjZURldmljZVJHQiwgdGFyZ2V0UmVjdCwgc291cmNlUmVjdCwgQ29tcG9zaXRlQ29weSk7
Ci19Ci0KLXZvaWQgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyOjpiZWdpbkNsaXAoY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgY29uc3QgRmxvYXRSZWN0JiByZWN0KQotewotICAg
IEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGN1cnJlbnRDb250ZXh0KCk7Ci0gICAgaWYgKCFj
b250ZXh0KQotICAgICAgICByZXR1cm47Ci0jaWYgRU5BQkxFKDNEX1JFTkRFUklORykKLSAgICBU
cmFuc2Zvcm1hdGlvbk1hdHJpeCBwcmV2aW91c1RyYW5zZm9ybSA9IGNvbnRleHQtPmdldDNEVHJh
bnNmb3JtKCk7Ci0jZWxzZQotICAgIEFmZmluZVRyYW5zZm9ybSBwcmV2aW91c1RyYW5zZm9ybSA9
IGNvbnRleHQtPmdldENUTSgpOwotI2VuZGlmCi0gICAgY29udGV4dC0+c2F2ZSgpOwotCi0jaWYg
RU5BQkxFKDNEX1JFTkRFUklORykKLSAgICBjb250ZXh0LT5jb25jYXQzRFRyYW5zZm9ybShtYXRy
aXgpOwotI2Vsc2UKLSAgICBjb250ZXh0LT5jb25jYXRDVE0obWF0cml4LnRvQWZmaW5lKCkpOwot
I2VuZGlmCi0KLSAgICBjb250ZXh0LT5jbGlwKHJlY3QpOwotCi0jaWYgRU5BQkxFKDNEX1JFTkRF
UklORykKLSAgICBjb250ZXh0LT5zZXQzRFRyYW5zZm9ybShwcmV2aW91c1RyYW5zZm9ybSk7Ci0j
ZWxzZQotICAgIGNvbnRleHQtPnNldENUTShwcmV2aW91c1RyYW5zZm9ybSk7Ci0jZW5kaWYKLX0K
LQotdm9pZCBUZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXI6OmRyYXdUZXh0dXJlKGNvbnN0IEJpdG1h
cFRleHR1cmUmIHRleHR1cmUsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJh
bnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4
dHVyZSogbWFza1RleHR1cmUpCi17Ci0gICAgR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0ID0gY3Vy
cmVudENvbnRleHQoKTsKLSAgICBpZiAoIWNvbnRleHQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IGNvbnN0IEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlciYgdGV4dHVyZUltYWdlQnVmZmVyID0gc3Rh
dGljX2Nhc3Q8Y29uc3QgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVyJj4odGV4dHVyZSk7Ci0gICAg
SW1hZ2VCdWZmZXIqIGltYWdlID0gdGV4dHVyZUltYWdlQnVmZmVyLm1faW1hZ2UuZ2V0KCk7Ci0g
ICAgT3duUHRyPEltYWdlQnVmZmVyPiBtYXNrZWRJbWFnZTsKLQotICAgIGlmIChtYXNrVGV4dHVy
ZSAmJiBtYXNrVGV4dHVyZS0+aXNWYWxpZCgpKSB7Ci0gICAgICAgIGNvbnN0IEJpdG1hcFRleHR1
cmVJbWFnZUJ1ZmZlciogbWFzayA9IHN0YXRpY19jYXN0PGNvbnN0IEJpdG1hcFRleHR1cmVJbWFn
ZUJ1ZmZlcio+KG1hc2tUZXh0dXJlKTsKLSAgICAgICAgbWFza2VkSW1hZ2UgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKG1hc2tUZXh0dXJlLT5jb250ZW50U2l6ZSgpKTsKLSAgICAgICAgR3JhcGhpY3ND
b250ZXh0KiBtYXNrQ29udGV4dCA9IG1hc2tlZEltYWdlLT5jb250ZXh0KCk7Ci0gICAgICAgIG1h
c2tDb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1hZ2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIElu
dFBvaW50Ojp6ZXJvKCksIENvbXBvc2l0ZUNvcHkpOwotICAgICAgICBpZiAob3BhY2l0eSA8IDEp
IHsKLSAgICAgICAgICAgIG1hc2tDb250ZXh0LT5zZXRBbHBoYShvcGFjaXR5KTsKLSAgICAgICAg
ICAgIG9wYWNpdHkgPSAxOwotICAgICAgICB9Ci0gICAgICAgIG1hc2tDb250ZXh0LT5kcmF3SW1h
Z2VCdWZmZXIobWFzay0+bV9pbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgSW50UG9p
bnQ6Onplcm8oKSwgQ29tcG9zaXRlRGVzdGluYXRpb25Jbik7Ci0gICAgICAgIGltYWdlID0gbWFz
a2VkSW1hZ2UuZ2V0KCk7Ci0gICAgfQotCi0gICAgY29udGV4dC0+c2F2ZSgpOwotICAgIGNvbnRl
eHQtPnNldEFscGhhKG9wYWNpdHkpOwotI2lmIEVOQUJMRSgzRF9SRU5ERVJJTkcpCi0gICAgY29u
dGV4dC0+Y29uY2F0M0RUcmFuc2Zvcm0obWF0cml4KTsKLSNlbHNlCi0gICAgY29udGV4dC0+Y29u
Y2F0Q1RNKG1hdHJpeCk7Ci0jZW5kaWYKLSAgICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoaW1h
Z2UsIENvbG9yU3BhY2VEZXZpY2VSR0IsIHRhcmdldFJlY3QpOwotICAgIGNvbnRleHQtPnJlc3Rv
cmUoKTsKLX0KLQotfQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MTEyMDZjZjEwNzkwOGRhYjBkNjRhNTZl
MDEyM2RjMzE0MTk2ZGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSBDb3B5
cmlnaHQgKEMpIDIwMTIgTm9raWEgQ29ycG9yYXRpb24gYW5kL29yIGl0cyBzdWJzaWRpYXJ5KC1p
ZXMpCi0KLSBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCi0gbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKLSBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSBUaGlzIGxpYnJhcnkgaXMgZGlz
dHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSBidXQgV0lUSE9V
VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCi0gTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
Ci0KLSBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgVGV4dHVyZU1hcHBlckltYWdl
QnVmZmVyX2gKLSNkZWZpbmUgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyX2gKLQotI2luY2x1ZGUg
IkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlci5oIgotCi0jaWYgVVNFKFRF
WFRVUkVfTUFQUEVSKQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBCaXRtYXBUZXh0dXJl
SW1hZ2VCdWZmZXIgOiBwdWJsaWMgQml0bWFwVGV4dHVyZSB7Ci0gICAgZnJpZW5kIGNsYXNzIFRl
eHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxC
aXRtYXBUZXh0dXJlPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZihuZXcgQml0bWFwVGV4dHVy
ZUltYWdlQnVmZmVyKTsgfQotICAgIH5CaXRtYXBUZXh0dXJlSW1hZ2VCdWZmZXIoKSB7IGRlc3Ry
b3koKTsgfQotICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgeyBtX2ltYWdlLmNsZWFyKCk7IH0K
LSAgICB2aXJ0dWFsIEludFNpemUgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1faW1hZ2UtPnNpemUo
KTsgfQotICAgIHZpcnR1YWwgdm9pZCByZXNldChjb25zdCBJbnRTaXplJiBzaXplLCBib29sIG9w
YXF1ZSkKLSAgICB7Ci0gICAgICAgIEJpdG1hcFRleHR1cmU6OnJlc2V0KHNpemUsIG9wYXF1ZSk7
Ci0gICAgICAgIG1faW1hZ2UgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKHNpemUpOwotICAgIH0KLQot
ICAgIHZpcnR1YWwgYm9vbCBpc1ZhbGlkKCkgY29uc3QgeyByZXR1cm4gbV9pbWFnZTsgfQotICAg
IGlubGluZSBHcmFwaGljc0NvbnRleHQqIGdyYXBoaWNzQ29udGV4dCgpIHsgcmV0dXJuIG1faW1h
Z2UgPyBtX2ltYWdlLT5jb250ZXh0KCkgOiAwOyB9Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZUNv
bnRlbnRzKEltYWdlKiwgY29uc3QgSW50UmVjdCYsIGNvbnN0IEludFJlY3QmLCBQaXhlbEZvcm1h
dCk7Ci0gICAgdm9pZCB1cGRhdGVDb250ZW50cyhjb25zdCB2b2lkKiBkYXRhLCBjb25zdCBJbnRS
ZWN0JiB0YXJnZXRSZWN0KTsKLXByaXZhdGU6Ci0gICAgQml0bWFwVGV4dHVyZUltYWdlQnVmZmVy
KCkgeyB9Ci0gICAgT3duUHRyPEltYWdlQnVmZmVyPiBtX2ltYWdlOwotfTsKLQotCi1jbGFzcyBU
ZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlciB7Ci1wdWJsaWM6
Ci0gICAgdmlydHVhbCB2b2lkIGRyYXdUZXh0dXJlKGNvbnN0IEJpdG1hcFRleHR1cmUmLCBjb25z
dCBGbG9hdFJlY3QmIHRhcmdldFJlY3QsIGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiwgZmxv
YXQgb3BhY2l0eSwgY29uc3QgQml0bWFwVGV4dHVyZSogbWFza1RleHR1cmUpOwotICAgIHZpcnR1
YWwgdm9pZCBiZWdpbkNsaXAoY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmLCBjb25zdCBGbG9h
dFJlY3QmKTsKLSAgICB2aXJ0dWFsIHZvaWQgYmluZFN1cmZhY2UoQml0bWFwVGV4dHVyZSogc3Vy
ZmFjZSkgeyBtX2N1cnJlbnRTdXJmYWNlID0gc3VyZmFjZTt9Ci0gICAgdmlydHVhbCB2b2lkIGVu
ZENsaXAoKSB7IGdyYXBoaWNzQ29udGV4dCgpLT5yZXN0b3JlKCk7IH0KLSAgICBzdGF0aWMgUGFz
c093blB0cjxUZXh0dXJlTWFwcGVyPiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyKTsgfQotICAgIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4g
Y3JlYXRlVGV4dHVyZSgpIHsgcmV0dXJuIEJpdG1hcFRleHR1cmVJbWFnZUJ1ZmZlcjo6Y3JlYXRl
KCk7IH0KLSAgICBpbmxpbmUgR3JhcGhpY3NDb250ZXh0KiBjdXJyZW50Q29udGV4dCgpCi0gICAg
ewotICAgICAgICByZXR1cm4gbV9jdXJyZW50U3VyZmFjZSA/IHN0YXRpY19jYXN0PEJpdG1hcFRl
eHR1cmVJbWFnZUJ1ZmZlcio+KG1fY3VycmVudFN1cmZhY2UuZ2V0KCkpLT5ncmFwaGljc0NvbnRl
eHQoKSA6IGdyYXBoaWNzQ29udGV4dCgpOwotICAgIH0KLQotICAgIHZpcnR1YWwgQWNjZWxlcmF0
aW9uTW9kZSBhY2NlbGVyYXRpb25Nb2RlKCkgY29uc3QgeyByZXR1cm4gU29mdHdhcmVNb2RlOyB9
Ci0KLXByaXZhdGU6Ci0gICAgUmVmUHRyPEJpdG1hcFRleHR1cmU+IG1fY3VycmVudFN1cmZhY2U7
Ci19OwotCi19Ci0jZW5kaWYgLy8gVVNFKFRFWFRVUkVfTUFQUEVSKQotCi0jZW5kaWYgLy8gVGV4
dHVyZU1hcHBlckltYWdlQnVmZmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuY3BwCmluZGV4IDY4
NjZjNDYwNzE2NWFjZWQxYjFhODQyYzAyNWQwZjkzZmJiZDg3NWUuLmNjZjQ5YmM5ODRiYWE1YzRk
MThmZjgzMGQ4OTYwMzFkMDY3Mjg2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyTm9kZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJOb2RlLmNwcApAQCAt
MjMsNyArMjMsNiBAQAogI2lmIFVTRShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykKIAogI2luY2x1
ZGUgIkdyYXBoaWNzTGF5ZXJUZXh0dXJlTWFwcGVyLmgiCi0jaW5jbHVkZSAiSW1hZ2VCdWZmZXIu
aCIKICNpbmNsdWRlICJNYXRoRXh0cmFzLmgiCiAKIG5hbWVzcGFjZSB7CkBAIC0xNTcsMTAgKzE1
NiwxMiBAQCB2b2lkIFRleHR1cmVNYXBwZXJOb2RlOjpyZW5kZXJDb250ZW50KFRleHR1cmVNYXBw
ZXIqIHRleHR1cmVNYXBwZXIsIEdyYXBoaWNzTGF5ZQogICAgIGlmICghdGV4dHVyZU1hcHBlcikK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgSW50UmVjdCBkaXJ0eVJlY3QgPSBlbmNsb3NpbmdJbnRS
ZWN0KG1fY3VycmVudENvbnRlbnQubmVlZHNEaXNwbGF5ID8gZW50aXJlUmVjdCgpIDogbV9jdXJy
ZW50Q29udGVudC5uZWVkc0Rpc3BsYXlSZWN0KTsKKyAgICAvLyBGSVhNRTogQWRkIGRpcmVjdGx5
IGNvbXBvc2l0ZWQgaW1hZ2VzLgorICAgIEZsb2F0UmVjdCBkaXJ0eVJlY3QgPSBtX2N1cnJlbnRD
b250ZW50Lm5lZWRzRGlzcGxheSA/IGVudGlyZVJlY3QoKSA6IG1fY3VycmVudENvbnRlbnQubmVl
ZHNEaXNwbGF5UmVjdDsKIAogICAgIGZvciAoc2l6ZV90IHRpbGVJbmRleCA9IDA7IHRpbGVJbmRl
eCA8IG1fb3duZWRUaWxlcy5zaXplKCk7ICsrdGlsZUluZGV4KSB7CiAgICAgICAgIE93bmVkVGls
ZSYgdGlsZSA9IG1fb3duZWRUaWxlc1t0aWxlSW5kZXhdOworICAgICAgICBGbG9hdFJlY3QgcmVj
dCA9IGRpcnR5UmVjdDsKICAgICAgICAgaWYgKCF0aWxlLnRleHR1cmUpCiAgICAgICAgICAgICB0
aWxlLnRleHR1cmUgPSB0ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJlKCk7CiAgICAgICAgIFJl
ZlB0cjxCaXRtYXBUZXh0dXJlPiYgdGV4dHVyZSA9IHRpbGUudGV4dHVyZTsKQEAgLTE2OCw0MyAr
MTY5LDMxIEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnJlbmRlckNvbnRlbnQoVGV4dHVyZU1h
cHBlciogdGV4dHVyZU1hcHBlciwgR3JhcGhpY3NMYXllCiAKICAgICAgICAgaWYgKHRpbGUubmVl
ZHNSZXNldCB8fCB0ZXh0dXJlLT5jb250ZW50U2l6ZSgpICE9IHRpbGVTaXplIHx8ICF0ZXh0dXJl
LT5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIHRpbGUubmVlZHNSZXNldCA9IGZhbHNlOwotICAg
ICAgICAgICAgdGV4dHVyZS0+cmVzZXQodGlsZVNpemUsIG1fc3RhdGUuY29udGVudHNPcGFxdWUp
OwotICAgICAgICAgICAgZGlydHlSZWN0LnVuaXRlKGVuY2xvc2luZ0ludFJlY3QodGlsZS5yZWN0
KSk7CisgICAgICAgICAgICB0ZXh0dXJlLT5yZXNldCh0aWxlU2l6ZSwgbV9jdXJyZW50Q29udGVu
dC5jb250ZW50VHlwZSA9PSBEaXJlY3RJbWFnZUNvbnRlbnRUeXBlID8gZmFsc2UgOiBtX3N0YXRl
LmNvbnRlbnRzT3BhcXVlKTsKKyAgICAgICAgICAgIHJlY3QgPSB0aWxlLnJlY3Q7CiAgICAgICAg
IH0KLSAgICB9Ci0KLSAgICBpZiAoZGlydHlSZWN0LmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gUGFpbnQgdGhlIGVudGlyZSBkaXJ0eSByZWN0IGludG8gYW4gaW1hZ2UgYnVm
ZmVyLiBUaGlzIGVuc3VyZXMgd2Ugb25seSBwYWludCBvbmNlLgotICAgIE93blB0cjxJbWFnZUJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGRpcnR5UmVjdC5zaXplKCkp
OwotICAgIEdyYXBoaWNzQ29udGV4dCogY29udGV4dCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCk7
Ci0gICAgY29udGV4dC0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVy
LT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwotICAgIGNvbnRleHQtPnNldFRleHREcmF3
aW5nTW9kZSh0ZXh0dXJlTWFwcGVyLT50ZXh0RHJhd2luZ01vZGUoKSk7Ci0gICAgY29udGV4dC0+
dHJhbnNsYXRlKC1kaXJ0eVJlY3QueCgpLCAtZGlydHlSZWN0LnkoKSk7Ci0gICAgbGF5ZXItPnBh
aW50R3JhcGhpY3NMYXllckNvbnRlbnRzKCpjb250ZXh0LCBkaXJ0eVJlY3QpOwotICAgIGlmICht
X2N1cnJlbnRDb250ZW50LmNvbnRlbnRUeXBlID09IERpcmVjdEltYWdlQ29udGVudFR5cGUpCi0g
ICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZShtX2N1cnJlbnRDb250ZW50LmltYWdlLmdldCgpLCBD
b2xvclNwYWNlRGV2aWNlUkdCLCBtX3N0YXRlLmNvbnRlbnRzUmVjdCk7Ci0KLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IEltYWdlQnVmZmVyOjpEb250Q29weUJhY2tpbmdTdG9yZSBpbiBRdC9HVEsg
cG9ydHMsIGFuZCB0aGVuIGNoYW5nZSB0aGlzLgotICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc2ODkKLSAgICBSZWZQdHI8SW1hZ2U+IGltYWdlID0g
aW1hZ2VCdWZmZXItPmNvcHlJbWFnZShDb3B5QmFja2luZ1N0b3JlKTsKLQotICAgIC8vIERpdmlk
ZSB0aGUgaW1hZ2UgdG8gdGlsZXMuCi0gICAgZm9yIChzaXplX3QgdGlsZUluZGV4ID0gMDsgdGls
ZUluZGV4IDwgbV9vd25lZFRpbGVzLnNpemUoKTsgKyt0aWxlSW5kZXgpIHsKLSAgICAgICAgT3du
ZWRUaWxlJiB0aWxlID0gbV9vd25lZFRpbGVzW3RpbGVJbmRleF07Ci0gICAgICAgIEludFJlY3Qg
dGFyZ2V0UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QodGlsZS5yZWN0KTsKLSAgICAgICAgdGFyZ2V0
UmVjdC5pbnRlcnNlY3QoZGlydHlSZWN0KTsKLSAgICAgICAgaWYgKHRhcmdldFJlY3QuaXNFbXB0
eSgpKQorICAgICAgICBJbnRSZWN0IGNvbnRlbnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdCh0aWxl
LnJlY3QpOworICAgICAgICBjb250ZW50UmVjdC5pbnRlcnNlY3QoZW5jbG9zaW5nSW50UmVjdChy
ZWN0KSk7CisgICAgICAgIGlmIChjb250ZW50UmVjdC5pc0VtcHR5KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgSW50UmVjdCBzb3VyY2VSZWN0ID0gdGFyZ2V0UmVjdDsKLQotICAg
ICAgICAvLyBOb3JtYWxpemUgc291cmNlUmVjdCB0byB0aGUgYnVmZmVyJ3MgY29vcmRpbmF0ZXMu
Ci0gICAgICAgIHNvdXJjZVJlY3QubW92ZSgtZGlydHlSZWN0LngoKSwgLWRpcnR5UmVjdC55KCkp
OwogCi0gICAgICAgIC8vIE5vcm1hbGl6ZSB0YXJnZXRSZWN0IHRvIHRoZSB0ZXh0dXJlJ3MgY29v
cmRpbnFhdGVzLgotICAgICAgICB0YXJnZXRSZWN0Lm1vdmUoLXRpbGUucmVjdC54KCksIC10aWxl
LnJlY3QueSgpKTsKLSAgICAgICAgdGlsZS50ZXh0dXJlLT51cGRhdGVDb250ZW50cyhpbWFnZS5n
ZXQoKSwgdGFyZ2V0UmVjdCwgc291cmNlUmVjdCwgQml0bWFwVGV4dHVyZTo6UkdCQUZvcm1hdCk7
CisgICAgICAgIEZsb2F0UmVjdCBjb250ZW50UmVjdEluVGlsZUNvb3JkaW5hdGVzID0gY29udGVu
dFJlY3Q7CisgICAgICAgIEZsb2F0UG9pbnQgb2Zmc2V0KC10aWxlLnJlY3QueCgpLCAtdGlsZS5y
ZWN0LnkoKSk7CisgICAgICAgIGNvbnRlbnRSZWN0SW5UaWxlQ29vcmRpbmF0ZXMubW92ZShvZmZz
ZXQueCgpLCBvZmZzZXQueSgpKTsKKworICAgICAgICB7CisgICAgICAgICAgICBHcmFwaGljc0Nv
bnRleHQgY29udGV4dCh0ZXh0dXJlLT5iZWdpblBhaW50KGVuY2xvc2luZ0ludFJlY3QoY29udGVu
dFJlY3RJblRpbGVDb29yZGluYXRlcykpKTsKKyAgICAgICAgICAgIGNvbnRleHQuc2V0SW1hZ2VJ
bnRlcnBvbGF0aW9uUXVhbGl0eSh0ZXh0dXJlTWFwcGVyLT5pbWFnZUludGVycG9sYXRpb25RdWFs
aXR5KCkpOworICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0RHJhd2luZ01vZGUodGV4dHVyZU1h
cHBlci0+dGV4dERyYXdpbmdNb2RlKCkpOworICAgICAgICAgICAgY29udGV4dC50cmFuc2xhdGUo
b2Zmc2V0LngoKSwgb2Zmc2V0LnkoKSk7CisgICAgICAgICAgICBGbG9hdFJlY3Qgc2NhbGVkQ29u
dGVudFJlY3QoY29udGVudFJlY3QpOworICAgICAgICAgICAgaWYgKG1fY3VycmVudENvbnRlbnQu
Y29udGVudFR5cGUgPT0gRGlyZWN0SW1hZ2VDb250ZW50VHlwZSkKKyAgICAgICAgICAgICAgICBj
b250ZXh0LmRyYXdJbWFnZShtX2N1cnJlbnRDb250ZW50LmltYWdlLmdldCgpLCBDb2xvclNwYWNl
RGV2aWNlUkdCLCBJbnRQb2ludCgwLCAwKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgbGF5ZXItPnBhaW50R3JhcGhpY3NMYXllckNvbnRlbnRzKGNvbnRleHQsIGVuY2xvc2lu
Z0ludFJlY3Qoc2NhbGVkQ29udGVudFJlY3QpKTsKKyAgICAgICAgICAgIHRleHR1cmUtPmVuZFBh
aW50KCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBtX2N1cnJlbnRDb250ZW50Lm5lZWRzRGlz
cGxheSA9IGZhbHNlOwpAQCAtNDkyLDcgKzQ4MSw3IEBAIHZvaWQgVGV4dHVyZU1hcHBlck5vZGU6
OmNsZWFyQWxsRGlyZWN0bHlDb21wb3NpdGVkSW1hZ2VUaWxlcygpCiAgICAgfQogfQogCi12b2lk
IFRleHR1cmVNYXBwZXJOb2RlOjpzZXRDb250ZW50c1RpbGVCYWNrQnVmZmVyKGludCBpZCwgY29u
c3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29uc3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qg
dm9pZCogZGF0YSkKK3ZvaWQgVGV4dHVyZU1hcHBlck5vZGU6OnNldENvbnRlbnRzVGlsZUJhY2tC
dWZmZXIoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBjb25zdCBJbnRSZWN0JiB0
YXJnZXRSZWN0LCBjb25zdCB2b2lkKiBiaXRzKQogewogICAgIEFTU0VSVChtX3RleHR1cmVNYXBw
ZXIpOwogCkBAIC01MDksNyArNDk4LDcgQEAgdm9pZCBUZXh0dXJlTWFwcGVyTm9kZTo6c2V0Q29u
dGVudHNUaWxlQmFja0J1ZmZlcihpbnQgaWQsIGNvbnN0IEludFJlY3QmIHNvdXJjZVIKICAgICBp
ZiAoIXRpbGUuYmFja0J1ZmZlci50ZXh0dXJlKQogICAgICAgICB0aWxlLmJhY2tCdWZmZXIudGV4
dHVyZSA9IG1fdGV4dHVyZU1hcHBlci0+Y3JlYXRlVGV4dHVyZSgpOwogICAgIHRpbGUuYmFja0J1
ZmZlci50ZXh0dXJlLT5yZXNldChzb3VyY2VSZWN0LnNpemUoKSwgZmFsc2UpOwotICAgIHRpbGUu
YmFja0J1ZmZlci50ZXh0dXJlLT51cGRhdGVDb250ZW50cyhkYXRhLCBzb3VyY2VSZWN0KTsKKyAg
ICB0aWxlLmJhY2tCdWZmZXIudGV4dHVyZS0+dXBkYXRlUmF3Q29udGVudHMoc291cmNlUmVjdCwg
Yml0cyk7CiAgICAgdGlsZS5pc0JhY2tCdWZmZXJVcGRhdGVkID0gdHJ1ZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJOb2RlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlck5vZGUuaAppbmRleCAyMzBjOWUwZTA0MWQ5YWMyZWExOGRjNTUwZWM4ZjJhOGFkY2Iy
YWRhLi5mZTRiMTRjNzNlZjNiZTczYTI0MTMwNzg4N2Y5YTVhYWFiYThjZmIxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlck5v
ZGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlck5vZGUuaApAQCAtMTQ4LDcgKzE0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRp
bGVPd25lcnNoaXAoVGlsZU93bmVyc2hpcCBvd25lcnNoaXApIHsgbV9zdGF0ZS50aWxlT3duZXJz
aGlwID0gb3duZXJzaGlwOyB9CiAgICAgaW50IGNyZWF0ZUNvbnRlbnRzVGlsZShmbG9hdCBzY2Fs
ZSk7CiAgICAgdm9pZCByZW1vdmVDb250ZW50c1RpbGUoaW50IGlkKTsKLSAgICB2b2lkIHNldENv
bnRlbnRzVGlsZUJhY2tCdWZmZXIoaW50IGlkLCBjb25zdCBJbnRSZWN0JiBzb3VyY2VSZWN0LCBj
b25zdCBJbnRSZWN0JiB0YXJnZXRSZWN0LCBjb25zdCB2b2lkKik7CisgICAgdm9pZCBzZXRDb250
ZW50c1RpbGVCYWNrQnVmZmVyKGludCBpZCwgY29uc3QgSW50UmVjdCYgc291cmNlUmVjdCwgY29u
c3QgSW50UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3Qgdm9pZCogYml0cyk7CiAgICAgdm9pZCBzZXRU
aWxlQmFja0J1ZmZlclRleHR1cmVGb3JEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZShpbnQgaWQsIGNv
bnN0IEludFJlY3QmIHNvdXJjZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgQml0
bWFwVGV4dHVyZSopOwogICAgIHZvaWQgY2xlYXJBbGxEaXJlY3RseUNvbXBvc2l0ZWRJbWFnZVRp
bGVzKCk7CiAgICAgdm9pZCBwdXJnZU5vZGVUZXh0dXJlc1JlY3Vyc2l2ZSgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQvcXQv
QXBpL3F3ZWJmcmFtZS5jcHAKaW5kZXggNzQxODgyOWMwZTAwZGNjYWRkYjllMGNlMzIwMWNlNzM4
ZGUzNjkzYy4uYzhlOGRhZDVlMmZjYzVkMDJmOTRiNGE1NzFjMTIyYWI5MjM4NWUyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9xdC9BcGkvcXdlYmZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L3F0L0FwaS9xd2ViZnJhbWUuY3BwCkBAIC0zMzYsNiArMzM2LDcgQEAgdm9pZCBRV2ViRnJh
bWVQcml2YXRlOjpyZW5kZXJDb21wb3NpdGVkTGF5ZXJzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW4KICAgICB0ZXh0dXJlTWFwcGVyLT5zZXRHcmFwaGljc0NvbnRleHQoY29udGV4
dCk7CiAgICAgdGV4dHVyZU1hcHBlci0+c2V0SW1hZ2VJbnRlcnBvbGF0aW9uUXVhbGl0eShjb250
ZXh0LT5pbWFnZUludGVycG9sYXRpb25RdWFsaXR5KCkpOwogICAgIHRleHR1cmVNYXBwZXItPnNl
dFRleHREcmF3aW5nTW9kZShjb250ZXh0LT50ZXh0RHJhd2luZ01vZGUoKSk7CisgICAgdGV4dHVy
ZU1hcHBlci0+c2V0Vmlld3BvcnRTaXplKGZyYW1lLT52aWV3KCktPmZyYW1lUmVjdCgpLnNpemUo
KSk7CiAgICAgUVBhaW50ZXIqIHBhaW50ZXIgPSBjb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKTsK
ICAgICBjb25zdCBRVHJhbnNmb3JtIHRyYW5zZm9ybSA9IHBhaW50ZXItPndvcmxkVHJhbnNmb3Jt
KCk7CiAgICAgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXggbWF0cml4KApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwIGIvU291cmNl
L1dlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9QYWdlQ2xpZW50UXQuY3BwCmluZGV4IDQ1ZGNmYmJl
MTIzZGE2ZTJjMTYzNjBjMTcxZWY4ODI3MTkzMTBlMzQuLjQwZTZiMTQ4ZDk0YTFmM2RhZjAzOGU2
NzA3MWE4ODhiYWQxMWViNWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvV2ViQ29yZVN1
cHBvcnQvUGFnZUNsaWVudFF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L1BhZ2VDbGllbnRRdC5jcHAKQEAgLTI4LDggKzI4LDEyIEBACiAjZW5kaWYKIAogI2lmIFVT
RShBQ0NFTEVSQVRFRF9DT01QT1NJVElORykgJiYgVVNFKFRFWFRVUkVfTUFQUEVSKQotI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyUXQuaCIKICNpbmNs
dWRlICJ0ZXhtYXAvVGV4dHVyZU1hcHBlck5vZGUuaCIKKworI2lmIFVTRShURVhUVVJFX01BUFBF
Ul9HTCkKKyNpbmNsdWRlICJvcGVuZ2wvVGV4dHVyZU1hcHBlckdMLmgiCisjZW5kaWYKICNlbmRp
ZgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC03Miw3ICs3Niw3IEBAIHZvaWQgUGFnZUNsaWVu
dFFXaWRnZXQ6OnNldFJvb3RHcmFwaGljc0xheWVyKEdyYXBoaWNzTGF5ZXIqIGxheWVyKQogewog
ICAgIGlmIChsYXllcikgewogICAgICAgICB0ZXh0dXJlTWFwcGVyTm9kZUNsaWVudCA9IGFkb3B0
UHRyKG5ldyBUZXh0dXJlTWFwcGVyTm9kZUNsaWVudFF0KHBhZ2UtPm1haW5GcmFtZSgpLCBsYXll
cikpOwotICAgICAgICB0ZXh0dXJlTWFwcGVyTm9kZUNsaWVudC0+c2V0VGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyOjpjcmVhdGUoKSk7CisgICAgICAgIHRleHR1cmVNYXBwZXJOb2RlQ2xpZW50
LT5zZXRUZXh0dXJlTWFwcGVyKGFkb3B0UHRyKG5ldyBUZXh0dXJlTWFwcGVyUXQpKTsKICAgICAg
ICAgdGV4dHVyZU1hcHBlck5vZGVDbGllbnQtPnN5bmNSb290TGF5ZXIoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTI2MywxMSArMjY3LDExIEBAIHZvaWQgUGFnZUNsaWVudFFHcmFwaGlj
c1dpZGdldDo6c2V0Um9vdEdyYXBoaWNzTGF5ZXIoR3JhcGhpY3NMYXllciogbGF5ZXIpCiAjaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQogICAgICAgICBRR3JhcGhpY3NWaWV3KiBncmFwaGljc1Zp
ZXcgPSB2aWV3LT5zY2VuZSgpLT52aWV3cygpWzBdOwogICAgICAgICBpZiAoZ3JhcGhpY3NWaWV3
ICYmIGdyYXBoaWNzVmlldy0+dmlld3BvcnQoKSAmJiBncmFwaGljc1ZpZXctPnZpZXdwb3J0KCkt
PmluaGVyaXRzKCJRR0xXaWRnZXQiKSkgewotICAgICAgICAgICAgdGV4dHVyZU1hcHBlck5vZGVD
bGllbnQtPnNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKFRleHR1cmVNYXBw
ZXI6Ok9wZW5HTE1vZGUpKTsKKyAgICAgICAgICAgIHRleHR1cmVNYXBwZXJOb2RlQ2xpZW50LT5z
ZXRUZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXJHTDo6Y3JlYXRlKCkpOwogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgdGV4dHVyZU1hcHBlck5vZGVDbGll
bnQtPnNldFRleHR1cmVNYXBwZXIoVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKCkpOworICAgICAgICB0
ZXh0dXJlTWFwcGVyTm9kZUNsaWVudC0+c2V0VGV4dHVyZU1hcHBlcihUZXh0dXJlTWFwcGVyUXQ6
OmNyZWF0ZSgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICB0ZXh0dXJlTWFwcGVyTm9k
ZUNsaWVudC5jbGVhcigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L0xheWVyVHJlZUhvc3RQcm94eVF0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9M
YXllclRyZWVIb3N0UHJveHlRdC5jcHAKaW5kZXggYzdjYTdmMTE2OGFhZmE5NzNlZDhiODQ5NTJj
ZWI3YmQzZGE3ZDk3ZS4uODk2OWJiYmUzOGRlZjNjMmUxZTRmNWQzOTc0OTg2MjliMzIxNTM0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L0xheWVyVHJlZUhvc3RQcm94
eVF0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvTGF5ZXJUcmVlSG9zdFBy
b3h5UXQuY3BwCkBAIC0yNiw3ICsyNiw4IEBACiAjaW5jbHVkZSAiTWFpblRocmVhZC5oIgogI2lu
Y2x1ZGUgIk1lc3NhZ2VJRC5oIgogI2luY2x1ZGUgIlNoYXJlYWJsZUJpdG1hcC5oIgotI2luY2x1
ZGUgIlRleHR1cmVNYXBwZXIuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIKKyNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyUXQuaCIKICNpbmNsdWRlICJVcGRhdGVJbmZvLmgiCiAjaW5jbHVk
ZSAiV2ViQ29yZUFyZ3VtZW50Q29kZXJzLmgiCiAjaW5jbHVkZSAiV2ViTGF5ZXJUcmVlSW5mby5o
IgpAQCAtMTcwLDggKzE3MSw4IEBAIExheWVyVHJlZUhvc3RQcm94eTo6fkxheWVyVHJlZUhvc3RQ
cm94eSgpCiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cGFpbnRUb0N1cnJlbnRHTENvbnRleHQo
Y29uc3QgVHJhbnNmb3JtYXRpb25NYXRyaXgmIG1hdHJpeCwgZmxvYXQgb3BhY2l0eSwgY29uc3Qg
RmxvYXRSZWN0JiBjbGlwUmVjdCkKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikKLSAgICAg
ICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKFRleHR1cmVNYXBwZXI6
Ok9wZW5HTE1vZGUpOwotICAgIEFTU0VSVChtX3RleHR1cmVNYXBwZXItPmFjY2VsZXJhdGlvbk1v
ZGUoKSA9PSBUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKKyAgICAgICAgbV90ZXh0dXJlTWFw
cGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKKyAgICBBU1NFUlQoZHluYW1pY19jYXN0
PFRleHR1cmVNYXBwZXJHTCo+KG1fdGV4dHVyZU1hcHBlci5nZXQoKSkpOwogCiAgICAgc3luY1Jl
bW90ZUNvbnRlbnQoKTsKICAgICBHcmFwaGljc0xheWVyKiBjdXJyZW50Um9vdExheWVyID0gcm9v
dExheWVyKCk7CkBAIC0xODMsNiArMTg0LDkgQEAgdm9pZCBMYXllclRyZWVIb3N0UHJveHk6OnBh
aW50VG9DdXJyZW50R0xDb250ZXh0KGNvbnN0IFRyYW5zZm9ybWF0aW9uTWF0cml4JiBtYXQKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKIAorICAgIEdMaW50IHZpZXdwb3J0WzRdOwor
ICAgIGdsR2V0SW50ZWdlcnYoR0xfVklFV1BPUlQsIHZpZXdwb3J0KTsKKyAgICBtX3RleHR1cmVN
YXBwZXItPnNldFZpZXdwb3J0U2l6ZShJbnRTaXplKHZpZXdwb3J0WzJdLCB2aWV3cG9ydFszXSkp
OwogICAgIG5vZGUtPnNldFRleHR1cmVNYXBwZXIobV90ZXh0dXJlTWFwcGVyLmdldCgpKTsKICAg
ICBtX3RleHR1cmVNYXBwZXItPmJlZ2luUGFpbnRpbmcoKTsKICAgICBtX3RleHR1cmVNYXBwZXIt
PmJpbmRTdXJmYWNlKDApOwpAQCAtMjA3LDggKzIxMSw5IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFBy
b3h5OjpwYWludFRvQ3VycmVudEdMQ29udGV4dChjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYg
bWF0CiB2b2lkIExheWVyVHJlZUhvc3RQcm94eTo6cGFpbnRUb0dyYXBoaWNzQ29udGV4dChRUGFp
bnRlciogcGFpbnRlcikKIHsKICAgICBpZiAoIW1fdGV4dHVyZU1hcHBlcikKLSAgICAgICAgbV90
ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlcjo6Y3JlYXRlKCk7Ci0gICAgQVNTRVJUKG1fdGV4
dHVyZU1hcHBlci0+YWNjZWxlcmF0aW9uTW9kZSgpID09IFRleHR1cmVNYXBwZXI6OlNvZnR3YXJl
TW9kZSk7CisgICAgICAgIG1fdGV4dHVyZU1hcHBlciA9IFRleHR1cmVNYXBwZXJRdDo6Y3JlYXRl
KCk7CisgICAgQVNTRVJUKGR5bmFtaWNfY2FzdDxUZXh0dXJlTWFwcGVyUXQqPihtX3RleHR1cmVN
YXBwZXIuZ2V0KCkpKTsKKwogICAgIHN5bmNSZW1vdGVDb250ZW50KCk7CiAgICAgVGV4dHVyZU1h
cHBlck5vZGUqIG5vZGUgPSB0b1RleHR1cmVNYXBwZXJOb2RlKHJvb3RMYXllcigpKTsKIApAQCAt
NDA1LDcgKzQxMCw3IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjpjcmVhdGVJbWFnZShpbnQ2
NF90IGltYWdlSUQsIFNoYXJlYWJsZUJpdG1hcCogYml0bWFwKQogICAgICAgICAgICAgICAgIHN1
YkltYWdlID0gaW1hZ2UuY29weShyZWN0KTsKICAgICAgICAgICAgIFJlZlB0cjxCaXRtYXBUZXh0
dXJlPiB0ZXh0dXJlID0gbV90ZXh0dXJlTWFwcGVyLT5jcmVhdGVUZXh0dXJlKCk7CiAgICAgICAg
ICAgICB0ZXh0dXJlLT5yZXNldChyZWN0LnNpemUoKSwgIWltYWdlSGFzQWxwaGEpOwotICAgICAg
ICAgICAgdGV4dHVyZS0+dXBkYXRlQ29udGVudHMoc3ViSW1hZ2UuY29uc3RCaXRzKCksIEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgcmVjdC5zaXplKCkpKTsKKyAgICAgICAgICAgIHRleHR1cmUt
PnVwZGF0ZVJhd0NvbnRlbnRzKEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgcmVjdC5zaXplKCkp
LCBzdWJJbWFnZS5jb25zdEJpdHMoKSk7CiAgICAgICAgICAgICB0aWxlZEltYWdlLmFkZChyZWN0
LmxvY2F0aW9uKCksIHRleHR1cmUpOwogICAgICAgICB9CiAgICAgfQpAQCAtNDY4LDcgKzQ3Myw3
IEBAIHZvaWQgTGF5ZXJUcmVlSG9zdFByb3h5OjplbnN1cmVSb290TGF5ZXIoKQogICAgIC8vIFRo
ZSByb290IGxheWVyIHNob3VsZCBub3QgaGF2ZSB6ZXJvIHNpemUsIG9yIGl0IHdvdWxkIGJlIG9w
dGltaXplZCBvdXQuCiAgICAgbV9yb290TGF5ZXItPnNldFNpemUoRmxvYXRTaXplKDEuMCwgMS4w
KSk7CiAgICAgaWYgKCFtX3RleHR1cmVNYXBwZXIpCi0gICAgICAgIG1fdGV4dHVyZU1hcHBlciA9
IFRleHR1cmVNYXBwZXI6OmNyZWF0ZShUZXh0dXJlTWFwcGVyOjpPcGVuR0xNb2RlKTsKKyAgICAg
ICAgbV90ZXh0dXJlTWFwcGVyID0gVGV4dHVyZU1hcHBlckdMOjpjcmVhdGUoKTsKICAgICB0b1Rl
eHR1cmVNYXBwZXJOb2RlKG1fcm9vdExheWVyLmdldCgpKS0+c2V0VGV4dHVyZU1hcHBlcihtX3Rl
eHR1cmVNYXBwZXIuZ2V0KCkpOwogfQogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>