<?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>121758</bug_id>
          
          <creation_ts>2013-09-21 23:17:44 -0700</creation_ts>
          <short_desc>REGRESSION(r156240): Broke multiple WebGL tests (Requested by ap on #webkit).</short_desc>
          <delta_ts>2013-09-22 00:04:37 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>DUPLICATE</resolution>
          <dup_id>121759</dup_id>
          
          <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>121750</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
    
    <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>931873</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-21 23:17:44 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/156240 broke the build:
Broke multiple WebGL tests (Requested by ap on #webkit).

This is an automatic bug report generated by webkitbot. 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 fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>931875</commentid>
    <comment_count>1</comment_count>
      <attachid>212293</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-09-21 23:18:12 -0700</bug_when>
    <thetext>Created attachment 212293
ROLLOUT of r156240

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>931880</commentid>
    <comment_count>2</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-09-22 00:04:37 -0700</bug_when>
    <thetext>Darin has a fix (too bad EWS can&apos;t check it now).

There is also a regression in accessibility/accessibility-node-memory-management.html, which is something to be fixed in the test.

*** This bug has been marked as a duplicate of bug 121759 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>212293</attachid>
            <date>2013-09-21 23:18:12 -0700</date>
            <delta_ts>2013-09-21 23:19:23 -0700</delta_ts>
            <desc>ROLLOUT of r156240</desc>
            <filename>bug-121758-20130921231811.patch</filename>
            <type>text/plain</type>
            <size>91648</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
MGI0OTcyODQ0NzczZmY3ZGFkNTM1ZjNhNmM3YjliOGY4MjBkNzE2Li4wOWI4ZjgyODdiYTk4M2Y3
OWY1NzExZjZmZjY5OGZhMzMwZjdmMmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4NSBAQAorMjAxMy0wOS0yMSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjE1NjI0MC4KKyAgICAg
ICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTU2MjQwCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjE3NTgKKworICAgICAgICBCcm9r
ZSBtdWx0aXBsZSBXZWJHTCB0ZXN0cyAoUmVxdWVzdGVkIGJ5IGFwIG9uICN3ZWJraXQpLgorCisg
ICAgICAgICogQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaDoKKyAgICAgICAgKEpTQzo6QVBJQ2Fs
bGJhY2tGdW5jdGlvbjo6Y2FsbCk6CisgICAgICAgICogQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rv
ci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEpTQ2FsbGJhY2spOgorICAgICAgICAqIEFQ
SS9KU0NhbGxiYWNrT2JqZWN0RnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6Ojo6Y29uc3RydWN0
KToKKyAgICAgICAgKEpTQzo6OjpjYWxsKToKKyAgICAgICAgKiBpbnRlcnByZXRlci9DYWxsRnJh
bWUuaDoKKyAgICAgICAgKEpTQzo6RXhlY1N0YXRlOjphcmd1bWVudCk6CisgICAgICAgICoganNj
LmNwcDoKKyAgICAgICAgKGZ1bmN0aW9uUHJpbnQpOgorICAgICAgICAoZnVuY3Rpb25SdW4pOgor
ICAgICAgICAoZnVuY3Rpb25TZXRTYW1wbGluZ0ZsYWdzKToKKyAgICAgICAgKGZ1bmN0aW9uQ2xl
YXJTYW1wbGluZ0ZsYWdzKToKKyAgICAgICAgKiBydW50aW1lL0FycmF5UHJvdG90eXBlLmNwcDoK
KyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNDb25jYXQpOgorICAgICAgICAoSlNDOjphcnJh
eVByb3RvRnVuY1B1c2gpOgorICAgICAgICAoSlNDOjphcnJheVByb3RvRnVuY1NwbGljZSk6Cisg
ICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jVW5TaGlmdCk6CisgICAgICAgIChKU0M6OmFycmF5
UHJvdG9GdW5jUmVkdWNlKToKKyAgICAgICAgKEpTQzo6YXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdo
dCk6CisgICAgICAgIChKU0M6OmFycmF5UHJvdG9GdW5jTGFzdEluZGV4T2YpOgorICAgICAgICAq
IHJ1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OmZpbGxTdHJ1Y3R1cmVz
VXNpbmdUaW1lQXJncyk6CisgICAgICAgIChKU0M6OmZpbGxTdHJ1Y3R1cmVzVXNpbmdEYXRlQXJn
cyk6CisgICAgICAgICogcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoSlNDOjpjb25zdHJ1Y3RBcnJheUJ1ZmZlcik6CisgICAgICAgICogcnVudGltZS9KU0Fy
cmF5QnVmZmVyUHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6YXJyYXlCdWZmZXJQcm90b0Z1
bmNTbGljZSk6CisgICAgICAgICogcnVudGltZS9KU0JvdW5kRnVuY3Rpb24uY3BwOgorICAgICAg
ICAoSlNDOjpib3VuZEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChKU0M6OmJvdW5kRnVuY3Rpb25D
b25zdHJ1Y3QpOgorICAgICAgICAqIHJ1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6OmdldERhdGEpOgorICAgICAgICAoSlNDOjpzZXREYXRhKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29uc3RydWN0b3JJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OmNvbnN0cnVjdEdlbmVyaWNUeXBlZEFycmF5Vmlldyk6CisgICAgICAgICog
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaDoKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU3ViYXJyYXkpOgorICAgICAgICAqIHJ1
bnRpbWUvSlNPTk9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNQYXJzZSk6
CisgICAgICAgIChKU0M6OkpTT05Qcm90b0Z1bmNTdHJpbmdpZnkpOgorICAgICAgICAqIHJ1bnRp
bWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RQcm9t
aXNlKToKKyAgICAgICAgKEpTQzo6SlNQcm9taXNlQ29uc3RydWN0b3JGdW5jRnVsZmlsbCk6Cisg
ICAgICAgIChKU0M6OkpTUHJvbWlzZUNvbnN0cnVjdG9yRnVuY1Jlc29sdmUpOgorICAgICAgICAo
SlNDOjpKU1Byb21pc2VDb25zdHJ1Y3RvckZ1bmNSZWplY3QpOgorICAgICAgICAqIHJ1bnRpbWUv
TWF0aE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6Om1hdGhQcm90b0Z1bmNNYXgpOgorICAgICAg
ICAoSlNDOjptYXRoUHJvdG9GdW5jTWluKToKKyAgICAgICAgKiBydW50aW1lL05hbWVDb25zdHJ1
Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFByaXZhdGVOYW1lKToKKyAgICAgICAg
KiBydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpJbnRl
cnByZXRlcjo6Y29uc3RydWN0V2l0aE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAo
SlNDOjpJbnRlcnByZXRlcjo6Y2FsbE5hdGl2ZUVycm9yQ29uc3RydWN0b3IpOgorICAgICAgICAq
IHJ1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoSlNDOjpjb25zdHJ1Y3RX
aXRoTnVtYmVyQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpjYWxsTnVtYmVyQ29uc3RydWN0
b3IpOgorICAgICAgICAqIHJ1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpvYmplY3RDb25zdHJ1Y3RvckNyZWF0ZSk6CisgICAgICAgICogcnVudGltZS9TZXRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdFNldCk6CisgICAgICAgICogcnVu
dGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ0Zyb21DaGFy
Q29kZVNsb3dDYXNlKToKKyAgICAgICAgKEpTQzo6c3RyaW5nRnJvbUNoYXJDb2RlKToKKyAgICAg
ICAgKEpTQzo6Y29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6
Y2FsbFN0cmluZ0NvbnN0cnVjdG9yKToKKyAgICAgICAgKiBydW50aW1lL1N0cmluZ1Byb3RvdHlw
ZS5jcHA6CisgICAgICAgIChKU0M6OnN0cmluZ1Byb3RvRnVuY0NvbmNhdCk6CisgICAgICAgICog
cnVudGltZS9UZXN0UnVubmVyVXRpbHMuY3BwOgorICAgICAgICAoSlNDOjpudW1iZXJPZkRGR0Nv
bXBpbGVzKToKKyAgICAgICAgKEpTQzo6c2V0TmV2ZXJJbmxpbmUpOgorCiAyMDEzLTA5LTIxICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgSW50ZXJwcmV0ZXI6OnVu
d2luZCgpIGhhcyBubyBuZWVkIGZvciB0aGUgYnl0ZWNvZGVPZmZzZXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAw
YTQ1NTVhM2Q4MWM3MWYyNGUzYWU2YTUyYTE1MmFjMzJjOTUxZDM5Li5jOTc0ZDk3ZGEzNDM3NThi
MWRhMjFmMDE3NTFiNjE0ODJhMzBlOGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzkgQEAKKzIw
MTMtMDktMjEgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAg
ICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTYyNDAuCisgICAgICAgIGh0dHA6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzE1NjI0MAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIxNzU4CisKKyAgICAgICAgQnJva2UgbXVsdGlwbGUgV2Vi
R0wgdGVzdHMgKFJlcXVlc3RlZCBieSBhcCBvbiAjd2Via2l0KS4KKworICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SlNIVE1MQ2FudmFzRWxlbWVudDo6cHJvYmFibHlTdXBwb3J0c0NvbnRleHQpOgorICAgICAgICAo
V2ViQ29yZTo6SlNIVE1MQ2FudmFzRWxlbWVudDo6dG9EYXRhVVJMKToKKyAgICAgICAgKiBiaW5k
aW5ncy9qcy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkb2N1
bWVudFdyaXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6aW5zcGVj
dGVkT2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRIb3N0OjppbnRl
cm5hbENvbnN0cnVjdG9yTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0
SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVk
U2NyaXB0SG9zdDo6dHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9z
dDo6ZnVuY3Rpb25EZXRhaWxzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTSW5qZWN0ZWRTY3JpcHRI
b3N0OjpnZXRFdmVudExpc3RlbmVycyk6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2Ny
aXB0SG9zdDo6aW5zcGVjdCk6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9z
dDo6ZGF0YWJhc2VJZCk6CisgICAgICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6
c3RvcmFnZUlkKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1
c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1NRTFRyYW5zYWN0aW9uU3luYzo6ZXhlY3V0
ZVNxbCk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6SlNTVkdMZW5ndGg6OmNvbnZlcnRUb1NwZWNpZmllZFVuaXRzKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtlckN1c3RvbS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpKU1NoYXJlZFdvcmtlckNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1NoYXJlZFdvcmtl
cik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Z2V0T2JqZWN0UGFyYW1ldGVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMpOgorICAg
ICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEV4dGVuc2lvbik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0RnJhbWVidWZmZXJB
dHRhY2htZW50UGFyYW1ldGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNXZWJH
TFJlbmRlcmluZ0NvbnRleHQ6OmdldFNoYWRlclBhcmFtZXRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpKU1dlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChXZWJDb3Jl
OjpkYXRhRnVuY3Rpb25mKToKKyAgICAgICAgKFdlYkNvcmU6OmRhdGFGdW5jdGlvbmkpOgorICAg
ICAgICAoV2ViQ29yZTo6ZGF0YUZ1bmN0aW9uTWF0cml4KToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkpTV29y
a2VyR2xvYmFsU2NvcGU6OmltcG9ydFNjcmlwdHMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVx
dWVzdDo6b3Blbik6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpzZW5kKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNYU0xUUHJvY2Vzc29yOjpzZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNYU0xUUHJvY2Vzc29yOjpnZXRQYXJhbWV0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNYU0xUUHJvY2Vzc29yOjpyZW1vdmVQYXJhbWV0ZXIpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L1NjaGVkdWxlZEFjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTY2hlZHVsZWRBY3Rpb246
OlNjaGVkdWxlZEFjdGlvbik6CisgICAgICAgICogYmluZGluZ3MvanMvU2NyaXB0Q2FsbFN0YWNr
RmFjdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVTY3JpcHRBcmd1bWVudHMpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOgorICAgICAgICAo
R2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OmpzVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJQcm90b3R5cGVGdW5jdGlvbk1ldGhvZCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpKU1Rlc3RPYmpDb25zdHJ1Y3Rvcjo6Y29uc3RydWN0SlNUZXN0T2JqKToKKyAg
ICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aENhbGxi
YWNrQXJnKToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0
aG9kV2l0aE5vbkNhbGxiYWNrQXJnQW5kQ2FsbGJhY2tBcmcpOgorICAgICAgICAoV2ViQ29yZTo6
anNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFy
Zyk6CisgICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpDb25zdHJ1Y3RvckZ1bmN0aW9uU3RhdGlj
TWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmcpOgorICAgICAgICAoV2ViQ29yZTo6anNU
ZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFja0FyZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRo
b2Q1KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVGVzdE9ialByb3RvdHlwZUZ1bmN0aW9uVmFyaWFk
aWNOb2RlTWV0aG9kKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0
VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNUZXN0VHlwZWRlZnNDb25zdHJ1Y3Rv
cjo6Y29uc3RydWN0SlNUZXN0VHlwZWRlZnMpOgorICAgICAgICAqIGJyaWRnZS9jL2NfaW5zdGFu
Y2UuY3BwOgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VNZXRob2Qp
OgorICAgICAgICAoSlNDOjpCaW5kaW5nczo6Q0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9k
KToKKyAgICAgICAgKiBicmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tOgorICAgICAgICAoT2Jq
Y0luc3RhbmNlOjppbnZva2VPYmpjTWV0aG9kKToKKyAgICAgICAgKE9iamNJbnN0YW5jZTo6aW52
b2tlRGVmYXVsdE1ldGhvZCk6CisKIDIwMTMtMDktMjEgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBFdmVudCBhbmQgRXZlbnRUYXJnZXQgaW50ZXJmYWNlcyBkb24ndCBu
ZWVkIHRvIGJlIHN0b3JlIGFzIEF0b21pY1N0cmluZ3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0NmFmZjE1OGMw
ZjdkYjdkMGMxYmU2MzcyNDM5ZjkzNmI0YjFlMzFiLi5mOWJiM2NiZmI4ZDk0NTdmMTYxMjU5MDVl
ZTZhNzI2MzUzNTVmZjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTMtMDktMjEg
IENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2
aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNTYyNDAuCisgICAgICAgIGh0dHA6Ly90cmFjLndlYmtpdC5v
cmcvY2hhbmdlc2V0LzE1NjI0MAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTIxNzU4CisKKyAgICAgICAgQnJva2UgbXVsdGlwbGUgV2ViR0wgdGVzdHMg
KFJlcXVlc3RlZCBieSBhcCBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvUGx1
Z2lucy9OZXRzY2FwZS9KU05QT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SlNOUE9iamVj
dDo6Y2FsbE1ldGhvZCk6CisgICAgICAgIChXZWJLaXQ6OkpTTlBPYmplY3Q6OmNhbGxPYmplY3Qp
OgorICAgICAgICAoV2ViS2l0OjpKU05QT2JqZWN0OjpjYWxsQ29uc3RydWN0b3IpOgorCiAyMDEz
LTA5LTIxICBEYXJpbiBBZGxlciAgPGRhcmluQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRXhl
Y1N0YXRlOjp1bmNoZWNrZWRBcmd1bWVudCBhbmQgdXNlIHdoZXJlIHBvc3NpYmxlIHRvIHNocmlu
ayBhIGJpdApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9BUElDYWxsYmFj
a0Z1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rp
b24uaAppbmRleCBkOTFjNTBiODk3NjM1YTIyZjM0NTNiOTQzMDIyMTNhZWU4MzRjYmI2Li42ODNi
NjM4OTA5NDRkZmQwMzk3YjcxNDcwN2Y1MjAxNzkyMTE4ZDQ3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0FQSUNhbGxiYWNrRnVuY3Rpb24uaApAQCAtNTAsNyArNTAsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEFQSUNhbGxiYWNrRnVuY3Rpb246OmNhbGwoRXhl
Y1N0YXRlKiBleGVjKQogICAgIFZlY3RvcjxKU1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAg
IGFyZ3VtZW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGFyZ3VtZW50Q291bnQpOwogICAgIGZv
ciAoaW50IGkgPSAwOyBpIDwgYXJndW1lbnRDb3VudDsgaSsrKQotICAgICAgICBhcmd1bWVudHMu
dW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7
CisgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9SZWYoZXhlYywgZXhlYy0+YXJn
dW1lbnQoaSkpKTsKIAogICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICBKU1ZhbHVl
UmVmIHJlc3VsdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxs
YmFja0NvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDYWxsYmFj
a0NvbnN0cnVjdG9yLmNwcAppbmRleCBkYzljY2M2NjNiZjA0OGY3YzU2YWIwZTI3MmQ2ZmI5ZGNm
YTViZWQyLi4zNzFkNTgzYTAzNTllNGRmMTFlZTczOGQ1ZGZmMDhhODU2ZmMwNWQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNrQ29uc3RydWN0b3IuY3Bw
CkBAIC03Nyw3ICs3Nyw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNv
bnN0cnVjdEpTQ2FsbGJhY2soRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBWZWN0b3I8SlNWYWx1
ZVJlZiwgMTY+IGFyZ3VtZW50czsKICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJbml0aWFsQ2Fw
YWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJn
dW1lbnRDb3VudDsgKytpKQotICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0
b1JlZihleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSkpOworICAgICAgICAgICAgYXJn
dW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBleGVjLT5hcmd1bWVudChpKSkpOwog
CiAgICAgICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKICAgICAgICAgSlNPYmplY3RSZWYg
cmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0FQSS9KU0NhbGxiYWNr
T2JqZWN0RnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tP
YmplY3RGdW5jdGlvbnMuaAppbmRleCAzYjAzNWEzODViMjlhYzhmMGNiMTRmYzc1NzkzMDEwZDhj
MmQyNDk1Li5kMWE4OWZhMGI5MGI1YThhNmFkYjQ5NDdiNjk2NGU4NTUwOTI1OWUwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlvbnMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ2FsbGJhY2tPYmplY3RGdW5jdGlv
bnMuaApAQCAtNDA3LDcgKzQwNyw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ2FsbGJhY2tPYmplY3Q8
UGFyZW50Pjo6Y29uc3RydWN0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIFZlY3RvcjxK
U1ZhbHVlUmVmLCAxNj4gYXJndW1lbnRzOwogICAgICAgICAgICAgYXJndW1lbnRzLnJlc2VydmVJ
bml0aWFsQ2FwYWNpdHkoYXJndW1lbnRDb3VudCk7CiAgICAgICAgICAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgICAgICAgICBhcmd1bWVudHMu
dW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpKSk7
CisgICAgICAgICAgICAgICAgYXJndW1lbnRzLnVuY2hlY2tlZEFwcGVuZCh0b1JlZihleGVjLCBl
eGVjLT5hcmd1bWVudChpKSkpOwogICAgICAgICAgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OwogICAgICAgICAgICAgSlNPYmplY3QqIHJlc3VsdDsKICAgICAgICAgICAgIHsKQEAgLTQ3NCw3
ICs0NzQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NhbGxiYWNrT2JqZWN0PFBhcmVudD46OmNhbGwo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWVSZWYsIDE2PiBhcmd1
bWVudHM7CiAgICAgICAgICAgICBhcmd1bWVudHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShhcmd1
bWVudENvdW50KTsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRD
b3VudDsgKytpKQotICAgICAgICAgICAgICAgIGFyZ3VtZW50cy51bmNoZWNrZWRBcHBlbmQodG9S
ZWYoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgICAgICAgICBh
cmd1bWVudHMudW5jaGVja2VkQXBwZW5kKHRvUmVmKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpKSk7
CiAgICAgICAgICAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7CiAgICAgICAgICAgICBKU1Zh
bHVlIHJlc3VsdDsKICAgICAgICAgICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9DYWxsRnJhbWUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRl
cnByZXRlci9DYWxsRnJhbWUuaAppbmRleCA2M2EzZDI3ZTQzZGI0ZTVkZmJmOTgzNzFhZDkzYzRi
MjZiYTYxZDQ3Li4xYzgzZmEyNGJmNGZiMDRlODJhMzllMWYxNmNmYTdkMjkwOWNlOTViIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW50ZXJwcmV0ZXIvQ2FsbEZyYW1lLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhbGxGcmFtZS5oCkBAIC0yNDAs
MTIgKzI0MCw3IEBAIG5hbWVzcGFjZSBKU0MgIHsKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KGFyZ3VtZW50ID49IGFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0QXJndW1lbnRVbnNhZmUoYXJndW1l
bnQpOwotICAgICAgICB9Ci0gICAgICAgIEpTVmFsdWUgdW5jaGVja2VkQXJndW1lbnQoc2l6ZV90
IGFyZ3VtZW50KQotICAgICAgICB7Ci0gICAgICAgICAgICBBU1NFUlQoYXJndW1lbnQgPCBhcmd1
bWVudENvdW50KCkpOwotICAgICAgICAgICAgcmV0dXJuIGdldEFyZ3VtZW50VW5zYWZlKGFyZ3Vt
ZW50KTsKKyAgICAgICAgICAgIHJldHVybiB0aGlzW2FyZ3VtZW50T2Zmc2V0KGFyZ3VtZW50KV0u
anNWYWx1ZSgpOwogICAgICAgICB9CiAgICAgICAgIHZvaWQgc2V0QXJndW1lbnQoc2l6ZV90IGFy
Z3VtZW50LCBKU1ZhbHVlIHZhbHVlKQogICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4
IGJkMjNkNjY2ZmNmMGNhYTUzOTJkOTRjZDUxYzk1ZTM0MTMzZDQ0YjguLjUwYjE4NGI0ZDBiMjgz
NTMzMjM0NGFlMzJhODUwNTM2MjZkN2FmNzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qc2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC0zMDAs
NyArMzAwLDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblByaW50KEV4
ZWNTdGF0ZSogZXhlYykKICAgICAgICAgaWYgKGkpCiAgICAgICAgICAgICBwdXRjaGFyKCcgJyk7
CiAKLSAgICAgICAgcHJpbnRmKCIlcyIsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvU3Ry
aW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4KCkuZGF0YSgpKTsKKyAgICAgICAgcHJpbnRmKCIl
cyIsIGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKS51dGY4KCku
ZGF0YSgpKTsKICAgICB9CiAKICAgICBwdXRjaGFyKCdcbicpOwpAQCAtMzkxLDcgKzM5MSw3IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4oRXhlY1N0YXRlKiBleGVj
KQogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCAwKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+
YXJndW1lbnRDb3VudCgpOyArK2kpCi0gICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
KTsKKyAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpLCBpIC0gMSwgZXhlYy0+YXJndW1lbnQoaSkpOwogICAgIGdsb2JhbE9iamVjdC0+cHV0RGly
ZWN0KAogICAgICAgICBleGVjLT52bSgpLCBJZGVudGlmaWVyKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIApAQCAtNDUwLDcgKzQ1MCw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGVja1N5bnRheChFeGVjU3RhdGUqIGV4
ZWMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uU2V0U2FtcGxpbmdGbGFn
cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7Ci0gICAgICAgIHVuc2lnbmVkIGZsYWcgPSBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9OdW1iZXIoZXhlYykp
OworICAgICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4ZWMtPmFy
Z3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKICAgICAgICAgaWYgKChmbGFnID49IDEpICYmIChm
bGFnIDw9IDMyKSkKICAgICAgICAgICAgIFNhbXBsaW5nRmxhZ3M6OnNldEZsYWcoZmxhZyk7CiAg
ICAgfQpAQCAtNDYwLDcgKzQ2MCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVu
Y3Rpb25TZXRTYW1wbGluZ0ZsYWdzKEV4ZWNTdGF0ZSogZXhlYykKIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZnVuY3Rpb25DbGVhclNhbXBsaW5nRmxhZ3MoRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsr
aSkgewotICAgICAgICB1bnNpZ25lZCBmbGFnID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpLnRvTnVtYmVyKGV4ZWMpKTsKKyAgICAgICAgdW5zaWduZWQg
ZmxhZyA9IHN0YXRpY19jYXN0PHVuc2lnbmVkPihleGVjLT5hcmd1bWVudChpKS50b051bWJlcihl
eGVjKSk7CiAgICAgICAgIGlmICgoZmxhZyA+PSAxKSAmJiAoZmxhZyA8PSAzMikpCiAgICAgICAg
ICAgICBTYW1wbGluZ0ZsYWdzOjpjbGVhckZsYWcoZmxhZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlQcm90b3R5cGUuY3BwCmluZGV4IGZjYzA4MmVl
ZGVmYjE5M2VmYzBkMjE0YjFlOGY3ODBhNTZhZWFkNjUuLjJmOGRkYmExNzZmMGE2MmUxNTgwNTAx
MjViMzJjZDBkMjk4NTQzNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0FycmF5UHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9BcnJheVByb3RvdHlwZS5jcHAKQEAgLTQzOSw3ICs0MzksNyBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jQ29uY2F0KEV4ZWNTdGF0ZSogZXhlYykKICAgICAg
ICAgfQogICAgICAgICBpZiAoaSA9PSBhcmdDb3VudCkKICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICBjdXJBcmcgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKTsKKyAgICAgICAgY3VyQXJn
ID0gKGV4ZWMtPmFyZ3VtZW50KGkpKTsKICAgICAgICAgKytpOwogICAgIH0KICAgICBhcnItPnNl
dExlbmd0aChleGVjLCBuKTsKQEAgLTQ4MSw3ICs0ODEsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGFycmF5UHJvdG9GdW5jUHVzaChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBpZiAo
aXNKU0FycmF5KHRoaXNWYWx1ZSkgJiYgZXhlYy0+YXJndW1lbnRDb3VudCgpID09IDEpIHsKICAg
ICAgICAgSlNBcnJheSogYXJyYXkgPSBhc0FycmF5KHRoaXNWYWx1ZSk7Ci0gICAgICAgIGFycmF5
LT5wdXNoKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKKyAgICAgICAgYXJyYXkt
PnB1c2goZXhlYywgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKGFycmF5LT5sZW5ndGgoKSkpOwogICAgIH0KICAgICAKQEAgLTQ5Mywx
MSArNDkzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgYXJyYXlQcm90b0Z1bmNQ
dXNoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIG4gPSAwOyBuIDwgZXhlYy0+
YXJndW1lbnRDb3VudCgpOyBuKyspIHsKICAgICAgICAgLy8gQ2hlY2sgZm9yIGludGVnZXIgb3Zl
cmZsb3c7IHdoZXJlIHNhZmUgd2UgY2FuIGRvIGEgZmFzdCBwdXQgYnkgaW5kZXguCiAgICAgICAg
IGlmIChsZW5ndGggKyBuID49IGxlbmd0aCkKLSAgICAgICAgICAgIHRoaXNPYmotPm1ldGhvZFRh
YmxlKCktPnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgbGVuZ3RoICsgbiwgZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQobiksIHRydWUpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUo
KS0+cHV0QnlJbmRleCh0aGlzT2JqLCBleGVjLCBsZW5ndGggKyBuLCBleGVjLT5hcmd1bWVudChu
KSwgdHJ1ZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHV0UHJvcGVydHlTbG90IHNs
b3Q7CiAgICAgICAgICAgICBJZGVudGlmaWVyIHByb3BlcnR5TmFtZShleGVjLCBKU1ZhbHVlKHN0
YXRpY19jYXN0PGludDY0X3Q+KGxlbmd0aCkgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihuKSkudG9X
VEZTdHJpbmcoZXhlYykpOwotICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0
KHRoaXNPYmosIGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQobiks
IHNsb3QpOworICAgICAgICAgICAgdGhpc09iai0+bWV0aG9kVGFibGUoKS0+cHV0KHRoaXNPYmos
IGV4ZWMsIHByb3BlcnR5TmFtZSwgZXhlYy0+YXJndW1lbnQobiksIHNsb3QpOwogICAgICAgICB9
CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CkBAIC03NjcsNyArNzY3LDcgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1NwbGljZShFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICB1bnNpZ25lZCBkZWxldGVDb3VudCA9IGxlbmd0aCAtIGJlZ2luOwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPiAxKSB7Ci0gICAgICAgIGRvdWJsZSBkZWxldGVEb3Vi
bGUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludGVnZXIoZXhlYyk7CisgICAgICAg
IGRvdWJsZSBkZWxldGVEb3VibGUgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludGVnZXIoZXhlYyk7
CiAgICAgICAgIGlmIChkZWxldGVEb3VibGUgPCAwKQogICAgICAgICAgICAgZGVsZXRlQ291bnQg
PSAwOwogICAgICAgICBlbHNlIGlmIChkZWxldGVEb3VibGUgPiBsZW5ndGggLSBiZWdpbikKQEAg
LTgwMCw3ICs4MDAsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5UHJvdG9G
dW5jU3BsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgfQogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsg
PCBhZGRpdGlvbmFsQXJnczsgKytrKSB7Ci0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCkt
PnB1dEJ5SW5kZXgodGhpc09iaiwgZXhlYywgayArIGJlZ2luLCBleGVjLT51bmNoZWNrZWRBcmd1
bWVudChrICsgMiksIHRydWUpOworICAgICAgICB0aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRC
eUluZGV4KHRoaXNPYmosIGV4ZWMsIGsgKyBiZWdpbiwgZXhlYy0+YXJndW1lbnQoayArIDIpLCB0
cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CkBAIC04MjUsNyArODI1
LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY1VuU2hpZnQo
RXhlY1N0YXRlKiBleGVjKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1Vu
ZGVmaW5lZCgpKTsKICAgICB9CiAgICAgZm9yICh1bnNpZ25lZCBrID0gMDsgayA8IG5yQXJnczsg
KytrKSB7Ci0gICAgICAgIHRoaXNPYmotPm1ldGhvZFRhYmxlKCktPnB1dEJ5SW5kZXgodGhpc09i
aiwgZXhlYywgaywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoayksIHRydWUpOworICAgICAgICB0
aGlzT2JqLT5tZXRob2RUYWJsZSgpLT5wdXRCeUluZGV4KHRoaXNPYmosIGV4ZWMsIGssIGV4ZWMt
PmFyZ3VtZW50KGspLCB0cnVlKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
CkBAIC0xMTQzLDcgKzExNDMsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGFycmF5
UHJvdG9GdW5jUmVkdWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgYXJyYXkgPSBhc0FycmF5
KHRoaXNPYmopOwogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKQotICAgICAg
ICBydiA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpOworICAgICAgICBydiA9IGV4ZWMtPmFy
Z3VtZW50KDEpOwogICAgIGVsc2UgaWYgKGFycmF5ICYmIGFycmF5LT5jYW5HZXRJbmRleFF1aWNr
bHkoMCkpIHsKICAgICAgICAgcnYgPSBhcnJheS0+Z2V0SW5kZXhRdWlja2x5KDApOwogICAgICAg
ICBpID0gMTsKQEAgLTEyMjAsNyArMTIyMCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgYXJyYXlQcm90b0Z1bmNSZWR1Y2VSaWdodChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIGFy
cmF5ID0gYXNBcnJheSh0aGlzT2JqKTsKICAgICAKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpID49IDIpCi0gICAgICAgIHJ2ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAg
ICAgIHJ2ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgZWxzZSBpZiAoYXJyYXkgJiYgYXJyYXkt
PmNhbkdldEluZGV4UXVpY2tseShsZW5ndGggLSAxKSkgewogICAgICAgICBydiA9IGFycmF5LT5n
ZXRJbmRleFF1aWNrbHkobGVuZ3RoIC0gMSk7CiAgICAgICAgIGkgPSAxOwpAQCAtMTMwNiw3ICsx
MzA2LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheVByb3RvRnVuY0xhc3RJ
bmRleE9mKEV4ZWNTdGF0ZSogZXhlYykKIAogICAgIHVuc2lnbmVkIGluZGV4ID0gbGVuZ3RoIC0g
MTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgSlNWYWx1
ZSBmcm9tVmFsdWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKTsKKyAgICAgICAgSlNWYWx1
ZSBmcm9tVmFsdWUgPSBleGVjLT5hcmd1bWVudCgxKTsKICAgICAgICAgZG91YmxlIGZyb21Eb3Vi
bGUgPSBmcm9tVmFsdWUudG9JbnRlZ2VyKGV4ZWMpOwogICAgICAgICBpZiAoZnJvbURvdWJsZSA8
IDApIHsKICAgICAgICAgICAgIGZyb21Eb3VibGUgKz0gbGVuZ3RoOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRGF0ZVByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9EYXRlUHJvdG90eXBlLmNwcAppbmRleCBkNGY3NDZiNTgzNWQ2
OTQ3NjI4YzViYTY5OWYzN2UwZWE5MDQ3YzVmLi43NGEwNGQ2MWZhYWY0YjcxZGE1ZjM2MDEyZGVk
YWViNTMzYzA4NThmIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9E
YXRlUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9EYXRl
UHJvdG90eXBlLmNwcApAQCAtMzczLDcgKzM3Myw3IEBAIHN0YXRpYyBib29sIGZpbGxTdHJ1Y3R1
cmVzVXNpbmdUaW1lQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBtYXhBcmdzLCBkb3VibGUqIG1z
CiAgICAgLy8gaG91cnMKICAgICBpZiAobWF4QXJncyA+PSA0ICYmIGlkeCA8IG51bUFyZ3MpIHsK
ICAgICAgICAgdC0+c2V0SG91cigwKTsKLSAgICAgICAgZG91YmxlIGhvdXJzID0gZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoaWR4KyspLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpOworICAgICAg
ICBkb3VibGUgaG91cnMgPSBleGVjLT5hcmd1bWVudChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVO
YU4oZXhlYyk7CiAgICAgICAgIG9rID0gc3RkOjppc2Zpbml0ZShob3Vycyk7CiAgICAgICAgIG1p
bGxpc2Vjb25kcyArPSBob3VycyAqIG1zUGVySG91cjsKICAgICB9CkBAIC0zODEsNyArMzgxLDcg
QEAgc3RhdGljIGJvb2wgZmlsbFN0cnVjdHVyZXNVc2luZ1RpbWVBcmdzKEV4ZWNTdGF0ZSogZXhl
YywgaW50IG1heEFyZ3MsIGRvdWJsZSogbXMKICAgICAvLyBtaW51dGVzCiAgICAgaWYgKG1heEFy
Z3MgPj0gMyAmJiBpZHggPCBudW1BcmdzICYmIG9rKSB7CiAgICAgICAgIHQtPnNldE1pbnV0ZSgw
KTsKLSAgICAgICAgZG91YmxlIG1pbnV0ZXMgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpZHgr
KykudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CisgICAgICAgIGRvdWJsZSBtaW51dGVzID0g
ZXhlYy0+YXJndW1lbnQoaWR4KyspLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpOwogICAgICAg
ICBvayA9IHN0ZDo6aXNmaW5pdGUobWludXRlcyk7CiAgICAgICAgIG1pbGxpc2Vjb25kcyArPSBt
aW51dGVzICogbXNQZXJNaW51dGU7CiAgICAgfQpAQCAtMzg5LDcgKzM4OSw3IEBAIHN0YXRpYyBi
b29sIGZpbGxTdHJ1Y3R1cmVzVXNpbmdUaW1lQXJncyhFeGVjU3RhdGUqIGV4ZWMsIGludCBtYXhB
cmdzLCBkb3VibGUqIG1zCiAgICAgLy8gc2Vjb25kcwogICAgIGlmIChtYXhBcmdzID49IDIgJiYg
aWR4IDwgbnVtQXJncyAmJiBvaykgewogICAgICAgICB0LT5zZXRTZWNvbmQoMCk7Ci0gICAgICAg
IGRvdWJsZSBzZWNvbmRzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaWR4KyspLnRvSW50ZWdl
clByZXNlcnZlTmFOKGV4ZWMpOworICAgICAgICBkb3VibGUgc2Vjb25kcyA9IGV4ZWMtPmFyZ3Vt
ZW50KGlkeCsrKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKICAgICAgICAgb2sgPSBzdGQ6
OmlzZmluaXRlKHNlY29uZHMpOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gc2Vjb25kcyAqIG1z
UGVyU2Vjb25kOwogICAgIH0KQEAgLTM5OSw3ICszOTksNyBAQCBzdGF0aWMgYm9vbCBmaWxsU3Ry
dWN0dXJlc1VzaW5nVGltZUFyZ3MoRXhlY1N0YXRlKiBleGVjLCBpbnQgbWF4QXJncywgZG91Ymxl
KiBtcwogICAgICAgICAKICAgICAvLyBtaWxsaXNlY29uZHMKICAgICBpZiAoaWR4IDwgbnVtQXJn
cykgewotICAgICAgICBkb3VibGUgbWlsbGlzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaWR4
KS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKKyAgICAgICAgZG91YmxlIG1pbGxpcyA9IGV4
ZWMtPmFyZ3VtZW50KGlkeCkudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CiAgICAgICAgIG9r
ID0gc3RkOjppc2Zpbml0ZShtaWxsaXMpOwogICAgICAgICBtaWxsaXNlY29uZHMgKz0gbWlsbGlz
OwogICAgIH0gZWxzZQpAQCAtNDI1LDE5ICs0MjUsMTkgQEAgc3RhdGljIGJvb2wgZmlsbFN0cnVj
dHVyZXNVc2luZ0RhdGVBcmdzKEV4ZWNTdGF0ZSAqZXhlYywgaW50IG1heEFyZ3MsIGRvdWJsZSAq
bXMKICAgCiAgICAgLy8geWVhcnMKICAgICBpZiAobWF4QXJncyA+PSAzICYmIGlkeCA8IG51bUFy
Z3MpIHsKLSAgICAgICAgZG91YmxlIHllYXJzID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaWR4
KyspLnRvSW50ZWdlclByZXNlcnZlTmFOKGV4ZWMpOworICAgICAgICBkb3VibGUgeWVhcnMgPSBl
eGVjLT5hcmd1bWVudChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVOYU4oZXhlYyk7CiAgICAgICAg
IG9rID0gc3RkOjppc2Zpbml0ZSh5ZWFycyk7CiAgICAgICAgIHQtPnNldFllYXIodG9JbnQzMih5
ZWFycykpOwogICAgIH0KICAgICAvLyBtb250aHMKICAgICBpZiAobWF4QXJncyA+PSAyICYmIGlk
eCA8IG51bUFyZ3MgJiYgb2spIHsKLSAgICAgICAgZG91YmxlIG1vbnRocyA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGlkeCsrKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKKyAgICAgICAg
ZG91YmxlIG1vbnRocyA9IGV4ZWMtPmFyZ3VtZW50KGlkeCsrKS50b0ludGVnZXJQcmVzZXJ2ZU5h
TihleGVjKTsKICAgICAgICAgb2sgPSBzdGQ6OmlzZmluaXRlKG1vbnRocyk7CiAgICAgICAgIHQt
PnNldE1vbnRoKHRvSW50MzIobW9udGhzKSk7CiAgICAgfQogICAgIC8vIGRheXMKICAgICBpZiAo
aWR4IDwgbnVtQXJncyAmJiBvaykgewotICAgICAgICBkb3VibGUgZGF5cyA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGlkeCsrKS50b0ludGVnZXJQcmVzZXJ2ZU5hTihleGVjKTsKKyAgICAgICAg
ZG91YmxlIGRheXMgPSBleGVjLT5hcmd1bWVudChpZHgrKykudG9JbnRlZ2VyUHJlc2VydmVOYU4o
ZXhlYyk7CiAgICAgICAgIG9rID0gc3RkOjppc2Zpbml0ZShkYXlzKTsKICAgICAgICAgdC0+c2V0
TW9udGhEYXkoMCk7CiAgICAgICAgICptcyArPSBkYXlzICogbXNQZXJEYXk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlckNvbnN0cnVj
dG9yLmNwcAppbmRleCA4MmEyMTRjZWIyNmY1OTliN2RmNmNlZjczY2JlYmQ0OThiMzUxNDQ1Li44
MjFiODUzZmVlMzIyN2Y5ZDIwMTVhNmMxMjdmNzk3ZGFiNTJhMDcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyQ29uc3RydWN0b3IuY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NB
TEwgY29uc3RydWN0QXJyYXlCdWZmZXIoRXhlY1N0YXRlKiBleGVjKQogICAgIAogICAgIHVuc2ln
bmVkIGxlbmd0aDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpKSB7Ci0gICAgICAgIGxl
bmd0aCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMpOworICAgICAg
ICBsZW5ndGggPSBleGVjLT5hcmd1bWVudCgwKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc1VuZGVmaW5lZCgpKTsKICAgICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAppbmRleCAwYjZi
ZjdkNmExYWMxOGU0NDQzNjZkYTYxYmRiM2U4NzI2OWRiNmIzLi5kYjU4MTM5YzU5NzhhMzNlNzhl
MmE2ZDM4OWQ1MTM0ZDMxMjY0ZTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyUHJvdG90eXBlLmNwcApAQCAtNTIsNyArNTIsNyBA
QCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBhcnJheUJ1ZmZlclByb3RvRnVu
Y1NsaWNlKEV4ZWNTdGF0ZSogZXhlYykKICAgICAKICAgICBpbnQzMl90IGVuZDsKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID49IDIpIHsKLSAgICAgICAgZW5kID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKyAgICAgICAgZW5kID0gZXhlYy0+YXJndW1l
bnQoMSkudG9JbnQzMihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9
IGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRG
dW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0JvdW5kRnVuY3Rp
b24uY3BwCmluZGV4IDM0ZDI0YTA1YTkzY2Y4NmU2N2FjMGI0YTkwZjdlMzY4OWMwYjdmZGUuLjVl
MjQ2NmVmMmRjOTMyZWM0OWY2ZmQyNjA0ODUzODZiZjA3NjhhN2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQm91bmRGdW5jdGlvbi5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNCb3VuZEZ1bmN0aW9uLmNwcApAQCAtNDUsNyArNDUs
NyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGJvdW5kRnVuY3Rpb25DYWxsKEV4ZWNT
dGF0ZSogZXhlYykKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgYm91bmRBcmdzLT5sZW5n
dGgoKTsgKytpKQogICAgICAgICBhcmdzLmFwcGVuZChib3VuZEFyZ3MtPmdldEluZGV4UXVpY2ts
eShpKSk7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQo
KTsgKytpKQotICAgICAgICBhcmdzLmFwcGVuZChleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CisgICAgICAgIGFyZ3MuYXBwZW5kKGV4ZWMtPmFyZ3VtZW50KGkpKTsKIAogICAgIEpTT2JqZWN0
KiB0YXJnZXRGdW5jdGlvbiA9IGJvdW5kRnVuY3Rpb24tPnRhcmdldEZ1bmN0aW9uKCk7CiAgICAg
Q2FsbERhdGEgY2FsbERhdGE7CkBAIC02NSw3ICs2NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgYm91bmRGdW5jdGlvbkNvbnN0cnVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGJvdW5kQXJncy0+bGVuZ3RoKCk7ICsraSkKICAgICAgICAg
YXJncy5hcHBlbmQoYm91bmRBcmdzLT5nZXRJbmRleFF1aWNrbHkoaSkpOwogICAgIGZvciAodW5z
aWduZWQgaSA9IDA7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgYXJn
cy5hcHBlbmQoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBhcmdzLmFwcGVu
ZChleGVjLT5hcmd1bWVudChpKSk7CiAKICAgICBKU09iamVjdCogdGFyZ2V0RnVuY3Rpb24gPSBi
b3VuZEZ1bmN0aW9uLT50YXJnZXRGdW5jdGlvbigpOwogICAgIENvbnN0cnVjdERhdGEgY29uc3Ry
dWN0RGF0YTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRGF0
YVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRh
Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggODM0MmE4MzRhOTQ3Y2ZiMWFhZjg3YTcyMzY0NzA4NWY4
NzJhNzgwYS4uNWFmNzg3MjExMjdmNDJlNWNmMzI3MzdjMjFmYWQ1MjVhYjNiMTE2YyAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlwZS5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNEYXRhVmlld1Byb3RvdHlw
ZS5jcHAKQEAgLTEwMSwxNCArMTAxLDE0IEBAIEVuY29kZWRKU1ZhbHVlIGdldERhdGEoRXhlY1N0
YXRlKiBleGVjKQogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1
cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiTmVlZCBhdCBsZWFz
dCBvbmUgYXJndW1lbnQgKHRoZSBieXRlT2Zmc2V0KSIpKTsKICAgICAKLSAgICB1bnNpZ25lZCBi
eXRlT2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIoZXhlYyk7Cisg
ICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUludDMyKGV4ZWMp
OwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKICAgICBib29sIGxpdHRsZUVuZGlhbiA9IGZh
bHNlOwogICAgIHVuc2lnbmVkIGVsZW1lbnRTaXplID0gc2l6ZW9mKHR5cGVuYW1lIEFkYXB0b3I6
OlR5cGUpOwogICAgIGlmIChlbGVtZW50U2l6ZSA+IDEgJiYgZXhlYy0+YXJndW1lbnRDb3VudCgp
ID49IDIpIHsKLSAgICAgICAgbGl0dGxlRW5kaWFuID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MSkudG9Cb29sZWFuKGV4ZWMpOworICAgICAgICBsaXR0bGVFbmRpYW4gPSBleGVjLT5hcmd1bWVu
dCgxKS50b0Jvb2xlYW4oZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
fQpAQCAtMTM1LDE4ICsxMzUsMTggQEAgRW5jb2RlZEpTVmFsdWUgc2V0RGF0YShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAgICAgIHJldHVy
biB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJOZWVkIGF0IGxlYXN0
IHR3byBhcmd1bWVudCAodGhlIGJ5dGVPZmZzZXQgYW5kIHZhbHVlKSIpKTsKICAgICAKLSAgICB1
bnNpZ25lZCBieXRlT2Zmc2V0ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9VSW50MzIo
ZXhlYyk7CisgICAgdW5zaWduZWQgYnl0ZU9mZnNldCA9IGV4ZWMtPmFyZ3VtZW50KDApLnRvVUlu
dDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAKLSAgICB0eXBlbmFtZSBBZGFw
dG9yOjpUeXBlIHZhbHVlID0gdG9OYXRpdmVGcm9tVmFsdWU8QWRhcHRvcj4oZXhlYywgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMSkpOworICAgIHR5cGVuYW1lIEFkYXB0b3I6OlR5cGUgdmFsdWUg
PSB0b05hdGl2ZUZyb21WYWx1ZTxBZGFwdG9yPihleGVjLCBleGVjLT5hcmd1bWVudCgxKSk7CiAg
ICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIAogICAgIGJvb2wgbGl0dGxlRW5kaWFuID0gZmFsc2U7
CiAgICAgdW5zaWduZWQgZWxlbWVudFNpemUgPSBzaXplb2YodHlwZW5hbWUgQWRhcHRvcjo6VHlw
ZSk7CiAgICAgaWYgKGVsZW1lbnRTaXplID4gMSAmJiBleGVjLT5hcmd1bWVudENvdW50KCkgPj0g
MykgewotICAgICAgICBsaXR0bGVFbmRpYW4gPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKS50
b0Jvb2xlYW4oZXhlYyk7CisgICAgICAgIGxpdHRsZUVuZGlhbiA9IGV4ZWMtPmFyZ3VtZW50KDIp
LnRvQm9vbGVhbihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdDb25zdHJ1Y3RvcklubGluZXMuaAppbmRleCBjZThi
YTYzYmJmNGNmZTk5MzZkMjZkMDAwM2E2YmU0NmE5OGVlNTkwLi40ODFiODk5ZTQ2OWRmMmNjZmQx
NGRjNmVmMjg1NTVjNmY1ODQwMjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld0NvbnN0cnVjdG9ySW5saW5lcy5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3Q29u
c3RydWN0b3JJbmxpbmVzLmgKQEAgLTkwLDEyICs5MCwxMiBAQCBzdGF0aWMgRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRl
KiBleAogICAgIGlmIChKU0FycmF5QnVmZmVyKiBqc0J1ZmZlciA9IGpzRHluYW1pY0Nhc3Q8SlNB
cnJheUJ1ZmZlcio+KGV4ZWMtPmFyZ3VtZW50KDApKSkgewogICAgICAgICBSZWZQdHI8QXJyYXlC
dWZmZXI+IGJ1ZmZlciA9IGpzQnVmZmVyLT5pbXBsKCk7CiAgICAgICAgIAotICAgICAgICB1bnNp
Z25lZCBvZmZzZXQgPSAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkgPyBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgxKS50b1VJbnQzMihleGVjKSA6IDA7CisgICAgICAgIHVuc2lnbmVkIG9mZnNl
dCA9IChleGVjLT5hcmd1bWVudENvdW50KCkgPiAxKSA/IGV4ZWMtPmFyZ3VtZW50KDEpLnRvVUlu
dDMyKGV4ZWMpIDogMDsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAgdW5z
aWduZWQgbGVuZ3RoID0gMDsKICAgICAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDIp
IHsKLSAgICAgICAgICAgIGxlbmd0aCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDIpLnRvVUlu
dDMyKGV4ZWMpOworICAgICAgICAgICAgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnQoMikudG9VSW50
MzIoZXhlYyk7CiAgICAgICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKICAgICAgICAg
fSBlbHNlIHsKQEAgLTExMyw3ICsxMTMsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjb25zdHJ1Y3RHZW5lcmljVHlwZWRBcnJheVZpZXcoRXhlY1N0YXRlKiBleAogICAg
IC8vIC0gQW5vdGhlciBhcnJheS4gVGhpcyBjcmVhdGVzIGEgY29weSBvZiB0aGUgb2YgdGhhdCBh
cnJheS4KICAgICAvLyAtIEFuIGludGVnZXIuIFRoaXMgY3JlYXRlcyBhIG5ldyB0eXBlZCBhcnJh
eSBvZiB0aGF0IGxlbmd0aCBhbmQgemVyby1pbml0aWFsaXplcyBpdC4KICAgICAKLSAgICBpZiAo
SlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSkpIHsKKyAgICBpZiAoSlNPYmplY3QqIG9iamVjdCA9IGpzRHluYW1pY0Nh
c3Q8SlNPYmplY3QqPihleGVjLT5hcmd1bWVudCgwKSkpIHsKICAgICAgICAgdW5zaWduZWQgbGVu
Z3RoID0KICAgICAgICAgICAgIG9iamVjdC0+Z2V0KGV4ZWMsIGV4ZWMtPnZtKCkucHJvcGVydHlO
YW1lcy0+bGVuZ3RoKS50b1VJbnQzMihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2Vw
dGlvbigpKQpAQCAtMTMyLDEzICsxMzIsMTMgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgY29uc3RydWN0R2VuZXJpY1R5cGVkQXJyYXlWaWV3KEV4ZWNTdGF0ZSogZXgKICAg
ICB9CiAgICAgCiAgICAgaW50IGxlbmd0aDsKLSAgICBpZiAoZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkuaXNJbnQzMigpKQotICAgICAgICBsZW5ndGggPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKS5hc0ludDMyKCk7Ci0gICAgZWxzZSBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDAp
LmlzTnVtYmVyKCkpCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDApLmlzSW50MzIoKSkKKyAgICAg
ICAgbGVuZ3RoID0gZXhlYy0+YXJndW1lbnQoMCkuYXNJbnQzMigpOworICAgIGVsc2UgaWYgKCFl
eGVjLT5hcmd1bWVudCgwKS5pc051bWJlcigpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9y
KGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiSW52YWxpZCBhcnJheSBsZW5ndGggYXJndW1l
bnQiKSk7CiAgICAgZWxzZSB7Ci0gICAgICAgIGxlbmd0aCA9IHN0YXRpY19jYXN0PGludD4oZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkuYXNOdW1iZXIoKSk7Ci0gICAgICAgIGlmIChsZW5ndGgg
IT0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuYXNOdW1iZXIoKSkKKyAgICAgICAgbGVuZ3Ro
ID0gc3RhdGljX2Nhc3Q8aW50PihleGVjLT5hcmd1bWVudCgwKS5hc051bWJlcigpKTsKKyAgICAg
ICAgaWYgKGxlbmd0aCAhPSBleGVjLT5hcmd1bWVudCgwKS5hc051bWJlcigpKQogICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkludmFs
aWQgYXJyYXkgbGVuZ3RoIGFyZ3VtZW50IChmcmFjdGlvbmFsIGxlbmd0aHMgbm90IGFsbG93ZWQp
IikpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVJbmxpbmVzLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGluZXMu
aAppbmRleCA3NDAwMTQ5YWIwYzI2YjZjZWE0NjVjZGU3NjA0MmFmOTI0ZWVkMTViLi42MjhiMjU2
YmQ3NWRiNDdkM2MzYzcyM2EzMmYzMDRhMmY3ODRjMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUlubGlu
ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvdHlwZUlubGluZXMuaApAQCAtNDQsMTMgKzQ0LDEzIEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2V0KEV4ZWNT
dGF0ZSogZXhlYykKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0
IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKICAgICAKLSAgICBKU09iamVjdCogc291cmNlQXJyYXkg
PSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwor
ICAgIEpTT2JqZWN0KiBzb3VyY2VBcnJheSA9IGpzRHluYW1pY0Nhc3Q8SlNPYmplY3QqPihleGVj
LT5hcmd1bWVudCgwKSk7CiAgICAgaWYgKCFzb3VyY2VBcnJheSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkZpcnN0IGFyZ3VtZW50IHNo
b3VsZCBiZSBhbiBvYmplY3QiKSk7CiAgICAgCiAgICAgdW5zaWduZWQgb2Zmc2V0OwogICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPj0gMikgewotICAgICAgICBvZmZzZXQgPSBleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgxKS50b1VJbnQzMihleGVjKTsKKyAgICAgICAgb2Zmc2V0ID0gZXhl
Yy0+YXJndW1lbnQoMSkudG9VSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChleGVjLT5oYWRFeGNl
cHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQo
KSk7CiAgICAgfSBlbHNlCkBAIC03NiwxMyArNzYsMTMgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTdWJhcnJheShFeGVjU3RhdGUq
IGUKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKICAgICAKLSAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKKyAgICBpbnQzMl90IGJlZ2luID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgCiAgICAg
aW50MzJfdCBlbmQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7Ci0gICAg
ICAgIGVuZCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CisgICAg
ICAgIGVuZCA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CiAgICAgICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
anNVbmRlZmluZWQoKSk7CiAgICAgfSBlbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU09OT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTT05PYmplY3QuY3BwCmluZGV4IDFlMTRmM2EzN2I3NWVhY2QwNDRkNDJkYTk2NzIzMTIx
M2M4ZTAyNDYuLjhjN2M4YjgzODAyNjI5N2ZiOTc3NWUxM2MyZTkyZGM3ZGFmNTQzOTQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTT05PYmplY3QuY3BwCkBAIC03NzcsNyAr
Nzc3LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBKU09OUHJvdG9GdW5jUGFyc2Uo
RXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAg
ICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIEFTQ0lJTGl0
ZXJhbCgiSlNPTi5wYXJzZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcGFyYW1ldGVyIikpKTsKLSAg
ICBTdHJpbmcgc291cmNlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhl
YyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzb3VyY2UgPSBleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigp
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVsbCgpKTsKIApAQCAtNzk4LDcg
Kzc5OCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1BhcnNl
KEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAg
ICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh1bmZpbHRlcmVkKTsKICAgICAKLSAgICBKU1Zh
bHVlIGZ1bmN0aW9uID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSk7CisgICAgSlNWYWx1ZSBm
dW5jdGlvbiA9IGV4ZWMtPmFyZ3VtZW50KDEpOwogICAgIENhbGxEYXRhIGNhbGxEYXRhOwogICAg
IENhbGxUeXBlIGNhbGxUeXBlID0gZ2V0Q2FsbERhdGEoZnVuY3Rpb24sIGNhbGxEYXRhKTsKICAg
ICBpZiAoY2FsbFR5cGUgPT0gQ2FsbFR5cGVOb25lKQpAQCAtODEyLDcgKzgxMiw3IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNPTlByb3RvRnVuY1N0cmluZ2lmeShFeGVjU3RhdGUq
IGV4ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJObyBpbnB1
dCB0byBzdHJpbmdpZnkiKSkpOwogICAgIExvY2FsU2NvcGUgc2NvcGUoZXhlYy0+dm0oKSk7Ci0g
ICAgTG9jYWw8VW5rbm93bj4gdmFsdWUoZXhlYy0+dm0oKSwgZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOworICAgIExvY2FsPFVua25vd24+IHZhbHVlKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3Vt
ZW50KDApKTsKICAgICBMb2NhbDxVbmtub3duPiByZXBsYWNlcihleGVjLT52bSgpLCBleGVjLT5h
cmd1bWVudCgxKSk7CiAgICAgTG9jYWw8VW5rbm93bj4gc3BhY2UoZXhlYy0+dm0oKSwgZXhlYy0+
YXJndW1lbnQoMikpOwogICAgIEpTVmFsdWUgcmVzdWx0ID0gU3RyaW5naWZpZXIoZXhlYywgcmVw
bGFjZXIsIHNwYWNlKS5zdHJpbmdpZnkodmFsdWUpLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNQcm9taXNlQ29uc3RydWN0b3IuY3BwCmluZGV4IGEw
YzcwMDJjOTMzYWYyMDdkZTdjYzg1YTI0NzEyODQxNjUxNmYyOTEuLmI1YzA5ZTllYjk2MGViYTVj
MTBlYTliNjJlM2JmODQ4N2Y2NjM3MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTUHJvbWlzZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU1Byb21pc2VDb25zdHJ1Y3Rvci5jcHAKQEAgLTk0LDcgKzk0LDcgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJvbWlzZShFeGVj
U3RhdGUqIGV4ZWMpCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAgICAgIHJl
dHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBlY3RlZCBh
dCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CiAKLSAgICBKU1ZhbHVlIGZ1bmN0aW9uID0gZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBmdW5jdGlvbiA9IGV4ZWMtPmFyZ3Vt
ZW50KDApOwogCiAgICAgQ2FsbERhdGEgY2FsbERhdGE7CiAgICAgQ2FsbFR5cGUgY2FsbFR5cGUg
PSBnZXRDYWxsRGF0YShmdW5jdGlvbiwgY2FsbERhdGEpOwpAQCAtMTUxLDcgKzE1MSw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jRnVsZmls
bChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGV4
ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAogICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9
IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7
Ci0gICAgcHJvbWlzZS0+cmVzb2x2ZXIoKS0+ZnVsZmlsbChleGVjLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKSk7CisgICAgcHJvbWlzZS0+cmVzb2x2ZXIoKS0+ZnVsZmlsbChleGVjLCBleGVj
LT5hcmd1bWVudCgwKSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOwog
fQpAQCAtMTY0LDcgKzE2NCw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9t
aXNlQ29uc3RydWN0b3JGdW5jUmVzb2x2ZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCA9IGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKTsKIAog
ICAgIEpTUHJvbWlzZSogcHJvbWlzZSA9IEpTUHJvbWlzZTo6Y3JlYXRlV2l0aFJlc29sdmVyKGV4
ZWMtPnZtKCksIGdsb2JhbE9iamVjdCk7Ci0gICAgcHJvbWlzZS0+cmVzb2x2ZXIoKS0+cmVzb2x2
ZShleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgcHJvbWlzZS0+cmVzb2x2
ZXIoKS0+cmVzb2x2ZShleGVjLCBleGVjLT5hcmd1bWVudCgwKSk7CiAKICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHByb21pc2UpOwogfQpAQCAtMTc3LDcgKzE3Nyw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgSlNQcm9taXNlQ29uc3RydWN0b3JGdW5jUmVqZWN0KEV4ZWNTdGF0
ZSogZXhlYykKICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZXhlYy0+Y2FsbGVl
KCktPmdsb2JhbE9iamVjdCgpOwogCiAgICAgSlNQcm9taXNlKiBwcm9taXNlID0gSlNQcm9taXNl
OjpjcmVhdGVXaXRoUmVzb2x2ZXIoZXhlYy0+dm0oKSwgZ2xvYmFsT2JqZWN0KTsKLSAgICBwcm9t
aXNlLT5yZXNvbHZlcigpLT5yZWplY3QoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIHByb21pc2UtPnJlc29sdmVyKCktPnJlamVjdChleGVjLCBleGVjLT5hcmd1bWVudCgw
KSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHByb21pc2UpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTWF0aE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2JqZWN0LmNwcAppbmRleCA4YmE0ZTA0Y2ZkNWMy
MDkyMTdmOWM0ZDk1NTc3YjA0YTYxZmNhOWI4Li45ZTM5NWFmM2NjNzA1YzE0ZTc2NDFhNWRmOGY3
MGZlZDc5ZGZmZjI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9N
YXRoT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9NYXRoT2Jq
ZWN0LmNwcApAQCAtMTU5LDcgKzE1OSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
bWF0aFByb3RvRnVuY01heChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgYXJnc0NvdW50
ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSAtc3RkOjpudW1l
cmljX2xpbWl0czxkb3VibGU+OjppbmZpbml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7
IGsgPCBhcmdzQ291bnQ7ICsraykgewotICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoaykudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2YWwgPSBleGVj
LT5hcmd1bWVudChrKS50b051bWJlcihleGVjKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFs
KSkgewogICAgICAgICAgICAgcmVzdWx0ID0gUU5hTjsKICAgICAgICAgICAgIGJyZWFrOwpAQCAt
MTc1LDcgKzE3NSw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbWF0aFByb3RvRnVu
Y01pbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgdW5zaWduZWQgYXJnc0NvdW50ID0gZXhlYy0+YXJn
dW1lbnRDb3VudCgpOwogICAgIGRvdWJsZSByZXN1bHQgPSArc3RkOjpudW1lcmljX2xpbWl0czxk
b3VibGU+OjppbmZpbml0eSgpOwogICAgIGZvciAodW5zaWduZWQgayA9IDA7IGsgPCBhcmdzQ291
bnQ7ICsraykgewotICAgICAgICBkb3VibGUgdmFsID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
aykudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGRvdWJsZSB2YWwgPSBleGVjLT5hcmd1bWVudChr
KS50b051bWJlcihleGVjKTsKICAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsKSkgewogICAgICAg
ICAgICAgcmVzdWx0ID0gUU5hTjsKICAgICAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTmFtZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL05hbWVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTljZjZkNzBi
ZTkyNjVhZDY1N2Q5ZmJjNDA2NjdlZWEwYzU5NDQ3My4uZjgyMGExZjA3ZWEyMjFjOGVhNzgwNzU1
NWU1YmVlN2UzMDYyZjk4ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvTmFtZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9OYW1lQ29uc3RydWN0b3IuY3BwCkBAIC01MCw3ICs1MCw3IEBAIHZvaWQgTmFtZUNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIE5hbWVQcm90b3R5cGUqIHByb3Rv
dHlwZSkKIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0UHJp
dmF0ZU5hbWUoRXhlY1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgcHVibGljTmFtZSA9IGV4
ZWMtPmFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgcHVibGljTmFtZSA9IGV4ZWMtPmFyZ3VtZW50
Q291bnQoKSA/IGV4ZWMtPmFyZ3VtZW50KDApIDoganNVbmRlZmluZWQoKTsKICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKE5hbWVJbnN0YW5jZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIGV4ZWMtPmxl
eGljYWxHbG9iYWxPYmplY3QoKS0+cHJpdmF0ZU5hbWVTdHJ1Y3R1cmUoKSwgcHVibGljTmFtZS50
b1N0cmluZyhleGVjKSkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OYXRpdmVFcnJvckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCmluZGV4IDBhMGVjOGI0MzdlZTIz
ODI5Mzk0ZDcwZmMxMDE5MDI2MmE0MjI5NjUuLmNlNjFhZTBkOTExZWYwZmIyNjBjODYzMjUxMTRi
OWM2OWI4NjhjMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL05h
dGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL05hdGl2ZUVycm9yQ29uc3RydWN0b3IuY3BwCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgTmF0
aXZlRXJyb3JDb25zdHJ1Y3Rvcjo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGwsIFNsb3RWaXNp
dG9yJiB2aXNpdG9yKQogCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGVycHJldGVy
Ojpjb25zdHJ1Y3RXaXRoTmF0aXZlRXJyb3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7
Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBt
ZXNzYWdlID0gZXhlYy0+YXJndW1lbnRDb3VudCgpID8gZXhlYy0+YXJndW1lbnQoMCkgOiBqc1Vu
ZGVmaW5lZCgpOwogICAgIFN0cnVjdHVyZSogZXJyb3JTdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxO
YXRpdmVFcnJvckNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSgp
OwogICAgIEFTU0VSVChlcnJvclN0cnVjdHVyZSk7CiAgICAgVmVjdG9yPFN0YWNrRnJhbWU+IHN0
YWNrVHJhY2U7CkBAIC02OCw3ICs2OCw3IEBAIENvbnN0cnVjdFR5cGUgTmF0aXZlRXJyb3JDb25z
dHJ1Y3Rvcjo6Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjCiAgICAg
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEludGVycHJldGVyOjpjYWxsTmF0aXZlRXJy
b3JDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7Ci0gICAgSlNWYWx1ZSBtZXNzYWdlID0g
ZXhlYy0+YXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSBtZXNzYWdlID0gZXhlYy0+YXJndW1lbnRD
b3VudCgpID8gZXhlYy0+YXJndW1lbnQoMCkgOiBqc1VuZGVmaW5lZCgpOwogICAgIFN0cnVjdHVy
ZSogZXJyb3JTdHJ1Y3R1cmUgPSBzdGF0aWNfY2FzdDxOYXRpdmVFcnJvckNvbnN0cnVjdG9yKj4o
ZXhlYy0+Y2FsbGVlKCkpLT5lcnJvclN0cnVjdHVyZSgpOwogICAgIFZlY3RvcjxTdGFja0ZyYW1l
PiBzdGFja1RyYWNlOwogICAgIGV4ZWMtPnZtKCkuaW50ZXJwcmV0ZXItPmdldFN0YWNrVHJhY2Uo
c3RhY2tUcmFjZSwgc3RkOjpudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJDb25zdHJ1Y3Rvci5jcHAKaW5k
ZXggMDRmMjQzODNkNDg5OGNmOGQ0MjE5OWJlOTY3NDAyNGNhZWQ3NDljNS4uNzU5MGRmMDQ1ODFj
Y2MyOTYyNGRhY2ZmNDg4MTllYjMwOGQ2YzUwZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvTnVtYmVyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL051bWJlckNvbnN0cnVjdG9yLmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHN0YXRpYyBKU1ZhbHVlIG51bWJlckNvbnN0cnVjdG9yTWluVmFsdWUoRXhlY1N0YXRlKiwgSlNW
YWx1ZSwgUHJvcGVydHlOYW1lKQogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwg
Y29uc3RydWN0V2l0aE51bWJlckNvbnN0cnVjdG9yKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBO
dW1iZXJPYmplY3QqIG9iamVjdCA9IE51bWJlck9iamVjdDo6Y3JlYXRlKGV4ZWMtPnZtKCksIGFz
SW50ZXJuYWxGdW5jdGlvbihleGVjLT5jYWxsZWUoKSktPmdsb2JhbE9iamVjdCgpLT5udW1iZXJP
YmplY3RTdHJ1Y3R1cmUoKSk7Ci0gICAgZG91YmxlIG4gPSBleGVjLT5hcmd1bWVudENvdW50KCkg
PyBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b051bWJlcihleGVjKSA6IDA7CisgICAgZG91
YmxlIG4gPSBleGVjLT5hcmd1bWVudENvdW50KCkgPyBleGVjLT5hcmd1bWVudCgwKS50b051bWJl
cihleGVjKSA6IDA7CiAgICAgb2JqZWN0LT5zZXRJbnRlcm5hbFZhbHVlKGV4ZWMtPnZtKCksIGpz
TnVtYmVyKG4pKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKG9iamVjdCk7CiB9CkBAIC0x
MjUsNyArMTI1LDcgQEAgQ29uc3RydWN0VHlwZSBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0Q29uc3Ry
dWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHIKIC8vIEVDTUEgMTUuNy4yCiBz
dGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsTnVtYmVyQ29uc3RydWN0b3Io
RXhlY1N0YXRlKiBleGVjKQogewotICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
IWV4ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50
b051bWJlcihleGVjKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoIWV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA/IDAgOiBleGVjLT5hcmd1bWVudCgwKS50b051bWJlcihleGVj
KSkpOwogfQogCiBDYWxsVHlwZSBOdW1iZXJDb25zdHJ1Y3Rvcjo6Z2V0Q2FsbERhdGEoSlNDZWxs
KiwgQ2FsbERhdGEmIGNhbGxEYXRhKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvT2JqZWN0Q29uc3RydWN0b3IuY3BwCmluZGV4IDQ0ODc0NDNiYmJmYmY1ODA3NjQ1YjMz
YmQ4ZjgzMmE5OGIwYWYwZWMuLjkzNjUyODZkMjY5MWMwN2ZkMmY4YjhhNjhjNGI1MGNkZTQ1ZTY0
MzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09iamVjdENvbnN0
cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PYmplY3RDb25z
dHJ1Y3Rvci5jcHAKQEAgLTM3MSw5ICszNzEsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIG9iamVjdENvbnN0cnVjdG9yRGVmaW5lUHJvcGVydGllcyhFeGVjU3RhdGUqIGV4ZWMpCiAK
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgb2JqZWN0Q29uc3RydWN0b3JDcmVhdGUoRXhl
Y1N0YXRlKiBleGVjKQogewotICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgwKTsK
LSAgICBpZiAoIXByb3RvLmlzT2JqZWN0KCkgJiYgIXByb3RvLmlzTnVsbCgpKQorICAgIGlmICgh
ZXhlYy0+YXJndW1lbnQoMCkuaXNPYmplY3QoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNOdWxs
KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4
ZWMsIEFTQ0lJTGl0ZXJhbCgiT2JqZWN0IHByb3RvdHlwZSBtYXkgb25seSBiZSBhbiBPYmplY3Qg
b3IgbnVsbC4iKSkpOworICAgIEpTVmFsdWUgcHJvdG8gPSBleGVjLT5hcmd1bWVudCgwKTsKICAg
ICBKU09iamVjdCogbmV3T2JqZWN0ID0gcHJvdG8uaXNPYmplY3QoKQogICAgICAgICA/IGNvbnN0
cnVjdEVtcHR5T2JqZWN0KGV4ZWMsIGFzT2JqZWN0KHByb3RvKSkKICAgICAgICAgOiBjb25zdHJ1
Y3RFbXB0eU9iamVjdChleGVjLCBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPm51bGxQcm90
b3R5cGVPYmplY3RTdHJ1Y3R1cmUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9TZXRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYmE5ZDg1ZmY1NTg3NWI2NDQyZTg2OTBkMmIy
MWI2NTQ3NzgyYmNhZi4uOTQ0ZjY3ZjAzZGYwM2M4Yjc4ZTk4M2JiNDRjZTM2M2Y2MDNiNjljNyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU2V0Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1NldENvbnN0cnVjdG9yLmNw
cApAQCAtNjcsNyArNjcsNyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBj
b25zdHJ1Y3RTZXQoQ2FsbEZyYW1lKiBjYWxsRnJhbWUpCiAgICAgTWFwRGF0YSogbWFwRGF0YSA9
IHNldC0+bWFwRGF0YSgpOwogICAgIHNpemVfdCBjb3VudCA9IGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgewotICAgICAg
ICBKU1ZhbHVlIGl0ZW0gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkpOworICAgICAg
ICBKU1ZhbHVlIGl0ZW0gPSBjYWxsRnJhbWUtPmFyZ3VtZW50KGkpOwogICAgICAgICBtYXBEYXRh
LT5zZXQoY2FsbEZyYW1lLCBpdGVtLCBpdGVtKTsKICAgICB9CiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShzZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
U3RyaW5nQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3Ry
aW5nQ29uc3RydWN0b3IuY3BwCmluZGV4IDFjNjFlNDNhNTg4ZWFmZmJjZWIwYTQwZDk0M2ZiY2Nj
ODI3NjU5NmMuLjJjY2JkYjIwMGZiOTFiYTI5YTAzOTVjYmM5NDZiNmIzOTQ3YzVkOGUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ0NvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdDb25zdHJ1Y3Rvci5j
cHAKQEAgLTczLDE0ICs3MywxNCBAQCBzdGF0aWMgTkVWRVJfSU5MSU5FIEpTVmFsdWUgc3RyaW5n
RnJvbUNoYXJDb2RlU2xvd0Nhc2UoRXhlY1N0YXRlKiBleGVjKQogICAgIFVDaGFyKiBidWY7CiAg
ICAgUGFzc1JlZlB0cjxTdHJpbmdJbXBsPiBpbXBsID0gU3RyaW5nSW1wbDo6Y3JlYXRlVW5pbml0
aWFsaXplZChsZW5ndGgsIGJ1Zik7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQotICAgICAgICBidWZbaV0gPSBzdGF0aWNfY2FzdDxVQ2hhcj4oZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoaSkudG9VSW50MzIoZXhlYykpOworICAgICAgICBidWZbaV0gPSBzdGF0aWNf
Y2FzdDxVQ2hhcj4oZXhlYy0+YXJndW1lbnQoaSkudG9VSW50MzIoZXhlYykpOwogICAgIHJldHVy
biBqc1N0cmluZyhleGVjLCBpbXBsKTsKIH0KIAogc3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgc3RyaW5nRnJvbUNoYXJDb2RlKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAo
TElLRUxZKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA9PSAxKSkKLSAgICAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1NpbmdsZUNoYXJhY3RlclN0cmluZyhleGVjLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1VJbnQzMihleGVjKSkpOworICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU2luZ2xlQ2hhcmFjdGVyU3RyaW5nKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLnRvVUlu
dDMyKGV4ZWMpKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShzdHJpbmdGcm9tQ2hhckNv
ZGVTbG93Q2FzZShleGVjKSk7CiB9CiAKQEAgLTk1LDcgKzk1LDcgQEAgc3RhdGljIEVuY29kZWRK
U1ZhbHVlIEpTQ19IT1NUX0NBTEwgY29uc3RydWN0V2l0aFN0cmluZ0NvbnN0cnVjdG9yKEV4ZWNT
dGF0ZSogZXgKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3Qt
PnN0cmluZ09iamVjdFN0cnVjdHVyZSgpKSk7CiAgICAgCi0gICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShTdHJpbmdPYmplY3Q6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QtPnN0cmluZ09iamVj
dFN0cnVjdHVyZSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSkp
OworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoU3RyaW5nT2JqZWN0OjpjcmVhdGUoZXhlYywg
Z2xvYmFsT2JqZWN0LT5zdHJpbmdPYmplY3RTdHJ1Y3R1cmUoKSwgZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYykpKTsKIH0KIAogQ29uc3RydWN0VHlwZSBTdHJpbmdDb25zdHJ1Y3Rvcjo6
Z2V0Q29uc3RydWN0RGF0YShKU0NlbGwqLCBDb25zdHJ1Y3REYXRhJiBjb25zdHJ1Y3REYXRhKQpA
QCAtMTA4LDcgKzEwOCw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNh
bGxTdHJpbmdDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKCFleGVjLT5h
cmd1bWVudENvdW50KCkpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNFbXB0eVN0
cmluZyhleGVjKSk7Ci0gICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKSk7CiB9CiAKIENhbGxUeXBlIFN0cmluZ0Nv
bnN0cnVjdG9yOjpnZXRDYWxsRGF0YShKU0NlbGwqLCBDYWxsRGF0YSYgY2FsbERhdGEpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcAppbmRl
eCBlMjE3NWQzYTZmYTc1MmE1ZDE2MjhjOGEwZmIzZTY1YzQ5MWI5NGYxLi5jMjE0MDI1N2QyODg2
ZWJiNzFmMTM3Y2IxZjU5OGFiMDI4MWJlNzIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKQEAgLTc1MCw4ICs3NTAsOCBAQCBFbmNv
ZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHN0cmluZ1Byb3RvRnVuY0NoYXJDb2RlQXQoRXhlY1N0
YXRlKiBleGVjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBzdHJpbmdQcm90b0Z1bmND
b25jYXQoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
aG9zdFRoaXNWYWx1ZSgpOwotICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiBleGVjLT5h
cmd1bWVudENvdW50KCkgPT0gMSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0
cmluZyhleGVjLCBhc1N0cmluZyh0aGlzVmFsdWUpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKSkpOworICAgIGlmICh0aGlzVmFsdWUuaXNTdHJpbmcoKSAmJiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpID09IDEpKQorICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzU3RyaW5nKGV4ZWMsIGFzU3RyaW5nKHRoaXNWYWx1ZSksIGV4ZWMtPmFyZ3VtZW50KDApLnRv
U3RyaW5nKGV4ZWMpKSk7CiAKICAgICBpZiAoIWNoZWNrT2JqZWN0Q29lcmNpYmxlKHRoaXNWYWx1
ZSkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rlc3RSdW5uZXJVdGlscy5jcHAKaW5kZXggMzM3YzAw
ZTZlNWE4NDBlNmIzMWYwMzE4NjQyMGU0NGM1NTc0ZDk5MS4uMmQyMWI3ZjUyODZhZjA0YjBjYmVl
N2VlOTkzMTQ1Yzc3ODYzZjM0MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVzdFJ1bm5lclV0aWxzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZXN0UnVubmVyVXRpbHMuY3BwCkBAIC04MSwxNCArODEsMTQgQEAgSlNWYWx1ZSBudW1i
ZXJPZkRGR0NvbXBpbGVzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1l
bnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgcmV0dXJu
IG51bWJlck9mREZHQ29tcGlsZXMoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIHJl
dHVybiBudW1iZXJPZkRGR0NvbXBpbGVzKGV4ZWMtPmFyZ3VtZW50KDApKTsKIH0KIAogSlNWYWx1
ZSBzZXROZXZlcklubGluZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3Vt
ZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHJldHVy
biBzZXROZXZlcklubGluZShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAgcmV0dXJu
IHNldE5ldmVySW5saW5lKGV4ZWMtPmFyZ3VtZW50KDApKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
SlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxDYW52YXNF
bGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZh
c0VsZW1lbnRDdXN0b20uY3BwCmluZGV4IDU5NjMxZDZiYTcyZDdhOTExODg3MDE2ZWJjMDc3NzY4
MmE4MzEwMjMuLmViMzQ1YzljNTE1MTFhNGIwMTg0YWI0NTBjY2FlODE0OTM0MzRjNTUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1lbnRDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTENhbnZhc0VsZW1l
bnRDdXN0b20uY3BwCkBAIC0xMDQsNyArMTA0LDcgQEAgSlNWYWx1ZSBKU0hUTUxDYW52YXNFbGVt
ZW50Ojpwcm9iYWJseVN1cHBvcnRzQ29udGV4dChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSFRNTENh
bnZhc0VsZW1lbnQqIGNhbnZhcyA9IHN0YXRpY19jYXN0PEhUTUxDYW52YXNFbGVtZW50Kj4oaW1w
bCgpKTsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIGpz
Qm9vbGVhbihmYWxzZSk7Ci0gICAgY29uc3QgU3RyaW5nJiBjb250ZXh0SWQgPSBleGVjLT51bmNo
ZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgY29uc3Qg
U3RyaW5nJiBjb250ZXh0SWQgPSBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKICAgICAKQEAgLTEyOSw3ICsxMjksNyBAQCBKU1ZhbHVlIEpTSFRNTENh
bnZhc0VsZW1lbnQ6OnRvRGF0YVVSTChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgZG91YmxlIHF1YWxp
dHk7CiAgICAgZG91YmxlKiBxdWFsaXR5UHRyID0gMDsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpID4gMSkgewotICAgICAgICBKU1ZhbHVlIHYgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgxKTsKKyAgICAgICAgSlNWYWx1ZSB2ID0gZXhlYy0+YXJndW1lbnQoMSk7CiAgICAgICAgIGlm
ICh2LmlzTnVtYmVyKCkpIHsKICAgICAgICAgICAgIHF1YWxpdHkgPSB2LnRvTnVtYmVyKGV4ZWMp
OwogICAgICAgICAgICAgcXVhbGl0eVB0ciA9ICZxdWFsaXR5OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNIVE1MRG9jdW1lbnRDdXN0b20uY3BwCmluZGV4IDkzMTQ4MjM0
M2UyYTE3MDljYmY3MmNmOTViMzg2OTQ0YjAwODMyMjEuLmE1YzE2MDU3ZTE1OGFmZTE4YWI1Zjcw
OTZlYjkyNGFkM2E3MTczMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSFRNTERvY3VtZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0hUTUxEb2N1bWVudEN1c3RvbS5jcHAKQEAgLTE0NCw3ICsxNDQsNyBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgZG9jdW1lbnRXcml0ZShFeGVjU3RhdGUqIGV4ZWMsIEhUTUxEb2N1bWVudCogZG9j
dW1lbnQsIE5ld2xpbgogICAgICAgICAgICAgc2VnbWVudGVkU3RyaW5nLmNsZWFyKCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBzaXplOyArK2kp
IHsKLSAgICAgICAgICAgICAgICBTdHJpbmcgc3Vic2VxdWVudFN0cmluZyA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgICAg
ICAgICBTdHJpbmcgc3Vic2VxdWVudFN0cmluZyA9IGV4ZWMtPmFyZ3VtZW50KGkpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICAgICAgICAgICAgICBzZWdtZW50ZWRTdHJpbmcuYXBw
ZW5kKFNlZ21lbnRlZFN0cmluZyhzdWJzZXF1ZW50U3RyaW5nKSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAxYTI5YzM1OTI3Y2IwN2NhZDdjZmVlMGI0
YmQyZDZjMzZjNjA0NTQ2Li43MmM0ODZmOTI1YzNmMzFmYjMxNDA2MmRlZDQ0OTMwYzM3MTM5MjVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3Rl
ZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC05MCw3ICs5MCw3IEBAIEpTVmFsdWUgSlNJbmplY3Rl
ZFNjcmlwdEhvc3Q6Omluc3BlY3RlZE9iamVjdChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgaWYgKGV4
ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwog
Ci0gICAgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0ID0gaW1w
bCgpLT5pbnNwZWN0ZWRPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMihl
eGVjKSk7CisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0OjpJbnNwZWN0YWJsZU9iamVjdCogb2JqZWN0
ID0gaW1wbCgpLT5pbnNwZWN0ZWRPYmplY3QoZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVj
KSk7CiAgICAgaWYgKCFvYmplY3QpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogCkBA
IC0xMDcsNyArMTA3LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6aW50ZXJuYWxD
b25zdHJ1Y3Rvck5hbWUoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENv
dW50KCkgPCAxKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIAotICAgIEpTT2JqZWN0
KiB0aGlzT2JqZWN0ID0ganNDYXN0PEpTT2JqZWN0Kj4oZXhlYy0+dW5jaGVja2VkQXJndW1lbnQo
MCkudG9UaGlzKGV4ZWMsIE5vdFN0cmljdE1vZGUpKTsKKyAgICBKU09iamVjdCogdGhpc09iamVj
dCA9IGpzQ2FzdDxKU09iamVjdCo+KGV4ZWMtPmFyZ3VtZW50KDApLnRvVGhpcyhleGVjLCBOb3RT
dHJpY3RNb2RlKSk7CiAgICAgU3RyaW5nIHJlc3VsdCA9IHRoaXNPYmplY3QtPm1ldGhvZFRhYmxl
KCktPmNsYXNzTmFtZSh0aGlzT2JqZWN0KTsKICAgICByZXR1cm4ganNTdHJpbmdXaXRoQ2FjaGUo
ZXhlYywgcmVzdWx0KTsKIH0KQEAgLTExNyw3ICsxMTcsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRT
Y3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCk7CisgICAg
SlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAgIHJldHVybiBqc0Jvb2xlYW4o
dmFsdWUuaW5oZXJpdHMoSlNIVE1MQWxsQ29sbGVjdGlvbjo6aW5mbygpKSk7CiB9CiAKQEAgLTEy
Niw3ICsxMjYsNyBAQCBKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0Ojp0eXBlKEV4ZWNTdGF0
ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiAKLSAgICBKU1ZhbHVlIHZhbHVlID0gZXhlYy0+dW5jaGVja2Vk
QXJndW1lbnQoMCk7CisgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwogICAg
IGlmICh2YWx1ZS5pc1N0cmluZygpKQogICAgICAgICByZXR1cm4ganNTdHJpbmcoZXhlYywgU3Ry
aW5nKCJzdHJpbmciKSk7CiAgICAgaWYgKHZhbHVlLmluaGVyaXRzKEpTQXJyYXk6OmluZm8oKSkp
CkBAIC0xNTgsNyArMTU4LDcgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZnVuY3Rp
b25EZXRhaWxzKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3Vu
dCgpIDwgMSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNWYWx1ZSB2YWx1
ZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVj
LT5hcmd1bWVudCgwKTsKICAgICBpZiAoIXZhbHVlLmFzQ2VsbCgpLT5pbmhlcml0cyhKU0Z1bmN0
aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBKU0Z1bmN0
aW9uKiBmdW5jdGlvbiA9IGpzQ2FzdDxKU0Z1bmN0aW9uKj4odmFsdWUpOwpAQCAtMjIyLDcgKzIy
Miw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAg
ICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApOworICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgw
KTsKICAgICBpZiAoIXZhbHVlLmlzT2JqZWN0KCkgfHwgdmFsdWUuaXNOdWxsKCkpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIE5vZGUqIG5vZGUgPSB0b05vZGUodmFsdWUpOwpA
QCAtMjQ3LDggKzI0Nyw4IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50
TGlzdGVuZXJzKEV4ZWNTdGF0ZSogZXhlYykKIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6
Omluc3BlY3QoRXhlY1N0YXRlKiBleGVjKQogewogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPj0gMikgewotICAgICAgICBTY3JpcHRWYWx1ZSBvYmplY3QoZXhlYy0+dm0oKSwgZXhlYy0+
dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgICAgICBTY3JpcHRWYWx1ZSBoaW50cyhleGVjLT52
bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSk7CisgICAgICAgIFNjcmlwdFZhbHVlIG9i
amVjdChleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudCgwKSk7CisgICAgICAgIFNjcmlwdFZhbHVl
IGhpbnRzKGV4ZWMtPnZtKCksIGV4ZWMtPmFyZ3VtZW50KDEpKTsKICAgICAgICAgaW1wbCgpLT5p
bnNwZWN0SW1wbChvYmplY3QudG9JbnNwZWN0b3JWYWx1ZShleGVjKSwgaGludHMudG9JbnNwZWN0
b3JWYWx1ZShleGVjKSk7CiAgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwpAQCAtMjU5
LDcgKzI1OSw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OmRhdGFiYXNlSWQoRXhl
Y1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQotICAgIERh
dGFiYXNlKiBkYXRhYmFzZSA9IHRvRGF0YWJhc2UoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkp
OworICAgIERhdGFiYXNlKiBkYXRhYmFzZSA9IHRvRGF0YWJhc2UoZXhlYy0+YXJndW1lbnQoMCkp
OwogICAgIGlmIChkYXRhYmFzZSkKICAgICAgICAgcmV0dXJuIGpzU3RyaW5nV2l0aENhY2hlKGV4
ZWMsIGltcGwoKS0+ZGF0YWJhc2VJZEltcGwoZGF0YWJhc2UpKTsKICNlbmRpZgpAQCAtMjcwLDcg
KzI3MCw3IEBAIEpTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnN0b3JhZ2VJZChFeGVjU3Rh
dGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDEpCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSB0b1N0b3JhZ2Uo
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOworICAgIFN0b3JhZ2UqIHN0b3JhZ2UgPSB0b1N0
b3JhZ2UoZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIGlmIChzdG9yYWdlKQogICAgICAgICByZXR1
cm4ganNTdHJpbmdXaXRoQ2FjaGUoZXhlYywgaW1wbCgpLT5zdG9yYWdlSWRJbXBsKHN0b3JhZ2Up
KTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTU1FMVHJhbnNhY3Rpb25TeW5jQ3VzdG9tLmNwcAppbmRleCBiNjgy
YzQ1MWQ3OGJlNjE2MjU1YjAxMmM3YzFjZjFjMGYxMzdiNzAwLi4zM2Y4NDM0NDczYzRkYzgwNTZi
ZTllMWM1YTZhNGMzMjZkZmYyMWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1NRTFRyYW5zYWN0aW9uU3luY0N1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvanMvSlNTUUxUcmFuc2FjdGlvblN5bmNDdXN0b20uY3BwCkBAIC00OSw3ICs0OSw3
IEBAIEpTVmFsdWUgSlNTUUxUcmFuc2FjdGlvblN5bmM6OmV4ZWN1dGVTcWwoRXhlY1N0YXRlKiBl
eGVjKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICB9CiAKLSAgICBTdHJpbmcg
c3FsU3RhdGVtZW50ID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBzcWxTdGF0ZW1lbnQgPSBleGVjLT5hcmd1bWVudCgw
KS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlv
bigpKQogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNTVkdMZW5ndGhDdXN0b20uY3BwCmluZGV4IGJhZDhkMzgwNTY4NWZh
ZTc1OTMwNjg4M2VmM2ViOGE3ZTc5MzI0MzkuLjViOTJjMzU2NzFmZWYyMzk0YzBiYjhhMTc2NDEz
Y2YxN2RkNDAxYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU1ZH
TGVuZ3RoQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NWR0xl
bmd0aEN1c3RvbS5jcHAKQEAgLTgzLDcgKzgzLDcgQEAgSlNWYWx1ZSBKU1NWR0xlbmd0aDo6Y29u
dmVydFRvU3BlY2lmaWVkVW5pdHMoRXhlY1N0YXRlKiBleGVjKQogICAgIGlmIChleGVjLT5hcmd1
bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlv
bihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAKLSAgICB1bnNp
Z25lZCBzaG9ydCB1bml0VHlwZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvVUludDMy
KGV4ZWMpOworICAgIHVuc2lnbmVkIHNob3J0IHVuaXRUeXBlID0gZXhlYy0+YXJndW1lbnQoMCku
dG9VSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNTaGFyZWRXb3JrZXJDdXN0b20uY3BwCmluZGV4IDVjZWJmODc5ZGZmYzJhZmU1NjVkNGZj
Y2YzMjQyZWY3OGIxYjA1ZTMuLmMxNDYxMmQ4YjNjODMyNGNhMTAzNmMwMmJlYmFkYjNiMDE1ZGY0
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTU2hhcmVkV29ya2Vy
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1NoYXJlZFdvcmtl
ckN1c3RvbS5jcHAKQEAgLTYzLDEwICs2MywxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIEpTU2hhcmVkV29ya2VyQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTU2hhcmVkV29ya2VyKAog
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dW
TUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAg
IFN0cmluZyBzY3JpcHRVUkwgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhl
eGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5nIHNjcmlwdFVSTCA9IGV4ZWMtPmFyZ3VtZW50
KDApLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKICAgICBTdHJpbmcgbmFtZTsKICAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSkKLSAgICAgICAgbmFtZSA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICAgICAgbmFt
ZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKIAogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShKU1ZhbHVlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNX
ZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwCmluZGV4IGNhMGFlZGY0NTQyN2U2
ZmI5M2ZjYmZlNzQyY2M2YjExNjFjZDljZmYuLjQ0MjYwMzc0ZmRjYjU3YjFlYWYyMDVhNGY3MGZh
MjFhOGFhYzY5ZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU1dlYkdMUmVuZGVyaW5nQ29udGV4dEN1c3RvbS5jcHAKQEAgLTE1NiwxMCArMTU2LDEw
IEBAIHN0YXRpYyBKU1ZhbHVlIGdldE9iamVjdFBhcmFtZXRlcihKU1dlYkdMUmVuZGVyaW5nQ29u
dGV4dCogb2JqLCBFeGVjU3RhdGUqIGV4ZWMsCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJl
bmRlcmluZ0NvbnRleHQqPihvYmotPmltcGwoKSk7Ci0gICAgdW5zaWduZWQgdGFyZ2V0ID0gZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKKyAgICB1bnNpZ25lZCB0YXJn
ZXQgPSBleGVjLT5hcmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgdW5zaWduZWQg
cG5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgIHVu
c2lnbmVkIHBuYW1lID0gZXhlYy0+YXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAg
IFdlYkdMR2V0SW5mbyBpbmZvOwpAQCAtMjQ2LDkgKzI0NiwxMSBAQCBKU1ZhbHVlIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRBdHRhY2hlZFNoYWRlcnMoRXhlY1N0YXRlKiBleGVjKQogICAg
ICAgICByZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91
Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0Kj4oaW1wbCgpKTsKLSAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSB0b1dlYkdM
UHJvZ3JhbShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYgKCFwcm9ncmFtKQor
ICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVudCgwKS5p
c1VuZGVmaW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdM
UHJvZ3JhbTo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwor
ICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IHRvV2ViR0xQcm9ncmFtKGV4ZWMtPmFyZ3VtZW50
KDApKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBqc051
bGwoKTsKICAgICBWZWN0b3I8UmVmUHRyPFdlYkdMU2hhZGVyPiA+IHNoYWRlcnM7CiAgICAgYm9v
bCBzdWNjZWVkID0gY29udGV4dC0+Z2V0QXR0YWNoZWRTaGFkZXJzKHByb2dyYW0sIHNoYWRlcnMs
IGVjKTsKICAgICBpZiAoZWMpIHsKQEAgLTI2OSw3ICsyNzEsNyBAQCBKU1ZhbHVlIEpTV2ViR0xS
ZW5kZXJpbmdDb250ZXh0OjpnZXRFeHRlbnNpb24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBy
ZXR1cm4gZXhlYy0+dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihleGVjKSk7CiAKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQg
PSBzdGF0aWNfY2FzdDxXZWJHTFJlbmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOwotICAgIGNvbnN0
IFN0cmluZyBuYW1lID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpOworICAgIGNvbnN0IFN0cmluZyBuYW1lID0gZXhlYy0+YXJndW1lbnQoMCku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24o
KSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgV2ViR0xFeHRlbnNpb24qIGV4
dGVuc2lvbiA9IGNvbnRleHQtPmdldEV4dGVuc2lvbihuYW1lKTsKQEAgLTI4OCwxMyArMjkwLDEz
IEBAIEpTVmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldEZyYW1lYnVmZmVyQXR0YWNo
bWVudFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsK
ICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBzdGF0aWNfY2FzdDxXZWJHTFJl
bmRlcmluZ0NvbnRleHQqPihpbXBsKCkpOwotICAgIHVuc2lnbmVkIHRhcmdldCA9IGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgdW5zaWduZWQgdGFyZ2V0ID0g
ZXhlYy0+YXJndW1lbnQoMCkudG9JbnQzMihleGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIHVuc2lnbmVkIGF0dGFj
aG1lbnQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgIHVu
c2lnbmVkIGF0dGFjaG1lbnQgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwogICAg
IGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
Ci0gICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0ludDMy
KGV4ZWMpOworICAgIHVuc2lnbmVkIHBuYW1lID0gZXhlYy0+YXJndW1lbnQoMikudG9JbnQzMihl
eGVjKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwogICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0RnJhbWVidWZm
ZXJBdHRhY2htZW50UGFyYW1ldGVyKHRhcmdldCwgYXR0YWNobWVudCwgcG5hbWUsIGVjKTsKQEAg
LTMxMiw3ICszMTQsNyBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRQYXJh
bWV0ZXIoRXhlY1N0YXRlKiBleGVjKQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAg
V2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJp
bmdDb250ZXh0Kj4oaW1wbCgpKTsKLSAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT5h
cmd1bWVudCgwKS50b0ludDMyKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkK
ICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBj
b250ZXh0LT5nZXRQYXJhbWV0ZXIocG5hbWUsIGVjKTsKQEAgLTMzMCwxMCArMzMyLDEwIEBAIEpT
VmFsdWUgSlNXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OmdldFByb2dyYW1QYXJhbWV0ZXIoRXhlY1N0
YXRlKiBleGVjKQogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJp
bmdDb250ZXh0KiBjb250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4o
aW1wbCgpKTsKLSAgICBXZWJHTFByb2dyYW0qIHByb2dyYW0gPSB0b1dlYkdMUHJvZ3JhbShleGVj
LT51bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgaWYgKCFwcm9ncmFtKQorICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5lZE9y
TnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMUHJvZ3JhbTo6aW5m
bygpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwotICAgIHVuc2lnbmVk
IHBuYW1lID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9JbnQzMihleGVjKTsKKyAgICBX
ZWJHTFByb2dyYW0qIHByb2dyYW0gPSB0b1dlYkdMUHJvZ3JhbShleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b0ludDMyKGV4ZWMpOwog
ICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7CiAgICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRQcm9ncmFtUGFyYW1ldGVy
KHByb2dyYW0sIHBuYW1lLCBlYyk7CkBAIC0zNTYsMTAgKzM1OCwxMCBAQCBKU1ZhbHVlIEpTV2Vi
R0xSZW5kZXJpbmdDb250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXIoRXhlY1N0YXRlKiBleGVjKQog
CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBj
b250ZXh0ID0gc3RhdGljX2Nhc3Q8V2ViR0xSZW5kZXJpbmdDb250ZXh0Kj4oaW1wbCgpKTsKLSAg
ICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYg
IWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLmluaGVyaXRzKEpTV2ViR0xTaGFkZXI6OmluZm8o
KSkpCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDAgJiYgIWV4ZWMtPmFyZ3VtZW50
KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmluaGVyaXRzKEpT
V2ViR0xTaGFkZXI6OmluZm8oKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVj
KTsKLSAgICBXZWJHTFNoYWRlciogc2hhZGVyID0gdG9XZWJHTFNoYWRlcihleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgwKSk7Ci0gICAgdW5zaWduZWQgcG5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgxKS50b0ludDMyKGV4ZWMpOworICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSB0b1dlYkdM
U2hhZGVyKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICB1bnNpZ25lZCBwbmFtZSA9IGV4ZWMtPmFy
Z3VtZW50KDEpLnRvSW50MzIoZXhlYyk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNv
bnRleHQtPmdldFNoYWRlclBhcmFtZXRlcihzaGFkZXIsIHBuYW1lLCBlYyk7CkBAIC0zOTQsMTMg
KzM5NiwxNSBAQCBKU1ZhbHVlIEpTV2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKEV4
ZWNTdGF0ZSogZXhlYykKIAogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVu
ZGVyaW5nQ29udGV4dCogY29udGV4dCA9IHN0YXRpY19jYXN0PFdlYkdMUmVuZGVyaW5nQ29udGV4
dCo+KGltcGwoKSk7Ci0gICAgV2ViR0xQcm9ncmFtKiBwcm9ncmFtID0gdG9XZWJHTFByb2dyYW0o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwotICAgIGlmICghcHJvZ3JhbSkKKyAgICBpZiAo
ZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMCAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaXNVbmRlZmlu
ZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMCkuaW5oZXJpdHMoSlNXZWJHTFByb2dyYW06
OmluZm8oKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKLSAgICBXZWJH
TFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5pZm9ybUxvY2F0aW9uKGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KDEpKTsKLSAgICBpZiAoIWxvY2F0aW9uKQorICAgIFdlYkdMUHJv
Z3JhbSogcHJvZ3JhbSA9IHRvV2ViR0xQcm9ncmFtKGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBp
ZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpID4gMSAmJiAhZXhlYy0+YXJndW1lbnQoMSkuaXNVbmRl
ZmluZWRPck51bGwoKSAmJiAhZXhlYy0+YXJndW1lbnQoMSkuaW5oZXJpdHMoSlNXZWJHTFVuaWZv
cm1Mb2NhdGlvbjo6aW5mbygpKSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMp
OwotICAgIFdlYkdMR2V0SW5mbyBpbmZvID0gY29udGV4dC0+Z2V0VW5pZm9ybShwcm9ncmFtLCBs
b2NhdGlvbiwgZWMpOworICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2MgPSB0b1dlYkdMVW5p
Zm9ybUxvY2F0aW9uKGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworICAgIFdlYkdMR2V0SW5mbyBp
bmZvID0gY29udGV4dC0+Z2V0VW5pZm9ybShwcm9ncmFtLCBsb2MsIGVjKTsKICAgICBpZiAoZWMp
IHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKICAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CkBAIC00NjgsMTYgKzQ3MiwxNiBAQCBzdGF0aWMgSlNDOjpKU1ZhbHVlIGRh
dGFGdW5jdGlvbmYoRGF0YUZ1bmN0aW9uVG9DYWxsIGYsIEpTQzo6RXhlY1N0YXRlKiBleGVjLCBX
ZQogICAgIGxvbmcgaW5kZXggPSAtMTsKICAgICAKICAgICBpZiAoZnVuY3Rpb25Gb3JVbmlmb3Jt
KGYpKSB7Ci0gICAgICAgIGxvY2F0aW9uID0gdG9XZWJHTFVuaWZvcm1Mb2NhdGlvbihleGVjLT51
bmNoZWNrZWRBcmd1bWVudCgwKSk7Ci0gICAgICAgIGlmICghbG9jYXRpb24pCisgICAgICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVm
aW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhKU1dlYkdMVW5pZm9y
bUxvY2F0aW9uOjppbmZvKCkpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4
ZWMpOworICAgICAgICBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oZXhlYy0+YXJn
dW1lbnQoMCkpOwogICAgIH0gZWxzZQotICAgICAgICBpbmRleCA9IGV4ZWMtPnVuY2hlY2tlZEFy
Z3VtZW50KDApLnRvSW50MzIoZXhlYyk7CisgICAgICAgIGluZGV4ID0gZXhlYy0+YXJndW1lbnQo
MCkudG9JbnQzMihleGVjKTsKIAogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAg
ICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgICAgIAotICAgIFJlZlB0cjxGbG9hdDMyQXJy
YXk+IHdlYkdMQXJyYXkgPSB0b0Zsb2F0MzJBcnJheShleGVjLT51bmNoZWNrZWRBcmd1bWVudCgx
KSk7CisgICAgUmVmUHRyPEZsb2F0MzJBcnJheT4gd2ViR0xBcnJheSA9IHRvRmxvYXQzMkFycmF5
KGV4ZWMtPmFyZ3VtZW50KDEpKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpICAgIAog
ICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICAgICAgCkBAIC01MTUsNyArNTE5LDcg
QEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25mKERhdGFGdW5jdGlvblRvQ2FsbCBm
LCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV2UKICAgICB9CiAKICAgICBWZWN0b3I8ZmxvYXQsIDY0
PiBhcnJheTsKLSAgICBpZiAoIXRvVmVjdG9yKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLCBhcnJheSkpCisgICAgaWYgKCF0b1ZlY3RvcihleGVjLCBleGVjLT5hcmd1bWVudCgxKSwg
YXJyYXkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoZXhlYyk7CiAKICAgICBzd2l0
Y2ggKGYpIHsKQEAgLTU1NCwxMiArNTU4LDE3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1
bmN0aW9uaShEYXRhRnVuY3Rpb25Ub0NhbGwgZiwgSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIFdlCiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSAhPSAyKQogICAgICAgICByZXR1cm4gZXhlYy0+
dm0oKS50aHJvd0V4Y2VwdGlvbihleGVjLCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihl
eGVjKSk7CiAKLSAgICBXZWJHTFVuaWZvcm1Mb2NhdGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5p
Zm9ybUxvY2F0aW9uKGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKLSAgICBpZiAoIWxvY2F0
aW9uKQorICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5hcmd1bWVu
dCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpICYmICFleGVjLT5hcmd1bWVudCgwKS5pbmhlcml0cyhK
U1dlYkdMVW5pZm9ybUxvY2F0aW9uOjppbmZvKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBl
RXJyb3IoZXhlYyk7CisgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0gdG9XZWJH
TFVuaWZvcm1Mb2NhdGlvbihleGVjLT5hcmd1bWVudCgwKSk7CiAgIAotICAgIFJlZlB0cjxJbnQz
MkFycmF5PiB3ZWJHTEFycmF5ID0gdG9JbnQzMkFycmF5KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpKTsKLQorICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJuIGpz
VW5kZWZpbmVkKCk7CisgICAgICAgIAorICAgIFJlZlB0cjxJbnQzMkFycmF5PiB3ZWJHTEFycmF5
ID0gdG9JbnQzMkFycmF5KGV4ZWMtPmFyZ3VtZW50KDEpKTsKKyAgICBpZiAoZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpICAgIAorICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKKyAgICAgICAgCiAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgaWYgKHdlYkdMQXJyYXkpIHsKICAgICAgICAg
c3dpdGNoIChmKSB7CkBAIC01ODUsNyArNTk0LDcgQEAgc3RhdGljIEpTQzo6SlNWYWx1ZSBkYXRh
RnVuY3Rpb25pKERhdGFGdW5jdGlvblRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0ZSogZXhlYywgV2UK
IAogCiAgICAgVmVjdG9yPGludCwgNjQ+IGFycmF5OwotICAgIGlmICghdG9WZWN0b3IoZXhlYywg
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSksIGFycmF5KSkKKyAgICBpZiAoIXRvVmVjdG9yKGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KDEpLCBhcnJheSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVF
cnJvcihleGVjKTsKIAogICAgIHN3aXRjaCAoZikgewpAQCAtNjE0LDE1ICs2MjMsMjAgQEAgc3Rh
dGljIEpTQzo6SlNWYWx1ZSBkYXRhRnVuY3Rpb25NYXRyaXgoRGF0YUZ1bmN0aW9uTWF0cml4VG9D
YWxsIGYsIEpTQzo6RXhlY1N0YXQKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpICE9IDMp
CiAgICAgICAgIHJldHVybiBleGVjLT52bSgpLnRocm93RXhjZXB0aW9uKGV4ZWMsIGNyZWF0ZU5v
dEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKIAotICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9u
KiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oZXhlYy0+dW5jaGVja2VkQXJndW1l
bnQoMCkpOwotICAgIGlmICghbG9jYXRpb24pCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQo
KSA+IDAgJiYgIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkgJiYgIWV4ZWMt
PmFyZ3VtZW50KDApLmluaGVyaXRzKEpTV2ViR0xVbmlmb3JtTG9jYXRpb246OmluZm8oKSkpCiAg
ICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcihleGVjKTsKKyAgICBXZWJHTFVuaWZvcm1Mb2Nh
dGlvbiogbG9jYXRpb24gPSB0b1dlYkdMVW5pZm9ybUxvY2F0aW9uKGV4ZWMtPmFyZ3VtZW50KDAp
KTsKIAotICAgIGJvb2wgdHJhbnNwb3NlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkudG9C
b29sZWFuKGV4ZWMpOwogICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCiAgICAgICAg
IHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAKLSAgICBSZWZQdHI8RmxvYXQzMkFycmF5
PiB3ZWJHTEFycmF5ID0gdG9GbG9hdDMyQXJyYXkoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMikp
OworICAgIGJvb2wgdHJhbnNwb3NlID0gZXhlYy0+YXJndW1lbnQoMSkudG9Cb29sZWFuKGV4ZWMp
OworICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkgICAgCisgICAgICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworICAgICAgICAKKyAgICBSZWZQdHI8RmxvYXQzMkFycmF5PiB3ZWJHTEFycmF5
ID0gdG9GbG9hdDMyQXJyYXkoZXhlYy0+YXJndW1lbnQoMikpOworICAgIGlmIChleGVjLT5oYWRF
eGNlcHRpb24oKSkgICAgCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgICAgICAK
ICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBpZiAod2ViR0xBcnJheSkgewpAQCAtNjQz
LDcgKzY1Nyw3IEBAIHN0YXRpYyBKU0M6OkpTVmFsdWUgZGF0YUZ1bmN0aW9uTWF0cml4KERhdGFG
dW5jdGlvbk1hdHJpeFRvQ2FsbCBmLCBKU0M6OkV4ZWNTdGF0CiAgICAgfQogCiAgICAgVmVjdG9y
PGZsb2F0LCA2ND4gYXJyYXk7Ci0gICAgaWYgKCF0b1ZlY3RvcihleGVjLCBleGVjLT51bmNoZWNr
ZWRBcmd1bWVudCgyKSwgYXJyYXkpKQorICAgIGlmICghdG9WZWN0b3IoZXhlYywgZXhlYy0+YXJn
dW1lbnQoMiksIGFycmF5KSkKICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKGV4ZWMpOwog
CiAgICAgc3dpdGNoIChmKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCmluZGV4IGM4MWJjMTRmZWYzM2UzNzRh
MDEyZTdkMjY5ZmM2MjU1MzRiZDc4NmQuLmUzNWI2OWRmODNlNTk3NTI0NzZiZmQ5Yzk0YmI4NTc0
OGMwMDA1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2Vy
R2xvYmFsU2NvcGVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
V29ya2VyR2xvYmFsU2NvcGVDdXN0b20uY3BwCkBAIC04NCw3ICs4NCw3IEBAIEpTVmFsdWUgSlNX
b3JrZXJHbG9iYWxTY29wZTo6aW1wb3J0U2NyaXB0cyhFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICBW
ZWN0b3I8U3RyaW5nPiB1cmxzOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBleGVjLT5h
cmd1bWVudENvdW50KCk7IGkrKykgewotICAgICAgICB1cmxzLmFwcGVuZChleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOworICAgICAgICB1cmxz
LmFwcGVuZChleGVjLT5hcmd1bWVudChpKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwog
ICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCmluZGV4IDMwZmNmM2ViM2U2NTBjN2UzYjkzOTM2
ZjUzNjIxYmEzMzI2OWJkZDMuLjJiZDQ5YzExMjMzZjViMWQ1MTJmYzQ3YjE0N2RkMmNmMzAzZWY0
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVl
c3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTWE1MSHR0cFJl
cXVlc3RDdXN0b20uY3BwCkBAIC04OCwxNyArODgsMTggQEAgSlNWYWx1ZSBKU1hNTEh0dHBSZXF1
ZXN0OjpvcGVuKEV4ZWNTdGF0ZSogZXhlYykKICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgp
IDwgMikKICAgICAgICAgcmV0dXJuIGV4ZWMtPnZtKCkudGhyb3dFeGNlcHRpb24oZXhlYywgY3Jl
YXRlTm90RW5vdWdoQXJndW1lbnRzRXJyb3IoZXhlYykpOwogCi0gICAgY29uc3QgS1VSTCYgdXJs
ID0gaW1wbCgpLT5zY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmNvbXBsZXRlVVJMKGV4ZWMtPnVu
Y2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKSk7Ci0gICAgU3Ry
aW5nIG1ldGhvZCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApLnRvU3RyaW5nKGV4ZWMpLT52
YWx1ZShleGVjKTsKKyAgICBjb25zdCBLVVJMJiB1cmwgPSBpbXBsKCktPnNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQoKS0+Y29tcGxldGVVUkwoZXhlYy0+YXJndW1lbnQoMSkudG9TdHJpbmcoZXhlYykt
PnZhbHVlKGV4ZWMpKTsKKyAgICBTdHJpbmcgbWV0aG9kID0gZXhlYy0+YXJndW1lbnQoMCkudG9T
dHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwogCiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAzKSB7Ci0gICAgICAgIGJvb2wgYXN5bmMg
PSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgyKS50b0Jvb2xlYW4oZXhlYyk7Ci0gICAgICAgIGlm
ICghZXhlYy0+YXJndW1lbnQoMykuaXNVbmRlZmluZWQoKSkgewotICAgICAgICAgICAgU3RyaW5n
IHVzZXIgPSB2YWx1ZVRvU3RyaW5nV2l0aE51bGxDaGVjayhleGVjLCBleGVjLT51bmNoZWNrZWRB
cmd1bWVudCgzKSk7CisgICAgICAgIGJvb2wgYXN5bmMgPSBleGVjLT5hcmd1bWVudCgyKS50b0Jv
b2xlYW4oZXhlYyk7CiAKLSAgICAgICAgICAgIGlmICghZXhlYy0+YXJndW1lbnQoNCkuaXNVbmRl
ZmluZWQoKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBwYXNzd29yZCA9IHZhbHVlVG9TdHJp
bmdXaXRoTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDQpKTsKKyAgICAg
ICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA0ICYmICFleGVjLT5hcmd1bWVudCgzKS5p
c1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICBTdHJpbmcgdXNlciA9IHZhbHVlVG9TdHJpbmdX
aXRoTnVsbENoZWNrKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDMpKTsKKworICAgICAgICAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSA1ICYmICFleGVjLT5hcmd1bWVudCg0KS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHBhc3N3b3JkID0gdmFsdWVUb1N0cmlu
Z1dpdGhOdWxsQ2hlY2soZXhlYywgZXhlYy0+YXJndW1lbnQoNCkpOwogICAgICAgICAgICAgICAg
IGltcGwoKS0+b3BlbihtZXRob2QsIHVybCwgYXN5bmMsIHVzZXIsIHBhc3N3b3JkLCBlYyk7CiAg
ICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBpbXBsKCktPm9wZW4obWV0aG9kLCB1
cmwsIGFzeW5jLCB1c2VyLCBlYyk7CkBAIC0xNDgsMjIgKzE0OSwyNiBAQCBKU1ZhbHVlIEpTWE1M
SHR0cFJlcXVlc3Q6OnNlbmQoRXhlY1N0YXRlKiBleGVjKQogICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFNlbmRYTUxIdHRwUmVxdWVzdChpbXBsKCktPnNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQoKSwgaW1wbCgpLT51cmwoKSk7CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAg
ICBKU1ZhbHVlIHZhbCA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmICh2YWwuaXNVbmRlZmlu
ZWRPck51bGwoKSkKKyAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgaW1w
bCgpLT5zZW5kKGVjKTsKLSAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNEb2N1bWVudDo6aW5m
bygpKSkKLSAgICAgICAgaW1wbCgpLT5zZW5kKHRvRG9jdW1lbnQodmFsKSwgZWMpOwotICAgIGVs
c2UgaWYgKHZhbC5pbmhlcml0cyhKU0Jsb2I6OmluZm8oKSkpCi0gICAgICAgIGltcGwoKS0+c2Vu
ZCh0b0Jsb2IodmFsKSwgZWMpOwotICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0RPTUZvcm1E
YXRhOjppbmZvKCkpKQotICAgICAgICBpbXBsKCktPnNlbmQodG9ET01Gb3JtRGF0YSh2YWwpLCBl
Yyk7Ci0gICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTQXJyYXlCdWZmZXI6OmluZm8oKSkpCi0g
ICAgICAgIGltcGwoKS0+c2VuZCh0b0FycmF5QnVmZmVyKHZhbCksIGVjKTsKLSAgICBlbHNlIGlm
ICh2YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZlclZpZXc6OmluZm8oKSkpIHsKLSAgICAgICAgUmVm
UHRyPEFycmF5QnVmZmVyVmlldz4gdmlldyA9IHRvQXJyYXlCdWZmZXJWaWV3KHZhbCk7Ci0gICAg
ICAgIGltcGwoKS0+c2VuZCh2aWV3LmdldCgpLCBlYyk7Ci0gICAgfSBlbHNlCi0gICAgICAgIGlt
cGwoKS0+c2VuZCh2YWwudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpLCBlYyk7CisgICAgZWxz
ZSB7CisgICAgICAgIEpTVmFsdWUgdmFsID0gZXhlYy0+YXJndW1lbnQoMCk7CisgICAgICAgIGlm
ICh2YWwuaXNVbmRlZmluZWRPck51bGwoKSkKKyAgICAgICAgICAgIGltcGwoKS0+c2VuZChlYyk7
CisgICAgICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0RvY3VtZW50OjppbmZvKCkpKQorICAg
ICAgICAgICAgaW1wbCgpLT5zZW5kKHRvRG9jdW1lbnQodmFsKSwgZWMpOworICAgICAgICBlbHNl
IGlmICh2YWwuaW5oZXJpdHMoSlNCbG9iOjppbmZvKCkpKQorICAgICAgICAgICAgaW1wbCgpLT5z
ZW5kKHRvQmxvYih2YWwpLCBlYyk7CisgICAgICAgIGVsc2UgaWYgKHZhbC5pbmhlcml0cyhKU0RP
TUZvcm1EYXRhOjppbmZvKCkpKQorICAgICAgICAgICAgaW1wbCgpLT5zZW5kKHRvRE9NRm9ybURh
dGEodmFsKSwgZWMpOworICAgICAgICBlbHNlIGlmICh2YWwuaW5oZXJpdHMoSlNBcnJheUJ1ZmZl
cjo6aW5mbygpKSkKKyAgICAgICAgICAgIGltcGwoKS0+c2VuZCh0b0FycmF5QnVmZmVyKHZhbCks
IGVjKTsKKyAgICAgICAgZWxzZSBpZiAodmFsLmluaGVyaXRzKEpTQXJyYXlCdWZmZXJWaWV3Ojpp
bmZvKCkpKSB7CisgICAgICAgICAgICBSZWZQdHI8QXJyYXlCdWZmZXJWaWV3PiB2aWV3ID0gdG9B
cnJheUJ1ZmZlclZpZXcodmFsKTsKKyAgICAgICAgICAgIGltcGwoKS0+c2VuZCh2aWV3LmdldCgp
LCBlYyk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgaW1wbCgpLT5zZW5kKHZhbC50b1N0
cmluZyhleGVjKS0+dmFsdWUoZXhlYyksIGVjKTsKKyAgICB9CiAKICAgICBTZW5kRnVuY3RvciBm
dW5jdG9yOwogICAgIGV4ZWMtPml0ZXJhdGUoZnVuY3Rvcik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9qcy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNYU0xUUHJvY2Vzc29yQ3VzdG9tLmNwcAppbmRleCA0MDVmYmEw
Zjc3NTc0NTZhNjI5ZjNhNTk4NTg4MDZlZGZmMDE1MTM3Li41NDM2YTZiOWY5NjExOTA1ZTVlNjJh
MGVmYWViOTQwNzUxNWVmNDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTWFNMVFByb2Nlc3NvckN1c3RvbS5jcHAKQEAgLTUwLDkgKzUwLDkgQEAgSlNWYWx1ZSBK
U1hTTFRQcm9jZXNzb3I6OnNldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYg
KGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkgfHwgZXhlYy0+YXJndW1lbnQo
MikuaXNVbmRlZmluZWRPck51bGwoKSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7IC8v
IFRocm93IGV4Y2VwdGlvbj8KLSAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+dW5jaGVj
a2VkQXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOwotICAgIFN0cmluZyBs
b2NhbE5hbWUgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7Ci0gICAgU3RyaW5nIHZhbHVlID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMiku
dG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBl
eGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CisgICAgU3RyaW5n
IGxvY2FsTmFtZSA9IGV4ZWMtPmFyZ3VtZW50KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVj
KTsKKyAgICBTdHJpbmcgdmFsdWUgPSBleGVjLT5hcmd1bWVudCgyKS50b1N0cmluZyhleGVjKS0+
dmFsdWUoZXhlYyk7CiAgICAgaW1wbCgpLT5zZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2Nh
bE5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KQEAgLTYxLDggKzYx
LDggQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OmdldFBhcmFtZXRlcihFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVkT3JOdWxsKCkpCiAg
ICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1lc3BhY2VVUkkgPSBl
eGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7Ci0g
ICAgU3RyaW5nIGxvY2FsTmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvU3RyaW5n
KGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJID0gZXhlYy0+YXJn
dW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0cmluZyBsb2NhbE5h
bWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYyk7CiAgICAg
U3RyaW5nIHZhbHVlID0gaW1wbCgpLT5nZXRQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUpOwogICAgIHJldHVybiBqc1N0cmluZ09yVW5kZWZpbmVkKGV4ZWMsIHZhbHVlKTsKIH0KQEAg
LTcxLDggKzcxLDggQEAgSlNWYWx1ZSBKU1hTTFRQcm9jZXNzb3I6OnJlbW92ZVBhcmFtZXRlcihF
eGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50KDEpLmlzVW5kZWZpbmVk
T3JOdWxsKCkpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIFN0cmluZyBuYW1l
c3BhY2VVUkkgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFs
dWUoZXhlYyk7Ci0gICAgU3RyaW5nIGxvY2FsTmFtZSA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KDEpLnRvU3RyaW5nKGV4ZWMpLT52YWx1ZShleGVjKTsKKyAgICBTdHJpbmcgbmFtZXNwYWNlVVJJ
ID0gZXhlYy0+YXJndW1lbnQoMCkudG9TdHJpbmcoZXhlYyktPnZhbHVlKGV4ZWMpOworICAgIFN0
cmluZyBsb2NhbE5hbWUgPSBleGVjLT5hcmd1bWVudCgxKS50b1N0cmluZyhleGVjKS0+dmFsdWUo
ZXhlYyk7CiAgICAgaW1wbCgpLT5yZW1vdmVQYXJhbWV0ZXIobmFtZXNwYWNlVVJJLCBsb2NhbE5h
bWUpOwogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjaGVkdWxlZEFjdGlvbi5jcHAKaW5kZXggNzg5ZWJkOGViNTkwMzgxNWU0MTUz
NzUxZDA4YmE4NjgxMDQzZjlhOS4uN2YyZTVjNWVlYjhmZDM5ZTM3N2U5NzJjNzY2ZWU4MmI5OWY1
NzRlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NoZWR1bGVkQWN0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY2hlZHVsZWRBY3Rpb24u
Y3BwCkBAIC03Miw3ICs3Miw3IEBAIFNjaGVkdWxlZEFjdGlvbjo6U2NoZWR1bGVkQWN0aW9uKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSBmdW5jdGlvbiwgRE9NV3JhcHBlcldvCiAgICAgLy8gc2V0
VGltZW91dChmdW5jdGlvbiwgaW50ZXJ2YWwsIGFyZzAsIGFyZzEuLi4pLgogICAgIC8vIFN0YXJ0
IGF0IDIgdG8gc2tpcCBmdW5jdGlvbiBhbmQgaW50ZXJ2YWwuCiAgICAgZm9yIChzaXplX3QgaSA9
IDI7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKLSAgICAgICAgbV9hcmdzLmFwcGVu
ZChTdHJvbmc8SlNDOjpVbmtub3duPihleGVjLT52bSgpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVu
dChpKSkpOworICAgICAgICBtX2FyZ3MuYXBwZW5kKFN0cm9uZzxKU0M6OlVua25vd24+KGV4ZWMt
PnZtKCksIGV4ZWMtPmFyZ3VtZW50KGkpKSk7CiB9CiAKIHZvaWQgU2NoZWR1bGVkQWN0aW9uOjpl
eGVjdXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TY3JpcHRDYWxsU3RhY2tGYWN0b3J5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCmluZGV4IDVk
NjZjNGRlMDA3ZTkzYTY0MGM4ZDFiOGJhMmRkODUxMzBmMGZhNWUuLmI3MTNlNzU1MDAwMTZhZDk1
ZjQxY2M2NWU4NWE5MmVjMjQ4MmFhZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL1NjcmlwdENhbGxTdGFja0ZhY3RvcnkuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAg
UGFzc1JlZlB0cjxTY3JpcHRBcmd1bWVudHM+IGNyZWF0ZVNjcmlwdEFyZ3VtZW50cyhKU0M6OkV4
ZWNTdGF0ZSogZXhlYywgdW5zaWduZWQKICAgICBWZWN0b3I8U2NyaXB0VmFsdWU+IGFyZ3VtZW50
czsKICAgICBzaXplX3QgYXJndW1lbnRDb3VudCA9IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsKICAg
ICBmb3IgKHNpemVfdCBpID0gc2tpcEFyZ3VtZW50Q291bnQ7IGkgPCBhcmd1bWVudENvdW50OyAr
K2kpCi0gICAgICAgIGFyZ3VtZW50cy5hcHBlbmQoU2NyaXB0VmFsdWUoZXhlYy0+dm0oKSwgZXhl
Yy0+dW5jaGVja2VkQXJndW1lbnQoaSkpKTsKKyAgICAgICAgYXJndW1lbnRzLmFwcGVuZChTY3Jp
cHRWYWx1ZShleGVjLT52bSgpLCBleGVjLT5hcmd1bWVudChpKSkpOwogICAgIHJldHVybiBTY3Jp
cHRBcmd1bWVudHM6OmNyZWF0ZShleGVjLCBhcmd1bWVudHMpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDhlODNl
NGE4NjViM2ZjYTIzN2JiNjJkZmI5MGUwYmU4MTViNjYxZDcuLmRlZDQ2YmJkOWU2ZDMxMTM2MTkx
NWIxMDJiYzQwMjI5ZWJlN2U0MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC0yODQ0LDI0ICsyODQ0LDI0IEBAIHN1YiBH
ZW5lcmF0ZVBhcmFtZXRlcnNDaGVjawogICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siJGNhbGxi
YWNrQ2xhc3NOYW1lLmgifSA9IDE7CiAgICAgICAgICAgICBpZiAoJG9wdGlvbmFsKSB7CiAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4gJG5h
bWU7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgaWYgKCFl
eGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7XG4iKTsKLSAg
ICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlmICghZXhlYy0+dW5j
aGVja2VkQXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxuIik7CisgICAgICAgICAg
ICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkg
PiAkYXJnc0luZGV4ICYmICFleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KS5pc1VuZGVmaW5lZE9y
TnVsbCgpKSB7XG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAg
ICAgIGlmICghZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxuIik7CiAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7XG4iKTsKICAgICAgICAgICAgICAgICBpZiAoJGZ1bmN0aW9u
LT5pc1N0YXRpYykgewogICAgICAgICAgICAgICAgICAgICBBZGRUb0ltcGxJbmNsdWRlcygiQ2Fs
bGJhY2tGdW5jdGlvbi5oIik7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJh
eSwgIiAgICAgICAgJG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNr
Q2xhc3NOYW1lfT4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4
KSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAg
ICAkbmFtZSA9IGNyZWF0ZUZ1bmN0aW9uT25seUNhbGxiYWNrPCR7Y2FsbGJhY2tDbGFzc05hbWV9
PihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9i
YWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpKTtcbiIpOwogICAgICAgICAg
ICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICAgICAgJG5hbWUgPSAke2NhbGxiYWNrQ2xhc3NOYW1lfTo6Y3JlYXRlKGFzT2JqZWN0KGV4
ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KCRhcmdzSW5kZXgpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2Jq
ZWN0KCkpO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICAgICAgJG5hbWUgPSAke2NhbGxiYWNrQ2xhc3NOYW1lfTo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMt
PmFyZ3VtZW50KCRhcmdzSW5kZXgpKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwg
IiAgICB9XG4iKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcHVzaChA
JG91dHB1dEFycmF5LCAiICAgIGlmICghZXhlYy0+YXJndW1lbnQoJGFyZ3NJbmRleCkuaXNGdW5j
dGlvbigpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIGlm
IChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gJGFyZ3NJbmRleCB8fCAhZXhlYy0+YXJndW1lbnQo
JGFyZ3NJbmRleCkuaXNGdW5jdGlvbigpKVxuIik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjKTtcbiIpOwog
ICAgICAgICAgICAgICAgIGlmICgkZnVuY3Rpb24tPmlzU3RhdGljKSB7CiAgICAgICAgICAgICAg
ICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKCJDYWxsYmFja0Z1bmN0aW9uLmgiKTsKLSAgICAgICAg
ICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4gJG5h
bWUgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4oZXhl
Yywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFsT2Jq
ZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4g
JG5hbWUgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazwke2NhbGxiYWNrQ2xhc3NOYW1lfT4o
ZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5sZXhpY2FsR2xvYmFs
T2JqZWN0KCkpLCBleGVjLT5hcmd1bWVudCgkYXJnc0luZGV4KSk7XG4iKTsKICAgICAgICAgICAg
ICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIg
ICAgUmVmUHRyPCRhcmdUeXBlPiAkbmFtZSA9ICR7Y2FsbGJhY2tDbGFzc05hbWV9OjpjcmVhdGUo
YXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoJGFyZ3NJbmRleCkpLCBjYXN0ZWRUaGlz
LT5nbG9iYWxPYmplY3QoKSk7XG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1
dEFycmF5LCAiICAgIFJlZlB0cjwkYXJnVHlwZT4gJG5hbWUgPSAke2NhbGxiYWNrQ2xhc3NOYW1l
fTo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KCRhcmdzSW5kZXgpKSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpO1xuIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogICAgICAgICB9IGVsc2lmICgkcGFyYW1ldGVyLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiQ2xh
bXAifSkgewpAQCAtMjg4Niw5ICsyODg2LDkgQEAgc3ViIEdlbmVyYXRlUGFyYW1ldGVyc0NoZWNr
CiAgICAgICAgICAgICBpZiAoIUlzTmF0aXZlVHlwZSgkYXJnVHlwZSkpIHsKICAgICAgICAgICAg
ICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgVmVjdG9yPCRuYXRpdmVFbGVtZW50VHlwZT4g
JG5hbWU7XG4iKTsKICAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgZm9y
ICh1bnNpZ25lZCBpID0gJGFyZ3NJbmRleDsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytp
KSB7XG4iKTsKLSAgICAgICAgICAgICAgICBwdXNoKEAkb3V0cHV0QXJyYXksICIgICAgICAgIGlm
ICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkuaW5oZXJpdHMoSlMke2FyZ1R5cGV9OjppbmZv
KCkpKVxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgICAgICBp
ZiAoIWV4ZWMtPmFyZ3VtZW50KGkpLmluaGVyaXRzKEpTJHthcmdUeXBlfTo6aW5mbygpKSlcbiIp
OwogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAgICAgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpO1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAJG91
dHB1dEFycmF5LCAiICAgICAgICAkbmFtZS5hcHBlbmQodG8kYXJnVHlwZShleGVjLT51bmNoZWNr
ZWRBcmd1bWVudChpKSkpO1xuIik7CisgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5
LCAiICAgICAgICAkbmFtZS5hcHBlbmQodG8kYXJnVHlwZShleGVjLT5hcmd1bWVudChpKSkpO1xu
Iik7CiAgICAgICAgICAgICAgICAgcHVzaChAJG91dHB1dEFycmF5LCAiICAgIH1cbiIpCiAgICAg
ICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB1c2goQCRvdXRwdXRBcnJheSwgIiAg
ICBWZWN0b3I8JG5hdGl2ZUVsZW1lbnRUeXBlPiAkbmFtZSA9IHRvTmF0aXZlQXJndW1lbnRzPCRu
YXRpdmVFbGVtZW50VHlwZT4oZXhlYywgJGFyZ3NJbmRleCk7XG4iKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9K
U1Rlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRleCBjZmM4MDFhMWEzNjdmZWZlNDNh
ODJlZWZmMWFkZTk3MjYxMTE5NTkxLi5kZjRkNjcyMDVkZjhmNmQ0NDcxZmJiMTNmMDcwMzIwMDMw
Mzg4NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
SlMvSlNUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3Bw
CkBAIC0xNDksOSArMTQ5LDkgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyUHJvdG90eXBlRnVuY3Rpb25NZXRob2QKICAgICBUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lciogaW1wbCA9IHN0YXRpY19jYXN0PFRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhlYy0+YXJndW1lbnRD
b3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVOb3RF
bm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5p
c0Z1bmN0aW9uKCkpCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8PSAwIHx8ICFleGVj
LT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMpOwotICAgIFJlZlB0cjxNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciA9
IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tl
ZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxN
ZWRpYVF1ZXJ5TGlzdExpc3RlbmVyPiBsaXN0ZW5lciA9IEpTTWVkaWFRdWVyeUxpc3RMaXN0ZW5l
cjo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFs
T2JqZWN0KCkpOwogICAgIGltcGwtPm1ldGhvZChsaXN0ZW5lcik7CiAgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKaW5kZXggNWNjZWY5M2U5M2Rj
NGNhZDJkZGY3YTVjZmIzMTdkNjk4ZTc1OTAxMi4uYjllNDNjZTRkNTQ0ZTQ3YTMzMjQxODNjNTJi
NDk4NmU4N2I5MTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L0pTL0pTVGVzdE9iai5jcHAKQEAgLTIxMyw5ICsyMTMsOSBAQCBFbmNvZGVkSlNW
YWx1ZSBKU0NfSE9TVF9DQUxMIEpTVGVzdE9iakNvbnN0cnVjdG9yOjpjb25zdHJ1Y3RKU1Rlc3RP
YmooRXhlY1N0YXRlKgogICAgIEpTVGVzdE9iakNvbnN0cnVjdG9yKiBjYXN0ZWRUaGlzID0ganND
YXN0PEpTVGVzdE9iakNvbnN0cnVjdG9yKj4oZXhlYy0+Y2FsbGVlKCkpOwogICAgIGlmIChleGVj
LT5hcmd1bWVudENvdW50KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMs
IGNyZWF0ZU5vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFy
Z3VtZW50KDApLmlzRnVuY3Rpb24oKSkKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9
IDAgfHwgIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0gICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gdGVzdENhbGxi
YWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1
bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBSZWZQdHI8VGVzdENh
bGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4
ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0
cjxUZXN0T2JqPiBvYmplY3QgPSBUZXN0T2JqOjpjcmVhdGUodGVzdENhbGxiYWNrKTsKICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGFzT2JqZWN0KHRvSlMoZXhlYywgY2FzdGVkVGhpcy0+Z2xv
YmFsT2JqZWN0KCksIG9iamVjdC5nZXQoKSkpKTsKIH0KQEAgLTIzNzUsOSArMjM3NSw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25NZXRo
b2RXaXRoQ2FsbGJhY2tBcmcoRXhlCiAgICAgVGVzdE9iaiogaW1wbCA9IHN0YXRpY19jYXN0PFRl
c3RPYmoqPihjYXN0ZWRUaGlzLT5pbXBsKCkpOwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZU5vdEVub3Vn
aEFyZ3VtZW50c0Vycm9yKGV4ZWMpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzRnVu
Y3Rpb24oKSkKKyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9IDAgfHwgIWV4ZWMtPmFy
Z3VtZW50KDApLmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYyk7Ci0gICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFj
azo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKSwgY2FzdGVkVGhp
cy0+Z2xvYmFsT2JqZWN0KCkpOworICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNrID0g
SlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT5hcmd1bWVudCgwKSksIGNhc3Rl
ZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKICAgICBpbXBsLT5tZXRob2RXaXRoQ2FsbGJhY2tBcmco
Y2FsbGJhY2spOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9
CkBAIC0yMzk1LDkgKzIzOTUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGpzVGVz
dE9ialByb3RvdHlwZUZ1bmN0aW9uTWV0aG9kV2l0aE5vbkNhbGxiYWNrQXJnQQogICAgIGludCBu
b25DYWxsYmFjayh0b0ludDMyKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KDApLCBOb3JtYWxDb252ZXJz
aW9uKSk7CiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQogICAgICAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMSku
aXNGdW5jdGlvbigpKQorICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMSB8fCAhZXhl
Yy0+YXJndW1lbnQoMSkuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihleGVjKTsKLSAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IEpTVGVzdENh
bGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSkpLCBjYXN0
ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CisgICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gY2FsbGJh
Y2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSwg
Y2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIGltcGwtPm1ldGhvZFdpdGhOb25DYWxs
YmFja0FyZ0FuZENhbGxiYWNrQXJnKG5vbkNhbGxiYWNrLCBjYWxsYmFjayk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKIH0KQEAgLTI0MTEsMTAgKzI0MTEsMTAg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVGdW5jdGlv
bk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkKICAgICBBU1NFUlRfR0NfT0JKRUNUX0lOSEVSSVRT
KGNhc3RlZFRoaXMsIEpTVGVzdE9iajo6aW5mbygpKTsKICAgICBUZXN0T2JqKiBpbXBsID0gc3Rh
dGljX2Nhc3Q8VGVzdE9iaio+KGNhc3RlZFRoaXMtPmltcGwoKSk7CiAgICAgUmVmUHRyPFRlc3RD
YWxsYmFjaz4gY2FsbGJhY2s7Ci0gICAgaWYgKCFleGVjLT5hcmd1bWVudCgwKS5pc1VuZGVmaW5l
ZE9yTnVsbCgpKSB7Ci0gICAgICAgIGlmICghZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkuaXNG
dW5jdGlvbigpKQorICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPiAwICYmICFleGVjLT5h
cmd1bWVudCgwKS5pc1VuZGVmaW5lZE9yTnVsbCgpKSB7CisgICAgICAgIGlmICghZXhlYy0+YXJn
dW1lbnQoMCkuaXNGdW5jdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYyk7Ci0gICAgICAgIGNhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09i
amVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVj
dCgpKTsKKyAgICAgICAgY2FsbGJhY2sgPSBKU1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0
KGV4ZWMtPmFyZ3VtZW50KDApKSwgY2FzdGVkVGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIH0K
ICAgICBpbXBsLT5tZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI0MjMsMTAgKzI0
MjMsMTAgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RPYmpQcm90b3R5cGVG
dW5jdGlvbk1ldGhvZFdpdGhDYWxsYmFja0FuZE9wdGkKIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0YXRpY01ldGhvZFdpdGhDYWxsYmFj
a0FuZE9wdGlvbmFsQXJnKEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBSZWZQdHI8VGVzdENhbGxi
YWNrPiBjYWxsYmFjazsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDApLmlzVW5kZWZpbmVkT3JO
dWxsKCkpIHsKLSAgICAgICAgaWYgKCFleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKS5pc0Z1bmN0
aW9uKCkpCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+IDAgJiYgIWV4ZWMtPmFyZ3Vt
ZW50KDApLmlzVW5kZWZpbmVkT3JOdWxsKCkpIHsKKyAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dCgwKS5pc0Z1bmN0aW9uKCkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjKTsKLSAgICAgICAgY2FsbGJhY2sgPSBjcmVhdGVGdW5jdGlvbk9ubHlDYWxsYmFjazxKU1Rl
c3RDYWxsYmFjaz4oZXhlYywgc3RhdGljX2Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihleGVjLT5s
ZXhpY2FsR2xvYmFsT2JqZWN0KCkpLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgwKSk7CisgICAg
ICAgIGNhbGxiYWNrID0gY3JlYXRlRnVuY3Rpb25Pbmx5Q2FsbGJhY2s8SlNUZXN0Q2FsbGJhY2s+
KGV4ZWMsIHN0YXRpY19jYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oZXhlYy0+bGV4aWNhbEdsb2Jh
bE9iamVjdCgpKSwgZXhlYy0+YXJndW1lbnQoMCkpOwogICAgIH0KICAgICBUZXN0T2JqOjpzdGF0
aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyhjYWxsYmFjayk7CiAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKQEAgLTI0MzYsOSArMjQzNiw5IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwganNUZXN0T2JqQ29uc3RydWN0b3JGdW5jdGlvblN0
YXRpY01ldGhvZFdpdGhDYWxsYmFjCiB7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
IDEpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlTm90RW5vdWdoQXJn
dW1lbnRzRXJyb3IoZXhlYykpOwotICAgIGlmICghZXhlYy0+YXJndW1lbnQoMCkuaXNGdW5jdGlv
bigpKQorICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50KCkgPD0gMCB8fCAhZXhlYy0+YXJndW1l
bnQoMCkuaXNGdW5jdGlvbigpKQogICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
KTsKLSAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0aW9uT25s
eUNhbGxiYWNrPEpTVGVzdENhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUdsb2JhbE9i
amVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPnVuY2hlY2tlZEFyZ3Vt
ZW50KDApKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiBjYWxsYmFjayA9IGNyZWF0ZUZ1bmN0
aW9uT25seUNhbGxiYWNrPEpTVGVzdENhbGxiYWNrPihleGVjLCBzdGF0aWNfY2FzdDxKU0RPTUds
b2JhbE9iamVjdCo+KGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKSksIGV4ZWMtPmFyZ3VtZW50
KDApKTsKICAgICBUZXN0T2JqOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBcmcoY2FsbGJhY2sp
OwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiB9CkBAIC0yNTgw
LDkgKzI1ODAsOSBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBqc1Rlc3RP
YmpQcm90b3R5cGVGdW5jdGlvbk92ZXJsb2FkZWRNZXRob2Q1KAogICAgIFRlc3RPYmoqIGltcGwg
PSBzdGF0aWNfY2FzdDxUZXN0T2JqKj4oY2FzdGVkVGhpcy0+aW1wbCgpKTsKICAgICBpZiAoZXhl
Yy0+YXJndW1lbnRDb3VudCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVj
LCBjcmVhdGVOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihleGVjKSk7Ci0gICAgaWYgKCFleGVjLT5h
cmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCisgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8
PSAwIHx8ICFleGVjLT5hcmd1bWVudCgwKS5pc0Z1bmN0aW9uKCkpCiAgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOwotICAgIFJlZlB0cjxUZXN0Q2FsbGJhY2s+IGNhbGxiYWNr
ID0gSlNUZXN0Q2FsbGJhY2s6OmNyZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVu
dCgwKSksIGNhc3RlZFRoaXMtPmdsb2JhbE9iamVjdCgpKTsKKyAgICBSZWZQdHI8VGVzdENhbGxi
YWNrPiBjYWxsYmFjayA9IEpTVGVzdENhbGxiYWNrOjpjcmVhdGUoYXNPYmplY3QoZXhlYy0+YXJn
dW1lbnQoMCkpLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmplY3QoKSk7CiAgICAgaW1wbC0+b3Zlcmxv
YWRlZE1ldGhvZChjYWxsYmFjayk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVm
aW5lZCgpKTsKIH0KQEAgLTMxMzQsOSArMzEzNCw5IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwganNUZXN0T2JqUHJvdG90eXBlRnVuY3Rpb25WYXJpYWRpY05vZGVNZXRob2QoRXhlY1N0
CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAgVmVj
dG9yPE5vZGUqPiB0YWlsOwogICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1
bWVudENvdW50KCk7ICsraSkgewotICAgICAgICBpZiAoIWV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpLmluaGVyaXRzKEpTTm9kZTo6aW5mbygpKSkKKyAgICAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dChpKS5pbmhlcml0cyhKU05vZGU6OmluZm8oKSkpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjKTsKLSAgICAgICAgdGFpbC5hcHBlbmQodG9Ob2RlKGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KGkpKSk7CisgICAgICAgIHRhaWwuYXBwZW5kKHRvTm9kZShleGVjLT5hcmd1
bWVudChpKSkpOwogICAgIH0KICAgICBpbXBsLT52YXJpYWRpY05vZGVNZXRob2QoaGVhZCwgdGFp
bCk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVm
cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNUZXN0VHlw
ZWRlZnMuY3BwCmluZGV4IDgwZTg3ZmRmYjgyZTFhNzY5NjI5NWM5NjJkODhmZGE5OGEyZTgzYWIu
Ljc4Y2U5OGZiODI4MmZiYWVjNDIwMjMxYjAxZjM3NzQ4MDgzYjFhNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU1Rlc3RUeXBlZGVmcy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L0pTL0pTVGVzdFR5cGVk
ZWZzLmNwcApAQCAtNzUsOSArNzUsOSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGVzdFR5cGVkZWZzQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGVzdFR5cGVkZWZzKAogICAgIGNv
bnN0IFN0cmluZyYgaGVsbG8oZXhlYy0+YXJndW1lbnQoMCkuaXNFbXB0eSgpID8gU3RyaW5nKCkg
OiBleGVjLT5hcmd1bWVudCgwKS50b1N0cmluZyhleGVjKS0+dmFsdWUoZXhlYykpOwogICAgIGlm
IChleGVjLT5oYWRFeGNlcHRpb24oKSkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1VuZGVmaW5lZCgpKTsKLSAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50KDEpLmlzRnVuY3Rpb24oKSkK
KyAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDw9IDEgfHwgIWV4ZWMtPmFyZ3VtZW50KDEp
LmlzRnVuY3Rpb24oKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYyk7Ci0g
ICAgUmVmUHRyPFRlc3RDYWxsYmFjaz4gdGVzdENhbGxiYWNrID0gSlNUZXN0Q2FsbGJhY2s6OmNy
ZWF0ZShhc09iamVjdChleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKSksIGNhc3RlZFRoaXMtPmds
b2JhbE9iamVjdCgpKTsKKyAgICBSZWZQdHI8VGVzdENhbGxiYWNrPiB0ZXN0Q2FsbGJhY2sgPSBK
U1Rlc3RDYWxsYmFjazo6Y3JlYXRlKGFzT2JqZWN0KGV4ZWMtPmFyZ3VtZW50KDEpKSwgY2FzdGVk
VGhpcy0+Z2xvYmFsT2JqZWN0KCkpOwogICAgIFJlZlB0cjxUZXN0VHlwZWRlZnM+IG9iamVjdCA9
IFRlc3RUeXBlZGVmczo6Y3JlYXRlKGhlbGxvLCB0ZXN0Q2FsbGJhY2spOwogICAgIHJldHVybiBK
U1ZhbHVlOjplbmNvZGUoYXNPYmplY3QodG9KUyhleGVjLCBjYXN0ZWRUaGlzLT5nbG9iYWxPYmpl
Y3QoKSwgb2JqZWN0LmdldCgpKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYnJp
ZGdlL2MvY19pbnN0YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNl
LmNwcAppbmRleCBjNGU5YjE0NGJhZDQyNDFmYmQ1YzY3MzcxMjZiN2JhMjcwMTBkMmUzLi45ODVk
ZDk4NDIzNTE0NDk5ZmNjYTQ0MjZmYzk4ZWVhYmI2YmNjMWUwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9icmlkZ2UvYy9jX2luc3RhbmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9icmlk
Z2UvYy9jX2luc3RhbmNlLmNwcApAQCAtMTY3LDcgKzE2Nyw3IEBAIEpTVmFsdWUgQ0luc3RhbmNl
OjppbnZva2VNZXRob2QoRXhlY1N0YXRlKiBleGVjLCBSdW50aW1lTWV0aG9kKiBydW50aW1lTWV0
aG9kKQogCiAgICAgdW5zaWduZWQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgY291bnQ7IGkrKykK
LSAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoaSksICZjQXJnc1tpXSk7CisgICAgICAgIGNvbnZlcnRWYWx1ZVRvTlBWYXJpYW50KGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCAmY0FyZ3NbaV0pOwogCiAgICAgLy8gSW52b2tlIHRoZSAn
QycgbWV0aG9kLgogICAgIGJvb2wgcmV0dmFsID0gdHJ1ZTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBK
U1ZhbHVlIENJbnN0YW5jZTo6aW52b2tlRGVmYXVsdE1ldGhvZChFeGVjU3RhdGUqIGV4ZWMpCiAK
ICAgICB1bnNpZ25lZCBpOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKQotICAgICAg
ICBjb252ZXJ0VmFsdWVUb05QVmFyaWFudChleGVjLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChp
KSwgJmNBcmdzW2ldKTsKKyAgICAgICAgY29udmVydFZhbHVlVG9OUFZhcmlhbnQoZXhlYywgZXhl
Yy0+YXJndW1lbnQoaSksICZjQXJnc1tpXSk7CiAKICAgICAvLyBJbnZva2UgdGhlICdDJyBtZXRo
b2QuCiAgICAgYm9vbCByZXR2YWwgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbSBiL1NvdXJjZS9XZWJDb3JlL2JyaWRnZS9vYmpj
L29iamNfaW5zdGFuY2UubW0KaW5kZXggNTQ5ZTcxNjNmZjJiMTUwMmQ0MjhjZTAwMTIzM2I0MWRj
ZjllMjY5Yy4uY2JhZmMyZGZkMWI2MGRlM2UzOTdhMTk1YmNhOGZjMTRmOGJiOGY1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYnJpZGdlL29iamMvb2JqY19pbnN0YW5jZS5tbQorKysgYi9T
b3VyY2UvV2ViQ29yZS9icmlkZ2Uvb2JqYy9vYmpjX2luc3RhbmNlLm1tCkBAIC0yNjAsMTMgKzI2
MCwxMyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tlT2JqY01ldGhvZChFeGVjU3RhdGUq
IGV4ZWMsIE9iamNNZXRob2QqIG1ldGhvZCkKICAgICAgICAgTlNNdXRhYmxlQXJyYXkqIG9iamNB
cmdzID0gW05TTXV0YWJsZUFycmF5IGFycmF5XTsKICAgICAgICAgaW50IGNvdW50ID0gZXhlYy0+
YXJndW1lbnRDb3VudCgpOwogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvdW50OyBpKysp
IHsKLSAgICAgICAgICAgIE9iamNWYWx1ZSB2YWx1ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVl
KGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkpLCBPYmpjT2JqZWN0VHlwZSk7CisgICAg
ICAgICAgICBPYmpjVmFsdWUgdmFsdWUgPSBjb252ZXJ0VmFsdWVUb09iamNWYWx1ZShleGVjLCBl
eGVjLT5hcmd1bWVudChpKSwgT2JqY09iamVjdFR5cGUpOwogICAgICAgICAgICAgW29iamNBcmdz
IGFkZE9iamVjdDp2YWx1ZS5vYmplY3RWYWx1ZV07CiAgICAgICAgIH0KICAgICAgICAgW2ludm9j
YXRpb24gc2V0QXJndW1lbnQ6Jm9iamNBcmdzIGF0SW5kZXg6M107CiAgICAgfSBlbHNlIHsKICAg
ICAgICAgdW5zaWduZWQgY291bnQgPSBbc2lnbmF0dXJlIG51bWJlck9mQXJndW1lbnRzXTsKLSAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMjsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpID0gMjsgaSA8IGNvdW50IDsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBj
aGFyKiB0eXBlID0gW3NpZ25hdHVyZSBnZXRBcmd1bWVudFR5cGVBdEluZGV4OmldOwogICAgICAg
ICAgICAgT2JqY1ZhbHVlVHlwZSBvYmpjVmFsdWVUeXBlID0gb2JqY1ZhbHVlVHlwZUZvclR5cGUo
dHlwZSk7CiAKQEAgLTI3NSw3ICsyNzUsNyBAQCBKU1ZhbHVlIE9iamNJbnN0YW5jZTo6aW52b2tl
T2JqY01ldGhvZChFeGVjU3RhdGUqIGV4ZWMsIE9iamNNZXRob2QqIG1ldGhvZCkKICAgICAgICAg
ICAgIC8vIHR5cGVzLgogICAgICAgICAgICAgQVNTRVJUKG9iamNWYWx1ZVR5cGUgIT0gT2JqY0lu
dmFsaWRUeXBlICYmIG9iamNWYWx1ZVR5cGUgIT0gT2JqY1ZvaWRUeXBlKTsKIAotICAgICAgICAg
ICAgT2JqY1ZhbHVlIHZhbHVlID0gY29udmVydFZhbHVlVG9PYmpjVmFsdWUoZXhlYywgZXhlYy0+
YXJndW1lbnQoaSAtIDIpLCBvYmpjVmFsdWVUeXBlKTsKKyAgICAgICAgICAgIE9iamNWYWx1ZSB2
YWx1ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGktMiks
IG9iamNWYWx1ZVR5cGUpOwogCiAgICAgICAgICAgICBzd2l0Y2ggKG9iamNWYWx1ZVR5cGUpIHsK
ICAgICAgICAgICAgICAgICBjYXNlIE9iamNPYmplY3RUeXBlOgpAQCAtMzc0LDcgKzM3NCw3IEBA
IEpTVmFsdWUgT2JqY0luc3RhbmNlOjppbnZva2VEZWZhdWx0TWV0aG9kKEV4ZWNTdGF0ZSogZXhl
YykKICAgICBOU011dGFibGVBcnJheSogb2JqY0FyZ3MgPSBbTlNNdXRhYmxlQXJyYXkgYXJyYXld
OwogICAgIHVuc2lnbmVkIGNvdW50ID0gZXhlYy0+YXJndW1lbnRDb3VudCgpOwogICAgIGZvciAo
dW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIE9iamNWYWx1ZSB2YWx1
ZSA9IGNvbnZlcnRWYWx1ZVRvT2JqY1ZhbHVlKGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpLCBPYmpjT2JqZWN0VHlwZSk7CisgICAgICAgIE9iamNWYWx1ZSB2YWx1ZSA9IGNvbnZlcnRW
YWx1ZVRvT2JqY1ZhbHVlKGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBPYmpjT2JqZWN0VHlwZSk7
CiAgICAgICAgIFtvYmpjQXJncyBhZGRPYmplY3Q6dmFsdWUub2JqZWN0VmFsdWVdOwogICAgIH0K
ICAgICBbaW52b2NhdGlvbiBzZXRBcmd1bWVudDomb2JqY0FyZ3MgYXRJbmRleDoyXTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05QT2Jq
ZWN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS9KU05Q
T2JqZWN0LmNwcAppbmRleCA0NDQ3YWIwY2I0NGE0NWZhOTkzNzI3NTQyYWU5MTg2NjAzODhkOTE3
Li5jMTllMDBjNjdlYjA2YTRmMDA1MzdhOTBiN2YxNGNmMzc4YTg2OTIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvSlNOUE9iamVjdC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL0pTTlBPYmpl
Y3QuY3BwCkBAIC0xMTUsNyArMTE1LDcgQEAgSlNWYWx1ZSBKU05QT2JqZWN0OjpjYWxsTWV0aG9k
KEV4ZWNTdGF0ZSogZXhlYywgTlBJZGVudGlmaWVyIG1ldGhvZE5hbWUpCiAKICAgICAvLyBDb252
ZXJ0IGFsbCBhcmd1bWVudHMgdG8gTlBWYXJpYW50cy4KICAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgbV9vYmplY3RNYXAtPmNvbnZlcnRKU1Zh
bHVlVG9OUFZhcmlhbnQoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSksIGFyZ3VtZW50
c1tpXSk7CisgICAgICAgIG1fb2JqZWN0TWFwLT5jb252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KGV4
ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBhcmd1bWVudHNbaV0pOwogCiAgICAgLy8gQ2FsbGluZyBO
UENsYXNzOjppbnZva2Ugd2lsbCBjYWxsIGludG8gcGx1Zy1pbiBjb2RlLCBhbmQgdGhlcmUncyBu
byB0ZWxsaW5nIHdoYXQgdGhlIHBsdWctaW4gY2FuIGRvLgogICAgIC8vIChpbmNsdWRpbmcgZGVz
dHJveWluZyB0aGUgcGx1Zy1pbikuIEJlY2F1c2Ugb2YgdGhpcywgd2UgbWFrZSBzdXJlIHRvIGtl
ZXAgdGhlIHBsdWctaW4gYWxpdmUgdW50aWwgCkBAIC0xNTUsNyArMTU1LDcgQEAgSlNDOjpKU1Zh
bHVlIEpTTlBPYmplY3Q6OmNhbGxPYmplY3QoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCiAgICAgCiAg
ICAgLy8gQ29udmVydCBhbGwgYXJndW1lbnRzIHRvIE5QVmFyaWFudHMuCiAgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBhcmd1bWVudENvdW50OyArK2kpCi0gICAgICAgIG1fb2JqZWN0TWFwLT5j
b252ZXJ0SlNWYWx1ZVRvTlBWYXJpYW50KGV4ZWMsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
LCBhcmd1bWVudHNbaV0pOworICAgICAgICBtX29iamVjdE1hcC0+Y29udmVydEpTVmFsdWVUb05Q
VmFyaWFudChleGVjLCBleGVjLT5hcmd1bWVudChpKSwgYXJndW1lbnRzW2ldKTsKIAogICAgIC8v
IENhbGxpbmcgTlBDbGFzczo6aW52b2tlRGVmYXVsdCB3aWxsIGNhbGwgaW50byBwbHVnLWluIGNv
ZGUsIGFuZCB0aGVyZSdzIG5vIHRlbGxpbmcgd2hhdCB0aGUgcGx1Zy1pbiBjYW4gZG8uCiAgICAg
Ly8gKGluY2x1ZGluZyBkZXN0cm95aW5nIHRoZSBwbHVnLWluKS4gQmVjYXVzZSBvZiB0aGlzLCB3
ZSBtYWtlIHN1cmUgdG8ga2VlcCB0aGUgcGx1Zy1pbiBhbGl2ZSB1bnRpbCAKQEAgLTE5NSw3ICsx
OTUsNyBAQCBKU1ZhbHVlIEpTTlBPYmplY3Q6OmNhbGxDb25zdHJ1Y3RvcihFeGVjU3RhdGUqIGV4
ZWMpCiAKICAgICAvLyBDb252ZXJ0IGFsbCBhcmd1bWVudHMgdG8gTlBWYXJpYW50cy4KICAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGFyZ3VtZW50Q291bnQ7ICsraSkKLSAgICAgICAgbV9vYmpl
Y3RNYXAtPmNvbnZlcnRKU1ZhbHVlVG9OUFZhcmlhbnQoZXhlYywgZXhlYy0+dW5jaGVja2VkQXJn
dW1lbnQoaSksIGFyZ3VtZW50c1tpXSk7CisgICAgICAgIG1fb2JqZWN0TWFwLT5jb252ZXJ0SlNW
YWx1ZVRvTlBWYXJpYW50KGV4ZWMsIGV4ZWMtPmFyZ3VtZW50KGkpLCBhcmd1bWVudHNbaV0pOwog
CiAgICAgLy8gQ2FsbGluZyBOUENsYXNzOjpjb25zdHJ1Y3Qgd2lsbCBjYWxsIGludG8gcGx1Zy1p
biBjb2RlLCBhbmQgdGhlcmUncyBubyB0ZWxsaW5nIHdoYXQgdGhlIHBsdWctaW4gY2FuIGRvLgog
ICAgIC8vIChpbmNsdWRpbmcgZGVzdHJveWluZyB0aGUgcGx1Zy1pbikuIEJlY2F1c2Ugb2YgdGhp
cywgd2UgbWFrZSBzdXJlIHRvIGtlZXAgdGhlIHBsdWctaW4gYWxpdmUgdW50aWwgCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>