<?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>112444</bug_id>
          
          <creation_ts>2013-03-15 07:09:53 -0700</creation_ts>
          <short_desc>REGRESSION(r145802): This broke Chrome. (Requested by marja____ on #webkit).</short_desc>
          <delta_ts>2013-03-15 07:16:34 -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>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>111724</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>jochen</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>855968</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:09:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/145802 broke the build:
This broke Chrome. (Requested by marja____ on #webkit).

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

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855970</commentid>
    <comment_count>1</comment_count>
      <attachid>193302</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:10:29 -0700</bug_when>
    <thetext>Created attachment 193302
ROLLOUT of r145802

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>855971</commentid>
    <comment_count>2</comment_count>
    <who name="">jochen</who>
    <bug_when>2013-03-15 07:13:42 -0700</bug_when>
    <thetext>For reference, here&apos;s a backtrace:

Thread 0 *CRASHED* ( EXC_BAD_ACCESS / KERN_PROTECTION_FAILURE @ 0x00000000 )

0x01ad64ff	 [Google Chrome Framework]
0x0125f9b0	 [Google Chrome Framework]	 - WebBindings.cpp:262]	WebKit::WebBindings::getArrayBuffer
0x023d2a37	 [Google Chrome Framework]	 - npapi_glue.cc:146]	webkit::ppapi::NPObjectToPPVar
0x023d29df	 [Google Chrome Framework]	 - npapi_glue.cc:108]	webkit::ppapi::NPVariantToPPVar
0x023ec50f	 [Google Chrome Framework]	 - ppb_var_deprecated_impl.cc:208]	webkit::ppapi::::GetProperty
0x02e3453c	 [Google Chrome Framework]	 - ppb_var_deprecated_proxy.cc:433]	ppapi::proxy::PPB_Var_Deprecated_Proxy::OnMsgGetProperty</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855973</commentid>
    <comment_count>3</comment_count>
      <attachid>193302</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:16:31 -0700</bug_when>
    <thetext>Comment on attachment 193302
ROLLOUT of r145802

Clearing flags on attachment: 193302

Committed r145905: &lt;http://trac.webkit.org/changeset/145905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>855974</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-15 07:16:34 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>193302</attachid>
            <date>2013-03-15 07:10:29 -0700</date>
            <delta_ts>2013-03-15 07:16:31 -0700</delta_ts>
            <desc>ROLLOUT of r145802</desc>
            <filename>bug-112444-20130315140624.patch</filename>
            <type>text/plain</type>
            <size>168345</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1OTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMDkzY2U1YTQ2NWU3ZDkx
YzE1ZDVlMDFlYTRkZGMxYWI1YzQ3MjVmNi4uOTZkNGM4ZDM3N2Q0MGU1MzVmNzQ2MWYwYmQwZWM5
YjZjYjFjMGM5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDIxOCBAQAogMjAxMy0wMy0xNSAgU2hl
cmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJvdEBnbWFpbC5jb20+CiAKKyAgICAgICAgVW5yZXZp
ZXdlZCwgcm9sbGluZyBvdXQgcjE0NTgwMi4KKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9y
Zy9jaGFuZ2VzZXQvMTQ1ODAyCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xMTI0NDQKKworICAgICAgICBUaGlzIGJyb2tlIENocm9tZS4gKFJlcXVlc3Rl
ZCBieSBtYXJqYV9fX18gb24gI3dlYmtpdCkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSGVhZGVyKToKKyAgICAgICAg
KEdlbmVyYXRlRG9tYWluU2FmZUZ1bmN0aW9uR2V0dGVyKToKKyAgICAgICAgKEdlbmVyYXRlTm9y
bWFsQXR0clNldHRlcik6CisgICAgICAgIChHZW5lcmF0ZVBhcmFtZXRlcnNDaGVja0V4cHJlc3Np
b24pOgorICAgICAgICAoR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2spOgorICAgICAgICAoR2VuZXJh
dGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgIChKU1ZhbHVlVG9OYXRpdmUpOgorICAgICAgICAo
Q3JlYXRlQ3VzdG9tU2lnbmF0dXJlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhGbG9hdDY0QXJyYXkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmxvYXQ2NEFycmF5VjhJ
bnRlcm5hbDo6Zm9vTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4RmxvYXQ2
NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhGbG9hdDY0QXJyYXk6OkdldFRl
bXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5Lmg6Cisg
ICAgICAgIChWOEZsb2F0NjRBcnJheSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0QWN0
aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdGdW5jdGlvbk1ldGhvZCk6CisgICAgICAg
IChXZWJDb3JlOjpUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VBdHRy
R2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVj
dFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6R2V0
VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpIYXNJ
bnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oOgorICAgICAgICAoVjhUZXN0QWN0aXZlRE9NT2JqZWN0KToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpIYXNJbnN0YW5jZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0
dGVyLmg6CisgICAgICAgIChWOFRlc3RDdXN0b21OYW1lZEdldHRlcik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6SGFzSW5zdGFuY2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmg6Cisg
ICAgICAgIChWOFRlc3RFdmVudENvbnN0cnVjdG9yKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVz
dEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0Y2hFdmVudE1ldGhvZCk6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5oOgorICAgICAgICAoVjhUZXN0RXZlbnRU
YXJnZXQpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRp
b24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246Okhhc0luc3RhbmNlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmg6CisgICAgICAg
IChWOFRlc3RFeGNlcHRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VGVzdEludGVyZmFjZVY4SW50
ZXJuYWw6OnN1cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
c3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0SW50ZXJmYWNl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaDoKKyAgICAgICAgKFY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5h
bWVkQ29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5oOgorICAgICAgICAoVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6VjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmg6CisgICAgICAgIChWOFRlc3ROb2RlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0ZXN0T2JqQXR0ckF0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OlhNTE9iakF0dHJBdHRyU2V0dGVy
KToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjp0eXBlZEFycmF5QXR0ckF0
dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OndpdGhTY3Jp
cHRFeGVjdXRpb25Db250ZXh0QXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3Jl
OjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0aFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVSYWlzZXNBdHRyU2V0dGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlRlc3RPYmpWOEludGVybmFsOjp3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlw
dFN0YXRlQXR0cmlidXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJ
bnRlcm5hbDo6d2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0
ZVJhaXNlc0F0dHJTZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OndpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2VzQXR0cmli
dXRlQXR0clNldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6d2l0
aFNjcmlwdEFyZ3VtZW50c0FuZENhbGxTdGFja0F0dHJpYnV0ZUF0dHJTZXR0ZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om11dGFibGVQb2ludEF0dHJTZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6OmltbXV0YWJsZVBvaW50QXR0clNl
dHRlcik6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dm9pZE1ldGhvZFdp
dGhBcmdzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpsb25n
TWV0aG9kV2l0aEFyZ3NNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJu
YWw6Om9iak1ldGhvZFdpdGhBcmdzTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpW
OEludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzTWV0aG9kKToKKyAg
ICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpvdmVybG9hZGVkTWV0aG9kMU1ldGhv
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6b3ZlcmxvYWRlZE1ldGhv
ZDJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6Om92ZXJsb2Fk
ZWRNZXRob2Q4TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpv
dmVybG9hZGVkTWV0aG9kTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVy
bmFsOjpjb252ZXJ0MU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5h
bDo6Y29udmVydDJNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6VGVzdE9ialY4SW50ZXJuYWw6
OmNvbnZlcnQ0TWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RPYmpWOEludGVybmFsOjpj
b252ZXJ0NU1ldGhvZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T2JqVjhJbnRlcm5hbDo6dmFy
aWFkaWNOb2RlTWV0aG9kTWV0aG9kKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6R2V0VGVtcGxhdGUp
OgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T2JqOjpIYXNJbnN0YW5jZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oOgorICAgICAgICAoVjhUZXN0T2Jq
KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yMSk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yMik6CisgICAgICAgIChX
ZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9y
Myk6CisgICAgICAgIChXZWJDb3JlOjpUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJu
YWw6OmNvbnN0cnVjdG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oOgorICAgICAgICAoVjhUZXN0
T3ZlcmxvYWRlZENvbnN0cnVjdG9ycyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaDoKKyAgICAgICAgKFY4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRlc3RUeXBlZGVm
c1Y4SW50ZXJuYWw6OmZ1bmNNZXRob2QpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0VHlwZWRlZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMu
aDoKKyAgICAgICAgKFY4VGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9EaWN0
aW9uYXJ5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRpY3Rpb25hcnk6OmdldCk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvU2NyaXB0UHJvZmlsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2Ny
aXB0UHJvZmlsZXI6OnZpc2l0Tm9kZVdyYXBwZXJzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9T
ZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4QWRhcHRv
ckZ1bmN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4QWRhcHRvckZ1bmN0aW9uOjpnZXRU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnRvRE9NU3RyaW5nTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjp0b1hQYXRoTlNS
ZXNvbHZlcik6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmg6CisgICAgICAgIChX
ZWJDb3JlOjp0b1JlZlB0ck5hdGl2ZUFycmF5KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjp0b09w
dGlvbnNDb2xsZWN0aW9uU2V0dGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEdDQ29udHJv
bGxlci5jcHA6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhOUE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpucE9iamVjdEludm9rZUltcGwpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6
cmVwb3J0TWVtb3J5VXNhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6
aGFzUHJpdmF0ZVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6
OnByaXZhdGVUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpy
YXdUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFBlcklzb2xhdGVEYXRhOjpoYXNJbnN0
YW5jZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oOgorICAgICAg
ICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6cmF3VGVtcGxhdGVNYXApOgorICAgICAgICAo
V2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0YTo6dGVtcGxhdGVNYXApOgorICAgICAgICAoVjhQZXJJ
c29sYXRlRGF0YSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6ZXh0cmFjdFRyYW5zZmVyYWJsZXMpOgorICAgICAgICAqIGJpbmRpbmdz
L3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oOgorICAgICAgICAoV2ViQ29yZTo6
Y29uc3RydWN0V2ViR0xBcnJheSk6CisgICAgICAgIChXZWJDb3JlOjpzZXRXZWJHTEFycmF5SGVs
cGVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhBdWRpb0J1ZmZlclNvdXJjZU5v
ZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhBdWRpb0J1ZmZlclNvdXJjZU5vZGU6
OmJ1ZmZlckF0dHJTZXR0ZXJDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9W
OEJsb2JDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhCbG9iOjpjb25zdHJ1Y3RvckN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29u
dGV4dDJEQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRvQ2FudmFzU3R5bGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpWOENsaXBib2FyZDo6c2V0RHJhZ0ltYWdlTWV0aG9kQ3VzdG9tKToKKyAgICAg
ICAgKiBiaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhDcnlwdG86OmdldFJhbmRvbVZhbHVlc01ldGhvZEN1c3RvbSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0b20uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDdXN0b20pOgorICAgICAgICAoV2ViQ29y
ZTo6VjhET01Gb3JtRGF0YTo6YXBwZW5kTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKiBiaW5kaW5n
cy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERh
dGFWaWV3Ojpjb25zdHJ1Y3RvckN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhEb2N1bWVudDo6ZXZh
bHVhdGVNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxN
ZWRpYUVsZW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhIVE1MTWVkaWFFbGVt
ZW50Ojpjb250cm9sbGVyQXR0clNldHRlckN1c3RvbSk6CisgICAgICAgICogYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SFRNTE9wdGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjphZGRNZXRob2RDdXN0b20pOgorICAgICAgICAq
IGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OnJlbW92ZUVsZW1lbnQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOElu
amVjdGVkU2NyaXB0SG9zdDo6aXNIVE1MQWxsQ29sbGVjdGlvbk1ldGhvZEN1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6dHlwZU1ldGhvZEN1c3RvbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6Z2V0RXZlbnRMaXN0ZW5lcnNN
ZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3Vz
dG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJHZXR0ZXJD
dXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6YXNzaWduQXR0ckdldHRlckN1
c3RvbSk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpWOE5vZGU6Omluc2VydEJlZm9yZU1ldGhvZEN1c3RvbSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOE5vZGU6OnJlcGxhY2VDaGlsZE1ldGhvZEN1c3RvbSk6CisgICAgICAg
IChXZWJDb3JlOjpWOE5vZGU6OnJlbW92ZUNoaWxkTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdl
YkNvcmU6OlY4Tm9kZTo6YXBwZW5kQ2hpbGRNZXRob2RDdXN0b20pOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
Tm9kZUxpc3Q6Om9wYXF1ZVJvb3RGb3JHQyk6CisgICAgICAgICogYmluZGluZ3MvdjgvY3VzdG9t
L1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnRv
V2ViR0xVbmlmb3JtTG9jYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VjhXZWJHTFJlbmRlcmlu
Z0NvbnRleHQ6OmdldEF0dGFjaGVkU2hhZGVyc01ldGhvZEN1c3RvbSk6CisgICAgICAgIChXZWJD
b3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlck1ldGhvZEN1
c3RvbSk6CisgICAgICAgIChXZWJDb3JlOjpWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0U2hh
ZGVyUGFyYW1ldGVyTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6OlY4V2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtTWV0aG9kQ3VzdG9tKToKKyAgICAgICAgKFdlYkNvcmU6
OnZlcnRleEF0dHJpYkFuZFVuaWZvcm1IZWxwZXJmKToKKyAgICAgICAgKFdlYkNvcmU6OnVuaWZv
cm1IZWxwZXJpKToKKyAgICAgICAgKFdlYkNvcmU6OnVuaWZvcm1NYXRyaXhIZWxwZXIpOgorICAg
ICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmlzRG9jdW1lbnRUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4WE1M
SHR0cFJlcXVlc3Q6OnNlbmRNZXRob2RDdXN0b20pOgorCisyMDEzLTAzLTE1ICBTaGVyaWZmIEJv
dCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwogICAgICAgICBVbnJldmlld2VkLCBy
b2xsaW5nIG91dCByMTQ1ODk2LgogICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8xNDU4OTYKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTExMjQ0MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCBiZTM2NDE2Njg3OWZiYTBk
OGFiYTI0MmNiNDJlZTBmZjVkMDQyMjUzLi5jOWMxMjg2MGE1Mzk0OTFhZDRmZDNhODViNTg1ZTY3
N2ExMTNjNzAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIyIEBACisy
MDEzLTAzLTE1ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KKwor
ICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTQ1ODAyLgorICAgICAgICBodHRwOi8v
dHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xNDU4MDIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMjQ0NAorCisgICAgICAgIFRoaXMgYnJva2UgQ2hy
b21lLiAoUmVxdWVzdGVkIGJ5IG1hcmphX19fXyBvbiAjd2Via2l0KS4KKworICAgICAgICAqIHNy
Yy9XZWJBcnJheUJ1ZmZlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVyOjpj
cmVhdGVGcm9tVjhWYWx1ZSk6CisgICAgICAgICogc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkFycmF5QnVmZmVyVmlldzo6Y3JlYXRlRnJvbVY4VmFsdWUp
OgorICAgICAgICAqIHNyYy9XZWJCaW5kaW5ncy5jcHA6CisgICAgICAgIChXZWJLaXQ6OmdldFJh
bmdlSW1wbCk6CisgICAgICAgIChXZWJLaXQ6OmdldE5vZGVJbXBsKToKKyAgICAgICAgKFdlYktp
dDo6Z2V0RWxlbWVudEltcGwpOgorICAgICAgICAoV2ViS2l0OjpnZXRBcnJheUJ1ZmZlckltcGwp
OgorICAgICAgICAoV2ViS2l0OjpnZXRBcnJheUJ1ZmZlclZpZXdJbXBsKToKKwogMjAxMy0wMy0x
NSAgSm9obiBLbm90dGVuYmVsdCAgPGprbm90dGVuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBb
Q2hyb21pdW1dIENvbXBvc2l0b3IgaXMgYXBwbHlpbmcgc2Nyb2xsIG9mZnNldCB1c2luZyAncHJv
Z3JhbW1hdGljJyBBUEkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYzVhYjM2MDA1NDczNTVmNzMwOTc4NjRlYjNjODNiOTNm
YjBjYjA3ZC4uNzU4ZDc1MTg1MzhmODIxMWZkYjc1YWMxNTZlNmEzOWNkMTZkODgwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTM2MCw3ICszNjAsNyBAQCBFTkQKICAgICB9CiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCA8PEVORCk7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJ
c29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKQEAgLTc4MCw3ICs3
ODAsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIKICAgICBteSAkdjhJ
bnRlcmZhY2VOYW1lID0gIlY4IiAuICRpbnRlcmZhY2VOYW1lOwogICAgIG15ICRmdW5jTmFtZSA9
ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogCi0gICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6
U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSkt
PnJhd1RlbXBsYXRlKCYiIC4gJHY4SW50ZXJmYWNlTmFtZSAuICI6OmluZm8sIGN1cnJlbnRXb3Js
ZFR5cGUpKSI7CisgICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCYiIC4gJHY4
SW50ZXJmYWNlTmFtZSAuICI6OmluZm8pKSI7CiAgICAgaWYgKCRmdW5jdGlvbi0+c2lnbmF0dXJl
LT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiVjhEb05vdENoZWNrU2lnbmF0dXJlIn0pIHsKICAgICAg
ICAgJHNpZ25hdHVyZSA9ICJ2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSI7CiAgICAgfQpAQCAt
MTI0OSw3ICsxMjQ5LDcgQEAgc3ViIEdlbmVyYXRlTm9ybWFsQXR0clNldHRlcgogICAgIGlmICgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJTdHJpY3RUeXBlQ2hl
Y2tpbmcifSkgewogICAgICAgICBteSAkYXJnVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+
dHlwZTsKICAgICAgICAgaWYgKElzV3JhcHBlclR5cGUoJGFyZ1R5cGUpKSB7Ci0gICAgICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudEludGVybmFscywgIiAgICBpZiAoIWlzVW5kZWZpbmVkT3JOdWxs
KHZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7XG4iKTsKKyAgICAgICAgICAg
IHB1c2goQGltcGxDb250ZW50SW50ZXJuYWxzLCAiICAgIGlmICghaXNVbmRlZmluZWRPck51bGwo
dmFsdWUpICYmICFWOCR7YXJnVHlwZX06Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xh
dGUoKSkpIHtcbiIpOwogICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIg
ICAgICAgIHRocm93VHlwZUVycm9yKDAsIGluZm8uR2V0SXNvbGF0ZSgpKTtcbiIpOwogICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgICAgIHJldHVybjtcbiIpOwog
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnRJbnRlcm5hbHMsICIgICAgfVxuIik7CkBAIC0x
NDUwLDkgKzE0NTAsOSBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2tFeHByZXNzaW9uCiAg
ICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzaWYgKElzV3JhcHBlclR5cGUoJHR5cGUpKSB7CiAg
ICAgICAgICAgICBpZiAoJHBhcmFtZXRlci0+aXNOdWxsYWJsZSkgewotICAgICAgICAgICAgICAg
IHB1c2goQGFuZEV4cHJlc3Npb24sICIoJHt2YWx1ZX0tPklzTnVsbCgpIHx8IFY4JHt0eXBlfTo6
SGFzSW5zdGFuY2UoJHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpIik7CisgICAgICAgICAgICAgICAgcHVzaChAYW5kRXhwcmVzc2lvbiwgIigk
e3ZhbHVlfS0+SXNOdWxsKCkgfHwgVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgkdmFsdWUsIGFyZ3Mu
R2V0SXNvbGF0ZSgpKSkiKTsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAg
cHVzaChAYW5kRXhwcmVzc2lvbiwgIihWOCR7dHlwZX06Okhhc0luc3RhbmNlKCR2YWx1ZSwgYXJn
cy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSIpOworICAgICAg
ICAgICAgICAgIHB1c2goQGFuZEV4cHJlc3Npb24sICIoVjgke3R5cGV9OjpIYXNJbnN0YW5jZSgk
dmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkiKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CkBAIC0xODY4LDcgKzE4NjgsNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAg
ICAgICAgIGlmIChJc1dyYXBwZXJUeXBlKCRhcmdUeXBlKSkgewogICAgICAgICAgICAgICAgICRw
YXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIFZlY3RvcjwkbmF0aXZlRWxlbWVudFR5cGU+ICRw
YXJhbWV0ZXJOYW1lO1xuIjsKICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJpbmcg
Lj0gIiAgICBmb3IgKGludCBpID0gJHBhcmFtSW5kZXg7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kp
IHtcbiI7Ci0gICAgICAgICAgICAgICAgJHBhcmFtZXRlckNoZWNrU3RyaW5nIC49ICIgICAgICAg
IGlmICghVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZShhcmdzW2ldLCBhcmdzLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpXG4iOworICAgICAgICAgICAgICAgICRw
YXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgICAgICBpZiAoIVY4JHthcmdUeXBlfTo6SGFzSW5z
dGFuY2UoYXJnc1tpXSwgYXJncy5HZXRJc29sYXRlKCkpKVxuIjsKICAgICAgICAgICAgICAgICAk
cGFyYW1ldGVyQ2hlY2tTdHJpbmcgLj0gIiAgICAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigwLCBhcmdzLkdldElzb2xhdGUoKSk7XG4iOwogICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJD
aGVja1N0cmluZyAuPSAiICAgICAgICAkcGFyYW1ldGVyTmFtZS5hcHBlbmQoVjgke2FyZ1R5cGV9
Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbaV0pKSk7XG4iOwog
ICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAgIH1cbiI7CkBAIC0x
ODg5LDcgKzE4ODksNyBAQCBzdWIgR2VuZXJhdGVQYXJhbWV0ZXJzQ2hlY2sKICAgICAgICAgICAg
ICAgICBteSAkYXJnVmFsdWUgPSAiYXJnc1skcGFyYW1JbmRleF0iOwogICAgICAgICAgICAgICAg
IG15ICRhcmdUeXBlID0gJHBhcmFtZXRlci0+dHlwZTsKICAgICAgICAgICAgICAgICBpZiAoSXNX
cmFwcGVyVHlwZSgkYXJnVHlwZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgJHBhcmFtZXRlckNo
ZWNrU3RyaW5nIC49ICIgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAkcGFyYW1JbmRleCAmJiAhaXNV
bmRlZmluZWRPck51bGwoJGFyZ1ZhbHVlKSAmJiAhVjgke2FyZ1R5cGV9OjpIYXNJbnN0YW5jZSgk
YXJnVmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkp
KSlcbiI7CisgICAgICAgICAgICAgICAgICAgICRwYXJhbWV0ZXJDaGVja1N0cmluZyAuPSAiICAg
IGlmIChhcmdzLkxlbmd0aCgpID4gJHBhcmFtSW5kZXggJiYgIWlzVW5kZWZpbmVkT3JOdWxsKCRh
cmdWYWx1ZSkgJiYgIVY4JHthcmdUeXBlfTo6SGFzSW5zdGFuY2UoJGFyZ1ZhbHVlLCBhcmdzLkdl
dElzb2xhdGUoKSkpXG4iOwogICAgICAgICAgICAgICAgICAgICAkcGFyYW1ldGVyQ2hlY2tTdHJp
bmcgLj0gIiAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgp
KTtcbiI7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzE1NSwyMCArMzE1
NSwyMCBAQCBFTkQKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50
ZXJmYWNlTmFtZX06OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29y
bGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0
ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5k
KCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
ZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
IAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJm
YWNlTmFtZX1UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRUeXBlKSwgaXNv
bGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmFkZCgm
aW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmUke3Y4SW50ZXJmYWNlTmFtZX1UZW1wbGF0
ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgZGF0
YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9
CiAKLWJvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxk
VHlwZSkKK2Jvb2wgJHt2OEludGVyZmFjZU5hbWV9OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIEVORApAQCAtNDA0Nyw3ICs0MDQ3LDcgQEAg
c3ViIEpTVmFsdWVUb05hdGl2ZQogICAgIEFkZEluY2x1ZGVzRm9yVHlwZSgkdHlwZSk7CiAKICAg
ICBBZGRUb0ltcGxJbmNsdWRlcygiVjgke3R5cGV9LmgiKTsKLSAgICByZXR1cm4gIlY4JHt0eXBl
fTo6SGFzSW5zdGFuY2UoJHZhbHVlLCAkZ2V0SXNvbGF0ZSwgd29ybGRUeXBlKCRnZXRJc29sYXRl
KSkgPyBWOCR7dHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoJHZh
bHVlKSkgOiAwIjsKKyAgICByZXR1cm4gIlY4JHt0eXBlfTo6SGFzSW5zdGFuY2UoJHZhbHVlLCAk
Z2V0SXNvbGF0ZSkgPyBWOCR7dHlwZX06OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoJHZhbHVlKSkgOiAwIjsKIH0KIAogc3ViIEdldFY4SGVhZGVyTmFtZQpAQCAtNDA5OCw3
ICs0MDk4LDcgQEAgc3ViIENyZWF0ZUN1c3RvbVNpZ25hdHVyZQogICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVhZGVy
TmFtZSgkdHlwZSkpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAkcmVzdWx0
IC49ICJWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5
cGV9OjppbmZvLCB3b3JsZFR5cGUpIjsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZv
KSI7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcmVzdWx0
IC49ICJ2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXku
Y3BwCmluZGV4IDIxYWJmNGRmOTE2YTAzMTBlMTY3ZGQyMmJlNzA3MTg1OWQ2ZTFlN2IuLmRkNzZl
YWY0MzEyMjdiZjcwZjFjMzUxNDFhNzYzOWU5ZjZkYWEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNw
cApAQCAtODUsNyArODUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZvb01ldGhv
ZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkK
ICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29s
YXRlKCkpOwogICAgIEZsb2F0NjRBcnJheSogaW1wID0gVjhGbG9hdDY0QXJyYXk6OnRvTmF0aXZl
KGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goRmxvYXQzMkFycmF5KiwgYXJyYXksIFY4
RmxvYXQzMkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOEZsb2F0MzJBcnJheTo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENI
KEZsb2F0MzJBcnJheSosIGFycmF5LCBWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1sw
XSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhGbG9hdDMyQXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgcmV0dXJuIHRvVjgoaW1w
LT5mb28oYXJyYXkpLCBhcmdzLkhvbGRlcigpLCBhcmdzLkdldElzb2xhdGUoKSk7CiB9CiAKQEAg
LTE1Myw3ICsxNTMsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogCiAgICAgLy8gQ3VzdG9t
IFNpZ25hdHVyZSAnZm9vJwogICAgIGNvbnN0IGludCBmb29BcmdjID0gMTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmb29Bcmd2W2Zvb0FyZ2NdID0geyBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhGbG9hdDMyQXJyYXk6OmluZm8s
IHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBmb29B
cmd2W2Zvb0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1w
bGF0ZSgmVjhGbG9hdDMyQXJyYXk6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBmb29TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZm9vQXJnYywgZm9v
QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImZvbyIpLCB2ODo6
RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OmZvb01ldGhvZENh
bGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBmb29TaWduYXR1cmUpKTsKIApAQCAtMTY1LDIwICsxNjUs
MjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1
cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBWOEZsb2F0NjRBcnJheTo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZp
Z3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxk
VHlwZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRU
eXBlKS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlU
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQorYm9vbCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5oIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKaW5kZXggNDMzN2Rk
MjZkYjFiZWJlYjI0OWUzZGEzMDAyY2I0ZTMwMmFkZDFiMy4uYWZlMjg5MzM4ODIwZWYxMDQ3OTkz
MGFkNTBjZTNmMGUyM2Q1MTI2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKQEAgLTM1LDcgKzM1LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhGbG9hdDY0QXJyYXkgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gVjhBcnJheUJ1ZmZlclZp
ZXc6Omhhc0RlcGVuZGVudExpZmV0aW1lOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKKyAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBG
bG9hdDY0QXJyYXkqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAg
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggM2E4NjE3YWJkOTU1ODc0
OTU3YmFmODI1MmMyMGFkNmJhMGM2MjAyNC4uYWUzYTg1MWU0NDljZDAwMmY5ZDAwY2I2ODg2OWE2
Y2VhMmNkMTY4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTEwMSw3
ICsxMDEsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGV4Y2l0aW5nRnVuY3Rpb25N
ZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0
KiBpbXAgPSBWOFRlc3RBY3RpdmVET01PYmplY3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwog
ICAgIGlmICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGlu
Z1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCkpKQogICAgICAgICByZXR1cm4gdjhVbmRl
ZmluZWQoKTsKLSAgICBWOFRSWUNBVENIKE5vZGUqLCBuZXh0Q2hpbGQsIFY4Tm9kZTo6SGFzSW5z
dGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xh
dGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Z3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goTm9kZSosIG5leHRDaGlsZCwgVjhOb2RlOjpI
YXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgaW1wLT5l
eGNpdGluZ0Z1bmN0aW9uKG5leHRDaGlsZCk7CiAgICAgcmV0dXJuIHY4VW5kZWZpbmVkKCk7CiB9
CkBAIC0xMzIsNyArMTMyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBwb3N0TWVz
c2FnZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICBzdGF0aWMg
Y29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInBvc3RNZXNzYWdlUHJpdmF0
ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0
ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFRl
c3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
bmZvLkdldElzb2xhdGUoKSktPnJhd1RlbXBsYXRlKCZWOFRlc3RBY3RpdmVET01PYmplY3Q6Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2JqZWN0
VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRlKCkp
LT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKSkpOwogCiAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNlSW5Q
cm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKGluZm8uR2V0
SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkp
IHsKQEAgLTE0Myw3ICsxNDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RN
ZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIFRlc3RB
Y3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUoaG9s
ZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1l
KEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3Vy
aXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVu
aXF1ZUtleSA9ICJwb3N0TWVzc2FnZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0
ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVz
dEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlu
Zm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5m
bywgY3VycmVudFdvcmxkVHlwZSkpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJl
bnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVj
dFY4SW50ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4
OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgp
KS0+cmF3VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbykpKTsKICAgICAgICAg
cmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KIApAQCAtMTk1LDcg
KzE5NSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICdleGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGludCBleGNpdGluZ0Z1bmN0aW9uQXJn
YyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5j
dGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFyZ3ZbZXhj
aXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBl
eGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nRnVu
Y3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZXhjaXRpbmdGdW5jdGlvblNpZ25h
dHVyZSkpOwogCkBAIC0yMTAsMjAgKzIxMCwyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYQog
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29y
bGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAg
ICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+
dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBs
YXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6
OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVj
dFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
Ym9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQorYm9vbCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwg
d29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmggYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0LmgKaW5kZXggYzgwZWZhNjlmMzJkOTQyMTU5ZGYzZTJmNzM3NTI2NmIzNDQ0N2ZhNC4uZDIz
NWJjNTQ1NDFhZDY5MzRiOGE2N2Y5MDA5ZGY4MDBhMzljOGU3ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuaApAQCAtMzQsNyArMzQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFz
cyBWOFRlc3RBY3RpdmVET01PYmplY3QgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29s
IGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUp
OworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3Rh
dGljIFRlc3RBY3RpdmVET01PYmplY3QqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4g
b2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCmluZGV4
IGVlNWUzNzJlZjRjNzhjZTQ4NmY4M2QwZDkzZjgwOTBjZjBkOGZmODguLjQ2MDE0OGMyYjRiMDZm
YjNlZmJhNTU1YjkzMmViOGZkOGRlNDFjN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcApAQCAtMTE1LDIwICsxMTUsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXAK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21OYW1lZEdl
dHRlcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUg
d29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8p
OwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkK
KyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0
YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRl
bXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlwZSksIGlzb2xh
dGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1w
bGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAg
ZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7
CiB9CiAKLWJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5
cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5zdGFuY2Uo
djg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAg
ICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmlu
Zm8sIHZhbHVlLCB3b3JsZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1l
ZEdldHRlci5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEN1c3RvbU5hbWVkR2V0dGVyLmgKaW5kZXggMmE1MWNkZWQ5YWU3OTZjNzVjOTkyMWUwOGRhYTg0
MDJjNGEyM2EzYi4uZTJmMWQ1YTRlZDk0YmE5MGNlOGU1YjE4Yjg5YWVlMGQ3NzlkZDA3MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIgewogcHVibGljOgog
ICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAg
c3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0
ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RDdXN0b21OYW1lZEdldHRlciogdG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCmluZGV4IDJjNjhlZTk0YmYzYWYxNDhmNTU2MGFiNWZjOWMwODBiNzQ3
YzlmYmYuLmU2Yzg5OGUxMDA4NDY0M2I1MTkyMTA5N2NkMjRkMjc2ZWY3MjA3MWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENv
bnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE1NywyMCArMTU3LDIwIEBAIHN0YXRp
YyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZl
bnRDb25zdHJ1Y3RvclRlbXBsCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRh
dGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURh
dGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAo
d29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAo
cmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1
bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3Vy
ZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywg
d29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVu
dENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3
b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAg
ICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUs
IFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBp
c29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5o
YXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmgKaW5kZXggZWNkMTU5YmFjZDhjZTRjYTk5
MWI1ZjUwNzUzZDJiMmUzNjRiZGEwOS4uNmYxN2Y2NmQ0Mzg5ZmVjZjJiOWI3OGNjOWI5YjBiNDhj
M2JjNzQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5oCkBAIC0zNSw3ICszNSw3
IEBAIGNsYXNzIERpY3Rpb25hcnk7CiBjbGFzcyBWOFRlc3RFdmVudENvbnN0cnVjdG9yIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5j
ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXZlbnRDb25zdHJ1Y3RvciogdG9O
YXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVu
dFRhcmdldC5jcHAKaW5kZXggODI1MzcwMDFjYzk3NWI3MWYzYmIwOWVmMWJjN2VhMzUwMDcyMmJk
Yy4uODQ4NWYwOTcyODE1NzYwZTIxMzVjN2NlZDJjYjRhMTNiZDY3OTk4YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXZlbnRUYXJnZXQuY3BwCkBAIC0xMzYsNyArMTM2LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBkaXNwYXRjaEV2ZW50TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAg
ICAgVGVzdEV2ZW50VGFyZ2V0KiBpbXAgPSBWOFRlc3RFdmVudFRhcmdldDo6dG9OYXRpdmUoYXJn
cy5Ib2xkZXIoKSk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgewotICAgIFY4VFJZ
Q0FUQ0goRXZlbnQqLCBldnQsIFY4RXZlbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4RXZlbnQ6OnRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhU
UllDQVRDSChFdmVudCosIGV2dCwgVjhFdmVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpID8gVjhFdmVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBib29sIHJlc3VsdCA9IGltcC0+ZGlzcGF0Y2hFdmVu
dChldnQsIGVjKTsKICAgICBpZiAoVU5MSUtFTFkoZWMpKQogICAgICAgICBnb3RvIGZhaWw7CkBA
IC0xNzksNyArMTc5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKHYKIAogICAgIC8vIEN1c3Rv
bSBTaWduYXR1cmUgJ2Rpc3BhdGNoRXZlbnQnCiAgICAgY29uc3QgaW50IGRpc3BhdGNoRXZlbnRB
cmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkaXNwYXRjaEV2
ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGlzcGF0Y2hFdmVudEFyZ3ZbZGlzcGF0Y2hF
dmVudEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhFdmVudDo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IGRpc3Bh
dGNoRXZlbnRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZGlzcGF0Y2hFdmVu
dEFyZ2MsIGRpc3BhdGNoRXZlbnRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgiZGlzcGF0Y2hFdmVudCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RF
dmVudFRhcmdldFY4SW50ZXJuYWw6OmRpc3BhdGNoRXZlbnRNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSkpOwogCkBAIC0xOTEsMjAgKzE5MSwyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmln
dXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29y
bGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFdmVudFRh
cmdldFRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RFdmVudFRhcmdldDo6SGFzSW5zdGFuY2Uodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxk
VHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJl
dHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywg
dmFsdWUsIHdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRl
c3RFdmVudFRhcmdldDo6dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKaW5kZXggM2QzNjYyYTBiNjM0MjQ3ZDEwZmE3NjhkNGZm
NTNiN2RlNzYxYzU0YS4uYWJhMmIzYTk0YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4NzdmYmVhNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogY2xhc3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3Js
ZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAg
ICAgc3RhdGljIFRlc3RFdmVudFRhcmdldCogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCA0N2NmMWZlODJiNmNl
ZjU3MmQ3OTE1ZGVlMzM2OWEzZDVjNGM1YmZhLi43YzAzMzE2NzM5YzQwYzJkNmM3ZTE0YjJjODAx
ODgzYWZmNWQ4NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtMTA2LDIwICsxMDYsMjAg
QEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVW
OFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODoKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0
ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7CisgICAgaWYg
KHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVz
dWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1
cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29ybGRU
eXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25U
ZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVt
cGw7CiB9CiAKLWJvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdv
cmxkVHlwZSkKK2Jvb2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdv
cmxkVHlwZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhh
c0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5oCmluZGV4IDlj
ZjgzMTk1MDIwZjYwZTAyNGI2NjBiNDRkMmIwYWUzN2IxZTQwNzAuLjY2NjNhMjU4YzI2ZGYxYTIz
MzI1MzRlNzg0YmRjZWFjOThiNzM5NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0RXhjZXB0aW9uIHsKIHB1Ymxp
YzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwot
ICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklz
b2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0RXhjZXB0aW9uKiB0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmlu
ZGV4IGUwZjhjY2FiNmU5MTM3YmRkZTY0N2FkZjU1NjU3ZThiZjViYzBiZGEuLjNlMjMzZjc5MThl
YzRiZDU5ZTE3MjFhMDJmZmJiZDQyNjAxYTVmYWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBA
IC0yMzQsNyArMjM0LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzdXBwbGVtZW50
YWxOb2RlQXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3QKIHN0YXRpYyB2b2lkIHN1
cHBsZW1lbnRhbE5vZGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0SW50ZXJmYWNlKiBpbXAgPSBWOFRlc3RJbnRlcmZhY2U6OnRvTmF0aXZlKGluZm8u
SG9sZGVyKCkpOwotICAgIE5vZGUqIHYgPSBWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZv
LkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgTm9k
ZSogdiA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4
Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsK
ICAgICBUZXN0U3VwcGxlbWVudGFsOjpzZXRTdXBwbGVtZW50YWxOb2RlKGltcCwgV1RGOjpnZXRQ
dHIodikpOwogICAgIHJldHVybjsKIH0KQEAgLTI4MCw3ICsyODAsNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDJNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKICAgICBWOFRSWUNB
VENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdz
WzBdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xh
dGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KGFyZ3NbMV0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0
T2JqOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6
OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkpIDogMCk7CiAg
ICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0Q29udGV4dCA9IGdldFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQoKTsKICAgICBSZWZQdHI8VGVzdE9iaj4gcmVzdWx0ID0gVGVzdFN1cHBsZW1l
bnRhbDo6c3VwcGxlbWVudGFsTWV0aG9kMihzY3JpcHRDb250ZXh0LCBpbXAsIHN0ckFyZywgb2Jq
QXJnLCBlYyk7CiAgICAgaWYgKFVOTElLRUxZKGVjKSkKQEAgLTQzOCw3ICs0MzgsNyBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdElu
dGVyZmFjZVRlbXBsYXRlKHY4OgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3VwcGxlbWVu
dGFsTWV0aG9kMicKICAgICBjb25zdCBpbnQgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2MgPSAyOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN1cHBsZW1lbnRhbE1ldGhvZDJB
cmd2W3N1cHBsZW1lbnRhbE1ldGhvZDJBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHN1cHBsZW1lbnRhbE1ldGhvZDJBcmd2W3N1cHBsZW1lbnRhbE1ldGhvZDJB
cmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN1cHBsZW1lbnRhbE1ldGhvZDJTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2MsIHN1cHBs
ZW1lbnRhbE1ldGhvZDJBcmd2KTsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShD
b25kaXRpb24xMikKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3VwcGxl
bWVudGFsTWV0aG9kMiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RJbnRlcmZhY2VW
OEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2QyTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIHN1cHBsZW1lbnRhbE1ldGhvZDJTaWduYXR1cmUpKTsKQEAgLTQ1NiwyMCArNDU2LDIwIEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwg
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0
YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0
YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxk
VHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlmIChy
ZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3Vs
dC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJl
VjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8sIHdvcmxkVHlw
ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Ci0gICAgZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5hZGQoJmluZm8sIHRlbXBsKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVt
cGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAg
IGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBs
OwogfQogCi1ib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCitib29sIFY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlLCB3b3Js
ZFR5cGUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiBBY3RpdmVET01PYmplY3QqIFY4VGVzdEludGVy
ZmFjZTo6dG9BY3RpdmVET01PYmplY3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
SW50ZXJmYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmgKaW5kZXggMDYxOTYyODZjNjEzM2ZjNjQzNWNjMDlmYjcyZDk3NDc2OWFi
NGM5Yi4uNWI3OGI4YWMzOTZjYmU4YzRlNzc4M2EyZTIyNmFjZDYyZmNiMjljMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFj
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJ
bnRlcmZhY2UuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBW
OFRlc3RJbnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVu
ZGVudExpZmV0aW1lID0gdHJ1ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSop
OwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVt
cGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdElu
dGVyZmFjZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IGQxNDdj
N2JmZTRhMzY0NzFiOTg0NmQ2NWJlNTJhMGM0YWE1NmVkOWMuLjI5MWRmY2U1OTdhMWEwZDZmYzM5
YzllYzUyZjE0MjE3MDYwODU1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lci5jcHAKQEAgLTExNSwyMCArMTE1LDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0
ZW5lCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBs
YXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBl
KS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVl
OwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbywgd29y
bGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1hcCh3b3Js
ZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRl
LCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7
CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
LmgKaW5kZXggMzBiNWRlMDRkNjlmZGMyODRlMjc4MmM3YTc4Nzc5M2NiOTU5MTdmZS4uNGUzNjZj
ZGY1NTFmMTYxNjBmNmQxYzc2OGViNDE0NTk5YTdjNGNhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIgewogcHVibGljOgogICAg
IHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3Rh
dGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSos
IFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldv
cmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKiB0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggMWVjYzQ0YjdlMTRmNTZkZmRiNjFmOTdjMTcwNzgzZDRj
ZmNhZGE0Yy4uMTFhYzljZjViNWM3YTdmZTY5NmI5NjNiNzcxOWQyNWEzY2FhN2I3OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVk
Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTQ2LDIwICsxNDYsMjAgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RO
YW1lZENvbnN0cnVjdG9yVGVtcGwKIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSog
ZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRl
RGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdv
cmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjpp
dGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOworICAgIGlm
IChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5lbmQoKSkKICAgICAgICAgcmV0dXJuIHJl
c3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmln
dXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZv
LCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFw
KHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE5h
bWVkQ29uc3RydWN0b3JUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6SGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0
ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5hbWVkQ29uc3RydWN0
b3I6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUq
IGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSkt
Pmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0K
IAogQWN0aXZlRE9NT2JqZWN0KiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjp0b0FjdGl2ZURPTU9i
amVjdCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCmluZGV4IDM5NDM2NGE1N2RiY2RiYzEyZWI2MjU4ZTg2ODQzMTQ4M2U0MWVhZTku
LmExOWRiYzY2Y2VjZTRjNGU4YzUzZGZhMjRkYWY3NjQ1ODcwOGI1NDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVj
dG9yLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE5hbWVkQ29uc3RydWN0b3IuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiBjbGFzcyBWOFRl
c3ROYW1lZENvbnN0cnVjdG9yIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA9IHRydWU7Ci0gICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAg
IHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xh
dGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRl
c3ROYW1lZENvbnN0cnVjdG9yKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5jcHAKaW5kZXggZjM3ZjY2N2EyMjBiY2EwZmRjNTZkMWYwYWE2M2Fl
ODU4OWU1OGUxZS4uMjI2YjM0NDM5ZmU2NmZlNTgzMGFlMjczNWZmMjNmOTQxZTVlYzRlNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5v
ZGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3ROb2RlLmNwcApAQCAtMTEzLDIwICsxMTMsMjAgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnMK
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7
CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSk7Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3Vs
dCA9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJl
c3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmVuZCgpKQorICAgIFY4UGVySXNv
bGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmZpbmQoJmluZm8pOworICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAoKS5l
bmQoKSkKICAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7CiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEt
PnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CisgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKLWJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldv
cmxkVHlwZSB3b3JsZFR5cGUpCitib29sIFY4VGVzdE5vZGU6Okhhc0luc3RhbmNlKHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJu
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1
ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogRXZlbnRUYXJnZXQqIFY4VGVzdE5v
ZGU6OnRvRXZlbnRUYXJnZXQodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaApp
bmRleCA1ODYwZTkxMTVjMGIwMzRiYzUxY2E1MDkzNTY1Nzc4MGNjM2NiYTU4Li45Nzg2MDM3NjMw
NTk4ZjA2YjdmN2Y2NzRlZDMwMDMyOGM1YWNhYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTM0LDcgKzM0LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgVjhUZXN0Tm9kZSB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0cnVlOwotICAgIHN0YXRp
YyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKKyAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3Js
ZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9kZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2Jq
ZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCAwNzg5MjEwZjlmYzk2NDA2NmRmZmYz
ZDY4NzUxZGQxZDI4ZGE5Yjg5Li5lNzJkMTZlMDQ5YzhjMTExMzNkMDk4YmYzNWIzZTY1MWIyYzJi
OTY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcApAQCAtMzcwLDcgKzM3MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gdGVzdE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpTdHJp
bmc+CiBzdGF0aWMgdm9pZCB0ZXN0T2JqQXR0ckF0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJ
bmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5m
by5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFs
dWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4
VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDog
MDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5H
ZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIGltcC0+c2V0VGVzdE9iakF0dHIoV1RGOjpnZXRQdHIo
dikpOwogICAgIHJldHVybjsKIH0KQEAgLTM5NSw3ICszOTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IFhNTE9iakF0dHJBdHRyR2V0dGVyQ2FsbGJhY2sodjg6OkxvY2FsPHY4OjpT
dHJpbmc+CiBzdGF0aWMgdm9pZCBYTUxPYmpBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0
cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3Nv
ckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKLSAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkg
OiAwOworICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZv
LkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRYTUxPYmpBdHRyKFdURjo6Z2V0UHRy
KHYpKTsKICAgICByZXR1cm47CiB9CkBAIC02NTksNyArNjU5LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0eXBlZEFycmF5QXR0ckF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8
djg6OlN0cmkKIHN0YXRpYyB2b2lkIHR5cGVkQXJyYXlBdHRyQXR0clNldHRlcih2ODo6TG9jYWw8
djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpB
Y2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBGbG9hdDMyQXJyYXkqIHYgPSBWOEZsb2F0MzJBcnJh
eTo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5H
ZXRJc29sYXRlKCkpKSA/IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIEZsb2F0MzJBcnJheSogdiA9IFY4RmxvYXQz
MkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhGbG9hdDMy
QXJyYXk6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7
CiAgICAgaW1wLT5zZXRUeXBlZEFycmF5QXR0cihXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJu
OwogfQpAQCAtODM4LDcgKzgzOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0
aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRyaWJ1dGVBdHRyR2V0dGVyQ2FsbGJhCiBzdGF0aWMg
dm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZUF0dHJTZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2
ODo6QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6
dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFz
SW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29s
YXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIHNjcmlwdENvbnRleHQgPSBnZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1w
LT5zZXRXaXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEF0dHJpYnV0ZShzY3JpcHRDb250ZXh0LCBX
VEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwpAQCAtODczLDcgKzg3Myw3IEBAIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdFN0YXRlQXR0cmlidXRlUmFpc2VzQXR0ckdl
dHRlckNhbGxiYWNrKHY4CiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYWlz
ZXNBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZh
bHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoq
IHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVz
dE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBT
Y3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1cnJlbnQoKTsKICAgICBp
ZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTA4LDcgKzkwOCw3IEBAIHN0
YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBdHRy
aWJ1dGVSYWlzZXNBdHRyR2V0dGVyCiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dEF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUs
IHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6QWNjZXNzb3JJbmZvJiBpbmZv
KQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoaW5mby5Ib2xkZXIo
KSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8u
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKKyAgICBU
ZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRl
KCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZh
bHVlKSkgOiAwOwogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdENvbnRleHQgPSBn
ZXRTY3JpcHRFeGVjdXRpb25Db250ZXh0KCk7CiAgICAgaW1wLT5zZXRXaXRoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dEF0dHJpYnV0ZVJhaXNlcyhzY3JpcHRDb250ZXh0LCBXVEY6OmdldFB0cih2KSk7
CiAgICAgcmV0dXJuOwpAQCAtOTM4LDcgKzkzOCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZUF0
CiBzdGF0aWMgdm9pZCB3aXRoU2NyaXB0RXhlY3V0aW9uQ29udGV4dEFuZFNjcmlwdFN0YXRlQXR0
cmlidXRlQXR0clNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVz
dE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKLSAgICBUZXN0
T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFRlc3RPYmoqIHYgPSBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkgPyBWOFRlc3RP
Ymo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAg
ICAgU2NyaXB0U3RhdGUqIGN1cnJlbnRTdGF0ZSA9IFNjcmlwdFN0YXRlOjpjdXJyZW50KCk7CiAg
ICAgaWYgKCFjdXJyZW50U3RhdGUpCiAgICAgICAgIHJldHVybjsKQEAgLTk4MCw3ICs5ODAsNyBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0
QW5kU2NyaXB0U3RhdGVBdHRyaWJ1dGVSYQogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHRBbmRTY3JpcHRTdGF0ZUF0dHJpYnV0ZVJhaXNlc0F0dHJTZXR0ZXIodjg6OkxvY2Fs
PHY4OjpTdHJpbmc+IG5hbWUsIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHZhbHVlLCBjb25zdCB2ODo6
QWNjZXNzb3JJbmZvJiBpbmZvKQogewogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoaW5mby5Ib2xkZXIoKSk7Ci0gICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5z
dGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRl
KCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2
YWx1ZSkpIDogMDsKKyAgICBUZXN0T2JqKiB2ID0gVjhUZXN0T2JqOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgaW5mby5HZXRJc29sYXRlKCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOwogICAgIFNjcmlwdFN0YXRlKiBjdXJyZW50U3Rh
dGUgPSBTY3JpcHRTdGF0ZTo6Y3VycmVudCgpOwogICAgIGlmICghY3VycmVudFN0YXRlKQogICAg
ICAgICByZXR1cm47CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IHdpdGhTY3JpcHRFeGVjdXRpb25Db250ZXh0QW5kU2NyaXB0U3RhdGVXaXRoU3BhY2Vz
QQogc3RhdGljIHZvaWQgd2l0aFNjcmlwdEV4ZWN1dGlvbkNvbnRleHRBbmRTY3JpcHRTdGF0ZVdp
dGhTcGFjZXNBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykK
IHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkp
OwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgVGVz
dE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgp
KSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1
ZSkpIDogMDsKICAgICBTY3JpcHRTdGF0ZSogY3VycmVudFN0YXRlID0gU2NyaXB0U3RhdGU6OmN1
cnJlbnQoKTsKICAgICBpZiAoIWN1cnJlbnRTdGF0ZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTA0
Nyw3ICsxMDQ3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3aXRoU2NyaXB0QXJn
dW1lbnRzQW5kQ2FsbFN0YWNrQXR0cmlidXRlQXR0ckdldHRlckMKIHN0YXRpYyB2b2lkIHdpdGhT
Y3JpcHRBcmd1bWVudHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGVBdHRyU2V0dGVyKHY4OjpMb2NhbDx2
ODo6U3RyaW5nPiBuYW1lLCB2ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFj
Y2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0
aXZlKGluZm8uSG9sZGVyKCkpOwotICAgIFRlc3RPYmoqIHYgPSBWOFRlc3RPYmo6Okhhc0luc3Rh
bmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgp
KSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFs
dWUpKSA6IDA7CisgICAgVGVzdE9iaiogdiA9IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UodmFsdWUs
IGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNldFdpdGhTY3JpcHRBcmd1bWVu
dHNBbmRDYWxsU3RhY2tBdHRyaWJ1dGUoV1RGOjpnZXRQdHIodikpOwogICAgIHJldHVybjsKIH0K
QEAgLTEzOTUsNyArMTM5NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXV0YWJs
ZVBvaW50QXR0ckdldHRlckNhbGxiYWNrKHY4OjpMb2NhbDx2ODo6U3RyaW5nCiBzdGF0aWMgdm9p
ZCBtdXRhYmxlUG9pbnRBdHRyU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCB2ODo6
TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsK
ICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGluZm8uSG9sZGVyKCkpOwot
ICAgIFJlZlB0cjxTVkdQcm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2lu
dDo6SGFzSW5zdGFuY2UodmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5H
ZXRJc29sYXRlKCkpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD46OkNhc3QodmFsdWUpKSA6IDA7CisgICAgUmVmUHRyPFNWR1Byb3BlcnR5VGVhck9mZjxGbG9h
dFBvaW50PiA+IHYgPSBWOFNWR1BvaW50OjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5mby5HZXRJc29s
YXRlKCkpID8gVjhTVkdQb2ludDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dCh2YWx1ZSkpIDogMDsKICAgICBpbXAtPnNldE11dGFibGVQb2ludChXVEY6OmdldFB0cih2KSk7
CiAgICAgcmV0dXJuOwogfQpAQCAtMTQxOSw3ICsxNDE5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBpbW11dGFibGVQb2ludEF0dHJHZXR0ZXJDYWxsYmFjayh2ODo6TG9jYWw8djg6
OlN0cmkKIHN0YXRpYyB2b2lkIGltbXV0YWJsZVBvaW50QXR0clNldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIGNvbnN0IHY4OjpBY2Nl
c3NvckluZm8mIGluZm8pCiB7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2
ZShpbmZvLkhvbGRlcigpKTsKLSAgICBSZWZQdHI8U1ZHUHJvcGVydHlUZWFyT2ZmPEZsb2F0UG9p
bnQ+ID4gdiA9IFY4U1ZHUG9pbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSwgd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKSkgPyBWOFNWR1BvaW50Ojp0b05hdGl2ZSh2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKSkgOiAwOworICAgIFJlZlB0cjxTVkdQ
cm9wZXJ0eVRlYXJPZmY8RmxvYXRQb2ludD4gPiB2ID0gVjhTVkdQb2ludDo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGluZm8uR2V0SXNvbGF0ZSgpKSA/IFY4U1ZHUG9pbnQ6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKSA6IDA7CiAgICAgaW1wLT5zZXRJbW11dGFibGVQ
b2ludChXVEY6OmdldFB0cih2KSk7CiAgICAgcmV0dXJuOwogfQpAQCAtMTU3Miw3ICsxNTcyLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FUQ0goaW50LCBsb25nQXJnLCB0
b0ludDMyKGFyZ3NbMF0pKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNFKFY4
U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFdKTsKLSAgICBWOFRSWUNBVENIKFRlc3RP
YmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhUZXN0T2JqOjp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0pKSA6IDApOworICAgIFY4VFJZ
Q0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBh
cmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CiAgICAgaW1wLT52b2lkTWV0aG9kV2l0aEFyZ3Mo
bG9uZ0FyZywgc3RyQXJnLCBvYmpBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpA
QCAtMTYwMCw3ICsxNjAwLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBsb25nTWV0
aG9kV2l0aEFyZ3NNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBUZXN0T2Jq
KiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAgIFY4VFJZQ0FU
Q0goaW50LCBsb25nQXJnLCB0b0ludDMyKGFyZ3NbMF0pKTsKICAgICBWOFRSWUNBVENIX0ZPUl9W
OFNUUklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFdKTsKLSAg
ICBWOFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJn
c1syXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8g
VjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMl0p
KSA6IDApOworICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CiAgICAgcmV0dXJu
IHY4SW50ZWdlcihpbXAtPmxvbmdNZXRob2RXaXRoQXJncyhsb25nQXJnLCBzdHJBcmcsIG9iakFy
ZyksIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIH0KIApAQCAtMTYyOCw3ICsxNjI4LDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvYmpNZXRob2RXaXRoQXJnc01ldGhvZChjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzKQogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUo
YXJncy5Ib2xkZXIoKSk7CiAgICAgVjhUUllDQVRDSChpbnQsIGxvbmdBcmcsIHRvSW50MzIoYXJn
c1swXSkpOwogICAgIFY4VFJZQ0FUQ0hfRk9SX1Y4U1RSSU5HUkVTT1VSQ0UoVjhTdHJpbmdSZXNv
dXJjZTw+LCBzdHJBcmcsIGFyZ3NbMV0pOwotICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFy
ZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSwgd29y
bGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1syXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChUZXN0
T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMl0sIGFyZ3MuR2V0SXNv
bGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2Fz
dChhcmdzWzJdKSkgOiAwKTsKICAgICByZXR1cm4gdG9WOChpbXAtPm9iak1ldGhvZFdpdGhBcmdz
KGxvbmdBcmcsIHN0ckFyZywgb2JqQXJnKSwgYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpOwogfQogCkBAIC0xNjc0LDcgKzE2NzQsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NNZXRob2QoY29uc3Qgdjg6Ogog
ICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIHsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNU
UklOR1JFU09VUkNFKFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzBdKTsKLSAgICBW
OFRSWUNBVENIKFRlc3RPYmoqLCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1sx
XSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhU
ZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6
IDApOworICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9iakFyZywgVjhUZXN0T2JqOjpIYXNJbnN0
YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sxXSkpIDogMCk7CiAgICAgUmVmUHRyPFRl
c3RPYmo+IHJlc3VsdCA9IGltcC0+bWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyhz
dHJBcmcsIG9iakFyZywgZWMpOwogICAgIGlmIChVTkxJS0VMWShlYykpCiAgICAgICAgIGdvdG8g
ZmFpbDsKQEAgLTIyNDEsNyArMjI0MSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
b3ZlcmxvYWRlZE1ldGhvZDFNZXRob2QoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBp
ZiAoYXJncy5MZW5ndGgoKSA8IDIpCiAgICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3Vt
ZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RP
Ymo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIFY4VFJZQ0FUQ0goVGVzdE9iaiosIG9i
akFyZywgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwg
d29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFRlc3RPYmo6OnRvTmF0aXZlKHY4OjpI
YW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChU
ZXN0T2JqKiwgb2JqQXJnLCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6
Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBWOFRSWUNBVENIX0ZPUl9WOFNUUklOR1JFU09VUkNF
KFY4U3RyaW5nUmVzb3VyY2U8Piwgc3RyQXJnLCBhcmdzWzFdKTsKICAgICBpbXAtPm92ZXJsb2Fk
ZWRNZXRob2Qob2JqQXJnLCBzdHJBcmcpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpAQCAt
MjI1Miw3ICsyMjUyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVk
TWV0aG9kMk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxl
bmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3Io
YXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBWOFRl
c3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUo
YXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6
T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoqLCBv
YmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkp
ID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDApOwogICAgIGlmIChhcmdzLkxlbmd0aCgpIDw9IDEpIHsKICAgICAgICAgaW1wLT5v
dmVybG9hZGVkTWV0aG9kKG9iakFyZyk7CiAgICAgICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwpA
QCAtMjMxOSw3ICsyMzE5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9h
ZGVkTWV0aG9kOE1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdz
Lkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJy
b3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9O
YXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChUZXN0T2JqKiwgb2JqQXJnLCBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5
cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4VGVzdE9iajo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKFRlc3RPYmoq
LCBvYmpBcmcsIFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpID8gVjhUZXN0T2JqOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFy
Z3NbMF0pKSA6IDApOwogICAgIGltcC0+b3ZlcmxvYWRlZE1ldGhvZChvYmpBcmcpOwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMjM1Niw5ICsyMzU2LDkgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kMTFNZXRob2QoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0
aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiB7Ci0gICAgaWYgKChhcmdzLkxl
bmd0aCgpID09IDIgJiYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUo
KSkpKSAmJiAoYXJnc1sxXS0+SXNOdWxsKCkgfHwgYXJnc1sxXS0+SXNVbmRlZmluZWQoKSB8fCBh
cmdzWzFdLT5Jc1N0cmluZygpIHx8IGFyZ3NbMV0tPklzT2JqZWN0KCkpKSkKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMiAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJ
bnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpICYmIChhcmdzWzFdLT5Jc051bGwo
KSB8fCBhcmdzWzFdLT5Jc1VuZGVmaW5lZCgpIHx8IGFyZ3NbMV0tPklzU3RyaW5nKCkgfHwgYXJn
c1sxXS0+SXNPYmplY3QoKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDFNZXRo
b2QoYXJncyk7Ci0gICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzTnVs
bCgpIHx8IFY4VGVzdE9iajo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSkgfHwgKGFyZ3MuTGVuZ3RoKCkgPT0gMiAm
JiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2JqOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBh
cmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKKyAgICBp
ZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhUZXN0T2Jq
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSB8fCAoYXJncy5MZW5n
dGgoKSA9PSAyICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBWOFRlc3RPYmo6Okhhc0luc3RhbmNl
KGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRl
ZE1ldGhvZDJNZXRob2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFy
Z3NbMF0tPklzTnVsbCgpIHx8IGFyZ3NbMF0tPklzVW5kZWZpbmVkKCkgfHwgYXJnc1swXS0+SXNT
dHJpbmcoKSB8fCBhcmdzWzBdLT5Jc09iamVjdCgpKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9h
ZGVkTWV0aG9kM01ldGhvZChhcmdzKTsKQEAgLTIzNjYsMTEgKzIzNjYsMTEgQEAgc3RhdGljIHY4
OjpIYW5kbGU8djg6OlZhbHVlPiBvdmVybG9hZGVkTWV0aG9kTWV0aG9kKGNvbnN0IHY4OjpBcmd1
bWVudHMmIGFyZ3MpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9kNE1ldGhvZChhcmdz
KTsKICAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwg
YXJnc1swXS0+SXNGdW5jdGlvbigpKSkpCiAgICAgICAgIHJldHVybiBvdmVybG9hZGVkTWV0aG9k
NU1ldGhvZChhcmdzKTsKLSAgICBpZiAoKGFyZ3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+
SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoYXJnc1swXS0+SXNOdWxsKCkgfHwgVjhET01TdHJpbmdMaXN0
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpKSkKICAgICAgICAgcmV0
dXJuIG92ZXJsb2FkZWRNZXRob2Q2TWV0aG9kKGFyZ3MpOwogICAgIGlmICgoYXJncy5MZW5ndGgo
KSA9PSAxICYmIChhcmdzWzBdLT5Jc051bGwoKSB8fCBhcmdzWzBdLT5Jc0FycmF5KCkpKSkKICAg
ICAgICAgcmV0dXJuIG92ZXJsb2FkZWRNZXRob2Q3TWV0aG9kKGFyZ3MpOwotICAgIGlmICgoYXJn
cy5MZW5ndGgoKSA9PSAxICYmIChWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkpKQorICAgIGlmICgo
YXJncy5MZW5ndGgoKSA9PSAxICYmIChWOFRlc3RPYmo6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDhNZXRo
b2QoYXJncyk7CiAgICAgaWYgKChhcmdzLkxlbmd0aCgpID09IDEgJiYgKGFyZ3NbMF0tPklzQXJy
YXkoKSkpKQogICAgICAgICByZXR1cm4gb3ZlcmxvYWRlZE1ldGhvZDlNZXRob2QoYXJncyk7CkBA
IC0yNjIwLDcgKzI2MjAsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnZlcnQx
TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgaWYgKGFyZ3MuTGVuZ3RoKCkg
PCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1bWVudHNFcnJvcihhcmdzLkdl
dElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0T2JqOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENIKGEqLCB2YWx1ZSwgVjhhOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
PyBWOGE6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDog
MCk7CisgICAgVjhUUllDQVRDSChhKiwgdmFsdWUsIFY4YTo6SGFzSW5zdGFuY2UoYXJnc1swXSwg
YXJncy5HZXRJc29sYXRlKCkpID8gVjhhOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+Y29udmVydDEodmFsdWUpOwogICAgIHJl
dHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMjYzNSw3ICsyNjM1LDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb252ZXJ0Mk1ldGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdz
KQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgMSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9
IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChiKiwg
dmFsdWUsIFY4Yjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhiOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0goYiosIHZhbHVlLCBW
OGI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Yjo6dG9OYXRp
dmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKICAgICBpbXAt
PmNvbnZlcnQyKHZhbHVlKTsKICAgICByZXR1cm4gdjhVbmRlZmluZWQoKTsKIH0KQEAgLTI2NTAs
NyArMjY1MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29udmVydDRNZXRob2Qo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICBpZiAoYXJncy5MZW5ndGgoKSA8IDEpCiAg
ICAgICAgIHJldHVybiB0aHJvd05vdEVub3VnaEFyZ3VtZW50c0Vycm9yKGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKICAgICBUZXN0T2JqKiBpbXAgPSBWOFRlc3RPYmo6OnRvTmF0aXZlKGFyZ3MuSG9sZGVy
KCkpOwotICAgIFY4VFJZQ0FUQ0goZCosIHZhbHVlLCBWOGQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0s
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4ZDo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAg
ICBWOFRSWUNBVENIKGQqLCB2YWx1ZSwgVjhkOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSkgPyBWOGQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1swXSkpIDogMCk7CiAgICAgaW1wLT5jb252ZXJ0NCh2YWx1ZSk7CiAgICAgcmV0dXJuIHY4
VW5kZWZpbmVkKCk7CiB9CkBAIC0yNjY1LDcgKzI2NjUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGNvbnZlcnQ1TWV0aG9kKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAg
aWYgKGFyZ3MuTGVuZ3RoKCkgPCAxKQogICAgICAgICByZXR1cm4gdGhyb3dOb3RFbm91Z2hBcmd1
bWVudHNFcnJvcihhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgVGVzdE9iaiogaW1wID0gVjhUZXN0
T2JqOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBWOFRSWUNBVENIKGUqLCB2YWx1ZSwg
VjhlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFy
Z3MuR2V0SXNvbGF0ZSgpKSkgPyBWOGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46
OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAgVjhUUllDQVRDSChlKiwgdmFsdWUsIFY4ZTo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpID8gVjhlOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOwogICAgIGltcC0+Y29udmVy
dDUodmFsdWUpOwogICAgIHJldHVybiB2OFVuZGVmaW5lZCgpOwogfQpAQCAtMjc3MCwxMCArMjc3
MCwxMCBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhcmlhZGljTm9kZU1ldGhvZE1l
dGhvZChjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIGlmIChhcmdzLkxlbmd0aCgpIDwg
MSkKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJ
c29sYXRlKCkpOwogICAgIFRlc3RPYmoqIGltcCA9IFY4VGVzdE9iajo6dG9OYXRpdmUoYXJncy5I
b2xkZXIoKSk7Ci0gICAgVjhUUllDQVRDSChOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgp
KSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1sw
XSkpIDogMCk7CisgICAgVjhUUllDQVRDSChOb2RlKiwgaGVhZCwgVjhOb2RlOjpIYXNJbnN0YW5j
ZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAgICAgVmVjdG9yPFJlZlB0cjxO
b2RlPiA+IHRhaWw7CiAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBhcmdzLkxlbmd0aCgpOyArK2kp
IHsKLSAgICAgICAgaWYgKCFWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAgICAgICAgaWYgKCFWOE5v
ZGU6Okhhc0luc3RhbmNlKGFyZ3NbaV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKICAgICAgICAgICAg
IHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIHRh
aWwuYXBwZW5kKFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzW2ldKSkpOwogICAgIH0KQEAgLTMwNjIsMzEgKzMwNjIsMzEgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3ZvaWRNZXRob2RXaXRoQXJncycK
ICAgICBjb25zdCBpbnQgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9k
V2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbywgd29ybGRUeXBlKSB9OworICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZvaWRNZXRob2RXaXRoQXJnc0FyZ3Zb
dm9pZE1ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8pIH07CiAgICAg
djg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdm9pZE1ldGhvZFdpdGhBcmdzQXJnYywgdm9pZE1ldGhv
ZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInZv
aWRNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOElu
dGVybmFsOjp2b2lkTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
dm9pZE1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICdsb25nTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50IGxvbmdNZXRob2RXaXRoQXJnc0Fy
Z2MgPSAzOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RX
aXRoQXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6Omlu
Zm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBs
b25nTWV0aG9kV2l0aEFyZ3NBcmd2W2xvbmdNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhU
ZXN0T2JqOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbG9uZ01ldGhv
ZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIGxvbmdNZXRob2RX
aXRoQXJnc0FyZ2MsIGxvbmdNZXRob2RXaXRoQXJnc0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJsb25nTWV0aG9kV2l0aEFyZ3MiKSwgdjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bG9uZ01ldGhvZFdpdGhBcmdzTWV0aG9kQ2Fs
bGJhY2ssIHY4VW5kZWZpbmVkKCksIGxvbmdNZXRob2RXaXRoQXJnc1NpZ25hdHVyZSkpOwogCiAg
ICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnb2JqTWV0aG9kV2l0aEFyZ3MnCiAgICAgY29uc3QgaW50
IG9iak1ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gb2JqTWV0aG9kV2l0aEFyZ3NBcmd2W29iak1ldGhvZFdpdGhBcmdzQXJnY10gPSB7
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOFRlc3RPYmo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBvYmpNZXRob2RXaXRoQXJnc0FyZ3Zbb2JqTWV0aG9kV2l0aEFyZ3NB
cmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWdu
YXR1cmU+IG9iak1ldGhvZFdpdGhBcmdzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRl
c2MsIG9iak1ldGhvZFdpdGhBcmdzQXJnYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBw
cm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgib2JqTWV0aG9kV2l0aEFyZ3MiKSwgdjg6
OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0aG9kV2l0aEFy
Z3NNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1
cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFdpdGhTZXF1ZW5jZUFyZycK
ICAgICBjb25zdCBpbnQgbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnYyA9IDE7Ci0gICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJndlttZXRo
b2RXaXRoU2VxdWVuY2VBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4c2VxdWVuY2U8U2NyaXB0UHJvZmlsZT46OmluZm8sIHdvcmxkVHlw
ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTY3JpcHRQcm9maWxl
Pjo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFdpdGhTZXF1
ZW5jZUFyZ1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBtZXRob2RXaXRoU2Vx
dWVuY2VBcmdBcmdjLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0aG9kV2l0aFNlcXVlbmNlQXJnIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6Om1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RXaXRoU2VxdWVuY2VBcmdTaWdu
YXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ21ldGhvZFRoYXRSZXF1aXJlc0Fs
bEFyZ3NBbmRUaHJvd3MnCiAgICAgY29uc3QgaW50IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3NBcmdjID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBt
ZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVxdWlyZXNB
bGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RP
Ymo6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBtZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndlttZXRob2RUaGF0UmVx
dWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+KCksIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OFRlc3RPYmo6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBtZXRob2RU
aGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjLCBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXdTeW1ib2woIm1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3MiKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6bWV0aG9kVGhhdFJlcXVpcmVz
QWxsQXJnc0FuZFRocm93c01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBtZXRob2RUaGF0
UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dzU2lnbmF0dXJlKSk7CiAgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgic3RhdGljTWV0aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmci
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5hbDo6c3RhdGljTWV0
aG9kV2l0aENhbGxiYWNrQW5kT3B0aW9uYWxBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKQEAgLTMxMDQsNDMgKzMxMDQsNDMgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmlu
Z0FycmF5RnVuY3Rpb24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0g
MTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0
aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUp
IH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5j
dGlvbkFyZ3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKICAgICB2
ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0Fy
cmF5RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgi
c3RyaW5nQXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjpzdHJpbmdBcnJheUZ1bmN0aW9uTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVk
KCksIHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWdu
YXR1cmUgJ2RvbVN0cmluZ0xpc3RGdW5jdGlvbicKICAgICBjb25zdCBpbnQgZG9tU3RyaW5nTGlz
dEZ1bmN0aW9uQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
ZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsg
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5n
TGlzdDo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ3ZbZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJn
Y10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERP
TVN0cmluZ0xpc3Q6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBkb21T
dHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgZG9t
U3RyaW5nTGlzdEZ1bmN0aW9uQXJnYywgZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndik7CiAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImRvbVN0cmluZ0xpc3RGdW5jdGlvbiIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpkb21TdHJpbmdM
aXN0RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZG9tU3RyaW5nTGlzdEZ1
bmN0aW9uU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0MScK
ICAgICBjb25zdCBpbnQgY29udmVydDFBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBjb252ZXJ0MUFyZ3ZbY29udmVydDFBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4YTo6aW5mbywgd29ybGRUeXBlKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252
ZXJ0MUFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0
ZSgmVjhhOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDFT
aWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgY29udmVydDFBcmdjLCBjb252ZXJ0
MUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MSIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0MU1l
dGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0MVNpZ25hdHVyZSkpOwogCiAgICAg
Ly8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVydDInCiAgICAgY29uc3QgaW50IGNvbnZlcnQyQXJn
YyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDJBcmd2
W2NvbnZlcnQyQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOGI6OmluZm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Yjo6aW5mbykgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQyU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIGNvbnZlcnQyQXJnYywgY29udmVydDJBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgiY29udmVydDIiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5l
dyhUZXN0T2JqVjhJbnRlcm5hbDo6Y29udmVydDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgY29udmVydDJTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZl
cnQ0JwogICAgIGNvbnN0IGludCBjb252ZXJ0NEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ0QXJndltjb252ZXJ0NEFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhkOjppbmZvLCB3b3JsZFR5
cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRBcmd2
W2NvbnZlcnQ0QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1Rl
bXBsYXRlKCZWOGQ6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252
ZXJ0NFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0NEFyZ2MsIGNv
bnZlcnQ0QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZl
cnQ0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZl
cnQ0TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ0U2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdjb252ZXJ0NScKICAgICBjb25zdCBpbnQgY29udmVy
dDVBcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0
NUFyZ3ZbY29udmVydDVBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+
cmF3VGVtcGxhdGUoJlY4ZTo6aW5mbywgd29ybGRUeXBlKSB9OworICAgIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhlOjppbmZvKSB9OwogICAg
IHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0
ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0NU1ldGhvZENhbGxiYWNrLCB2OFVuZGVm
aW5lZCgpLCBjb252ZXJ0NVNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAn
dmFyaWFkaWNOb2RlTWV0aG9kJwogICAgIGNvbnN0IGludCB2YXJpYWRpY05vZGVNZXRob2RBcmdj
ID0gMjsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2YXJpYWRpY05vZGVN
ZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3b3JsZFR5cGUpLCBWOFBl
cklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvLCB3
b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdmFyaWFk
aWNOb2RlTWV0aG9kQXJndlt2YXJpYWRpY05vZGVNZXRob2RBcmdjXSA9IHsgVjhQZXJJc29sYXRl
RGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9kZTo6aW5mbyksIFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOE5vZGU6OmluZm8pIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUg
PSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgdmFyaWFkaWNOb2RlTWV0aG9kQXJnYywgdmFyaWFk
aWNOb2RlTWV0aG9kQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2wo
InZhcmlhZGljTm9kZU1ldGhvZCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjp2YXJpYWRpY05vZGVNZXRob2RNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgdmFyaWFkaWNOb2RlTWV0aG9kU2lnbmF0dXJlKSk7CiAgICAgVjhET01Db25maWd1cmF0aW9u
OjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVjhUZXN0T2JqQ29uc3RzLCBX
VEZfQVJSQVlfTEVOR1RIKFY4VGVzdE9iakNvbnN0cyksIGlzb2xhdGUpOwpAQCAtMzE1MywyMCAr
MzE1MywyMCBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xh
dGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEq
IGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0
ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3
b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVN
YXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6
aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiBy
ZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZp
Z3VyZVY4VGVzdE9ialRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUp
LCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSku
YWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKGRh
dGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICBkYXRhLT50
ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAot
Ym9vbCBWOFRlc3RPYmo6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBW
OFRlc3RPYmo6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVl
KTsKIH0KIAogdm9pZCBWOFRlc3RPYmo6Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IGluc3RhbmNlLCBUZXN0T2JqKiBpbXBsLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouaAppbmRleCA4NzdhYzI1MGM3NGQ0ZTE2OGNkMjEwMzNiZGM0Mjk3YmE0MDJm
MmQ4Li5hZmRmNzY3ZmJlYmNmZTM1N2ZlM2U2ZDFmOTNjNDgwNzFiMmQ5MDVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCkBA
IC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE9iaiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxz
ZTsKLSAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4
OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CisgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFu
Y2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUq
LCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE9iaiogdG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnMuY3BwCmluZGV4IGUzYjNlNDEwZjA5ODNmOTU3OGNkMTkyMDhiZTA0
MDVhNDhhY2QxNjUuLjBkODA1OTliZDlkMzk0ZmRhMDA4M2Y4MWY5MWVjM2RjZmI0ZDMyNTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAKQEAgLTc3LDcg
Kzc3LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQgVjhfVVNFKFQpIHsgfQogCiBzdGF0
aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yMShjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogewotICAgIFY4VFJZQ0FUQ0goQXJyYXlCdWZmZXIqLCBhcnJheUJ1ZmZlciwgVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhBcnJheUJ1ZmZlcjo6dG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwKTsKKyAgICBWOFRSWUNBVENIKEFy
cmF5QnVmZmVyKiwgYXJyYXlCdWZmZXIsIFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4OjpIYW5k
bGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CiAKICAgICBSZWZQdHI8VGVzdE92
ZXJsb2FkZWRDb25zdHJ1Y3RvcnM+IGltcGwgPSBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
Y3JlYXRlKGFycmF5QnVmZmVyKTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIg
PSBhcmdzLkhvbGRlcigpOwpAQCAtODgsNyArODgsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGNvbnN0cnVjdG9yMShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yMihjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogewotICAgIFY4VFJZQ0FUQ0goQXJyYXlCdWZmZXJWaWV3KiwgYXJyYXlCdWZmZXJWaWV3
LCBWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhBcnJheUJ1ZmZlclZpZXc6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMCk7CisgICAg
VjhUUllDQVRDSChBcnJheUJ1ZmZlclZpZXcqLCBhcnJheUJ1ZmZlclZpZXcsIFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOEFycmF5
QnVmZmVyVmlldzo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBd
KSkgOiAwKTsKIAogICAgIFJlZlB0cjxUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycz4gaW1wbCA9
IFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzOjpjcmVhdGUoYXJyYXlCdWZmZXJWaWV3KTsKICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtOTks
NyArOTksNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yMihjb25z
dCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNv
bnN0cnVjdG9yMyhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIFY4VFJZQ0FUQ0go
QmxvYiosIGJsb2IsIFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhCbG9iOjp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDApOworICAgIFY4VFJZQ0FUQ0go
QmxvYiosIGJsb2IsIFY4QmxvYjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRl
KCkpID8gVjhCbG9iOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3Nb
MF0pKSA6IDApOwogCiAgICAgUmVmUHRyPFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzPiBpbXBs
ID0gVGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnM6OmNyZWF0ZShibG9iKTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IHdyYXBwZXIgPSBhcmdzLkhvbGRlcigpOwpAQCAtMTIxLDExICsxMjEs
MTEgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvcjQoY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKIAogc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1
Y3Rvcihjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogewotICAgIGlmICgoYXJncy5MZW5ndGgo
KSA9PSAxICYmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKKyAgICBpZiAoKGFyZ3Mu
TGVuZ3RoKCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCkpKSkpCiAgICAgICAgIHJldHVybiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yMShhcmdzKTsKLSAgICBpZiAoKGFyZ3MuTGVuZ3Ro
KCkgPT0gMSAmJiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkpKQorICAgIGlmICgo
YXJncy5MZW5ndGgoKSA9PSAxICYmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCkpKSkpCiAgICAgICAgIHJldHVybiBUZXN0T3ZlcmxvYWRl
ZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6OmNvbnN0cnVjdG9yMihhcmdzKTsKLSAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpKSkKKyAgICBpZiAoKGFy
Z3MuTGVuZ3RoKCkgPT0gMSAmJiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSkpKSkKICAgICAgICAgcmV0dXJuIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3Jz
VjhJbnRlcm5hbDo6Y29uc3RydWN0b3IzKGFyZ3MpOwogICAgIGlmIChhcmdzLkxlbmd0aCgpID09
IDEpCiAgICAgICAgIHJldHVybiBUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1Y4SW50ZXJuYWw6
OmNvbnN0cnVjdG9yNChhcmdzKTsKQEAgLTE2NywyMCArMTY3LDIwIEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9yCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3Zl
cmxvYWRlZENvbnN0cnVjdG9yczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdy
YXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5
cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+dGVtcGxhdGVNYXAod29y
bGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0
b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKKyAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5m
bywgd29ybGRUeXBlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKLSAgICBkYXRhLT50ZW1wbGF0ZU1h
cCh3b3JsZFR5cGUpLmFkZCgmaW5mbywgdGVtcGwpOworICAgICAgICBDb25maWd1cmVWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBp
c29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RP
dmVybG9hZGVkQ29uc3RydWN0b3JzOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
dmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUsIHdvcmxkVHlwZSk7
CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzLmgKaW5kZXggMzA4Njg5YjM0OGYzNGFhMWNhZDVjM2E1OWU5ODUyNDFhYjNiOWM0OC4u
YWU1MjEwMTJkODljYjdmOWVjMGQ1YjAyNGM5ZDVhZWYxMGRlNzQ0MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25z
dHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgewogcHVibGlj
OgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0g
ICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNv
bGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3Jh
cHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4
IDhlNWM3YzQ1ZmQ5NWRjZDU1MDdjOTU1YWViYzdiYjY3Y2EwNjc3YjIuLjcwZGZjYTdiMjliYmQ2
M2JjNTUzYjIzODYzNWJkZjExMTcyYTQ2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMzIsMjAgKzMzMiwyMCBA
QCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUo
djg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAg
IFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUp
OwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBk
YXRhLT50ZW1wbGF0ZU1hcCh3b3JsZFR5cGUpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQg
IT0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5lbmQoKSkKKyAgICBWOFBlcklzb2xhdGVE
YXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+dGVtcGxhdGVNYXAoKS5m
aW5kKCZpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKCkuZW5kKCkp
CiAgICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhh
bmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1w
bCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOwotICAgIGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0
ZW1wbCk7CisgICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVy
ZmFjZVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBl
KTsKKyAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVy
biB0ZW1wbDsKIH0KIAotYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6
Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlz
b2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQorYm9vbCBWOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2
YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsK
KyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2Uo
JmluZm8sIHZhbHVlKTsKIH0KIAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmgKaW5kZXggNTBkY2JmMTYxZjlhMDJkNWY4Nzc1Yjk3ZGMy
Mjg3ZGI0N2NkNjM1Yi4uMGE1ZmEzZjIyNDM1YjY5YTQwN2I3M2M5OTcxZTdiNTM2ZTE4MTAyNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZh
Y2UuaApAQCAtMzUsNyArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBWOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7Ci0gICAgc3RhdGljIGJvb2wgSGFz
SW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3Js
ZFR5cGUpOworICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVl
Piwgdjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7CiAg
ICAgc3RhdGljIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UqIHRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwCmlu
ZGV4IGM3ZGI0NzkwODc4YjAxODMwNTQxYjk1YmI5YjBhMzVmOWU2YjE1ZjguLmU2NzdlYmM5NTgx
YzBiM2Q1YzMyZTk0ODBhY2Y1ODczZmY5NTYwNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcApAQCAt
MjY0LDcgKzI2NCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY01ldGhvZChj
b25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgICAgICBpbXAtPmZ1bmMoKTsKICAgICAgICAg
cmV0dXJuIHY4VW5kZWZpbmVkKCk7CiAgICAgfQotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAm
JiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4bG9uZ1tdOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
CisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzBd
KSAmJiAhVjhsb25nW106Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBWOFRSWUNBVENIKFZlY3RvcjxpbnQ+LCB4LCB0b05hdGl2ZUFycmF5PGludD4oYXJnc1swXSkp
OwogICAgIGltcC0+ZnVuYyh4KTsKQEAgLTU1MSwyNSArNTUxLDI1IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1w
bGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2VxdWVuY2VB
cmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwotICAgIHY4
OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3Zb
bWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOHNlcXVlbmNlPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT46Omlu
Zm8sIHdvcmxkVHlwZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBt
ZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxT
ZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25h
dHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3
KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0Fy
Z3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RXaXRoU2Vx
dWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVy
bmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
bWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICdudWxsYWJsZUFycmF5QXJnJwogICAgIGNvbnN0IGludCBudWxsYWJsZUFycmF5QXJnQXJn
YyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbnVsbGFibGVBcnJh
eUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbywgd29ybGRUeXBlKSB9
OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdB
cmd2W251bGxhYmxlQXJyYXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CiAgICAgdjg6OkhhbmRs
ZTx2ODo6U2lnbmF0dXJlPiBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVy
ZTo6TmV3KGRlc2MsIG51bGxhYmxlQXJyYXlBcmdBcmdjLCBudWxsYWJsZUFycmF5QXJnQXJndik7
CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm51bGxhYmxlQXJyYXlBcmci
KSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpudWxs
YWJsZUFycmF5QXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG51bGxhYmxlQXJyYXlB
cmdTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVu
Y3Rpb24nCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltz
dHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvLCB3b3JsZFR5cGUpIH07CisgICAg
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ3Zb
c3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2lnbmF0
dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVuY3Rp
b25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5nQXJy
YXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50
ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
c3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVuY3Rp
b24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5n
QXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZv
LCB3b3JsZFR5cGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjpp
bmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlv
bjJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlv
bjJBcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9uMiIpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb24yTWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0FycmF5RnVuY3Rpb24yU2lnbmF0dXJl
KSk7CiAKQEAgLTU4MSwyMCArNTgxLDIwIEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZSh2ODo6CiB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0VHlwZWRlZnM6OkdldFRlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsK
ICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+dGVtcGxhdGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVz
dWx0ICE9IGRhdGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29s
YXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnRlbXBsYXRlTWFw
KCkuZmluZCgmaW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT50ZW1wbGF0ZU1hcCgpLmVu
ZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3RUeXBlZGVmc1RlbXBsYXRlKGRhdGEtPnJh
d1RlbXBsYXRlKCZpbmZvLCB3b3JsZFR5cGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOwotICAgIGRh
dGEtPnRlbXBsYXRlTWFwKHdvcmxkVHlwZSkuYWRkKCZpbmZvLCB0ZW1wbCk7CisgICAgICAgIENv
bmZpZ3VyZVY4VGVzdFR5cGVkZWZzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBp
c29sYXRlLCB3b3JsZFR5cGUpOworICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0
ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4VGVzdFR5cGVkZWZzOjpIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKK2Jvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSwgd29ybGRUeXBlKTsKKyAgICByZXR1cm4gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8sIHZhbHVlKTsKIH0KIAogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlw
ZWRlZnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RU
eXBlZGVmcy5oCmluZGV4IGVlOWVjMmY0ZTQwZjE3MWE4NTExYjUzYTI2ZTBjNjZlZmM3ZGEzMGEu
LjE0ZGIxZTU1ZDk4Mjg3YTBlN2RjZTA3NDJjM2ExOGM1NWFiNzM5N2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RUeXBlZGVm
cy5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFY4VGVzdFR5
cGVkZWZzIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZl
dGltZSA9IGZhbHNlOwotICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiwgdjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKKyAgICBzdGF0aWMgYm9v
bCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7CiAgICAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2
ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0VHlwZWRlZnMq
IHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RpY3Rpb25hcnkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKaW5kZXggYmYzYzFlMzNiZTJmYmY2NDJm
NzJjYWM4YTY4YTc4YTVjMjI3NzVkOC4uYjNiNzAyMmEwOTM1NzQwODZiOGNhZmUzYjliNDk5NWVm
OWY0NDFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFy
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGljdGlvbmFyeS5jcHAKQEAg
LTI3OSw3ICsyNzksNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwg
UmVmUHRyPFN0b3JhZ2U+JiB2YWx1ZSkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAg
ICAgdmFsdWUgPSAwOwotICAgIGlmIChWOFN0b3JhZ2U6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1f
aXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQorICAgIGlmIChWOFN0b3JhZ2U6Okhhc0lu
c3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCiAgICAgICAgIHZhbHVlID0gVjhTdG9yYWdlOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KQEAgLTMzNyw3ICszMzcsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25z
dCBTdHJpbmcmIGtleSwgUmVmUHRyPFVpbnQ4QXJyYXk+JiB2YWx1ZSkgY29uc3QKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSAwOwotICAgIGlmIChWOFVpbnQ4QXJyYXk6Okhh
c0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQorICAg
IGlmIChWOFVpbnQ4QXJyYXk6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCiAgICAg
ICAgIHZhbHVlID0gVjhVaW50OEFycmF5Ojp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
OjpDYXN0KHY4VmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM1MCw3ICszNTAsNyBA
QCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPE1lZGlhS2V5
RXJyb3I+JiB2YWx1ZSkgY29uc3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUg
PSAwOwotICAgIGlmIChWOE1lZGlhS2V5RXJyb3I6Okhhc0luc3RhbmNlKHY4VmFsdWUsIG1faXNv
bGF0ZSwgd29ybGRUeXBlKG1faXNvbGF0ZSkpKQorICAgIGlmIChWOE1lZGlhS2V5RXJyb3I6Okhh
c0luc3RhbmNlKHY4VmFsdWUsIG1faXNvbGF0ZSkpCiAgICAgICAgIHZhbHVlID0gVjhNZWRpYUtl
eUVycm9yOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTM4Niw3ICszODYsNyBAQCBib29sIERpY3Rpb25hcnk6
OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVmUHRyPFNwZWVjaFJlY29nbml0aW9uRXJyb3I+JiB2
YWx1ZSkgYwogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYg
KFY4U3BlZWNoUmVjb2duaXRpb25FcnJvcjo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRl
LCB3b3JsZFR5cGUobV9pc29sYXRlKSkpCisgICAgaWYgKFY4U3BlZWNoUmVjb2duaXRpb25FcnJv
cjo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKICAgICAgICAgdmFsdWUgPSBWOFNw
ZWVjaFJlY29nbml0aW9uRXJyb3I6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QodjhWYWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtMzk4LDcgKzM5OCw3IEBAIGJv
b2wgRGljdGlvbmFyeTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8U3BlZWNoUmVjb2du
aXRpb25SZXN1bHQ+JiB2YWx1ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUg
PSAwOwotICAgIGlmIChWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0OjpIYXNJbnN0YW5jZSh2OFZh
bHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUpKSkKKyAgICBpZiAoVjhTcGVlY2hS
ZWNvZ25pdGlvblJlc3VsdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9pc29sYXRlKSkKICAgICAg
ICAgdmFsdWUgPSBWOFNwZWVjaFJlY29nbml0aW9uUmVzdWx0Ojp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTQx
MCw3ICs0MTAsNyBAQCBib29sIERpY3Rpb25hcnk6OmdldChjb25zdCBTdHJpbmcmIGtleSwgUmVm
UHRyPFNwZWVjaFJlY29nbml0aW9uUmVzdWx0TGlzdD4mIHZhbAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICB2YWx1ZSA9IDA7Ci0gICAgaWYgKFY4U3BlZWNoUmVjb2duaXRpb25SZXN1bHRM
aXN0OjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lzb2xhdGUp
KSkKKyAgICBpZiAoVjhTcGVlY2hSZWNvZ25pdGlvblJlc3VsdExpc3Q6Okhhc0luc3RhbmNlKHY4
VmFsdWUsIG1faXNvbGF0ZSkpCiAgICAgICAgIHZhbHVlID0gVjhTcGVlY2hSZWNvZ25pdGlvblJl
c3VsdExpc3Q6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodjhWYWx1ZSkp
OwogICAgIHJldHVybiB0cnVlOwogfQpAQCAtNDI1LDcgKzQyNSw3IEBAIGJvb2wgRGljdGlvbmFy
eTo6Z2V0KGNvbnN0IFN0cmluZyYga2V5LCBSZWZQdHI8TWVkaWFTdHJlYW0+JiB2YWx1ZSkgY29u
c3QKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgdmFsdWUgPSAwOwotICAgIGlmIChWOE1l
ZGlhU3RyZWFtOjpIYXNJbnN0YW5jZSh2OFZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZShtX2lz
b2xhdGUpKSkKKyAgICBpZiAoVjhNZWRpYVN0cmVhbTo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgbV9p
c29sYXRlKSkKICAgICAgICAgdmFsdWUgPSBWOE1lZGlhU3RyZWFtOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHY4VmFsdWUpKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdFByb2ZpbGVyLmNwcAppbmRleCA1NDIy
N2Y1NDI0ZjZiNjBjY2U4MjVjZDMwMDc4NWJmYjhkODExNzNiLi40OTkxMGVhY2NmYTc3MTEyNjg5
MWMwYTdjMDA1MDg4MDE1NTMxMDVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHRQcm9maWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
U2NyaXB0UHJvZmlsZXIuY3BwCkBAIC0yMzUsNyArMjM1LDcgQEAgdm9pZCBTY3JpcHRQcm9maWxl
cjo6dmlzaXROb2RlV3JhcHBlcnMoV3JhcHBlZE5vZGVWaXNpdG9yKiB2aXNpdG9yKQogICAgICAg
ICAgICAgaWYgKGNsYXNzSWQgIT0gdjhET01Ob2RlQ2xhc3NJZCkKICAgICAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKLSAgICAgICAgICAg
IEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUsIHdvcmxkVHlwZSht
X2lzb2xhdGUpKSk7CisgICAgICAgICAgICBBU1NFUlQoVjhOb2RlOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgbV9pc29sYXRlKSk7CiAgICAgICAgICAgICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwog
ICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD4gd3JhcHBlciA9IHY4OjpQZXJz
aXN0ZW50PHY4OjpPYmplY3Q+OjpDYXN0KHZhbHVlKTsKICAgICAgICAgICAgIG1fdmlzaXRvci0+
dmlzaXROb2RlKFY4Tm9kZTo6dG9OYXRpdmUod3JhcHBlcikpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKaW5kZXggYThhMDRl
YjRjZWNiOTkwMWZkYmZmYTJlNGRmYWQwYzMxZjEzYTEwMC4uYTlmMmZmYTk3NmQ4ODc1MDE0ODll
MDAyN2QyZDQwN2JjMTAyZTgzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCkBAIC0xMjUxLDcgKzEyNTEsNiBAQCBTZXJp
YWxpemVyOjpTdGF0ZUJhc2UqIFNlcmlhbGl6ZXI6OmRvU2VyaWFsaXplKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiB2YWx1ZSwgU3RhdAogICAgIG1fd3JpdGVyLndyaXRlUmVmZXJlbmNlQ291bnQobV9u
ZXh0T2JqZWN0UmVmZXJlbmNlKTsKICAgICB1aW50MzJfdCBvYmplY3RSZWZlcmVuY2U7CiAgICAg
dWludDMyX3QgYXJyYXlCdWZmZXJJbmRleDsKLSAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRX
b3JsZFR5cGUgPSB3b3JsZFR5cGUobV9pc29sYXRlKTsKICAgICBpZiAoKHZhbHVlLT5Jc09iamVj
dCgpIHx8IHZhbHVlLT5Jc0RhdGUoKSB8fCB2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgJiYg
bV9vYmplY3RQb29sLnRyeUdldCh2YWx1ZS5Bczx2ODo6T2JqZWN0PigpLCAmb2JqZWN0UmVmZXJl
bmNlKSkgewogICAgICAgICAvLyBOb3RlIHRoYXQgSXNPYmplY3QoKSBhbHNvIGRldGVjdHMgd3Jh
cHBlcnMgKGVnLCBpdCB3aWxsIGNhdGNoIHRoZSB0aGluZ3MKQEAgLTEyNzQsMTcgKzEyNzMsMTcg
QEAgU2VyaWFsaXplcjo6U3RhdGVCYXNlKiBTZXJpYWxpemVyOjpkb1NlcmlhbGl6ZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIFN0YXQKICAgICAgICAgbV93cml0ZXIud3JpdGVVaW50MzIo
dmFsdWUtPlVpbnQzMlZhbHVlKCkpOwogICAgIGVsc2UgaWYgKHZhbHVlLT5Jc051bWJlcigpKQog
ICAgICAgICBtX3dyaXRlci53cml0ZU51bWJlcih2YWx1ZS5Bczx2ODo6TnVtYmVyPigpLT5WYWx1
ZSgpKTsKLSAgICBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodmFsdWUs
IG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCisgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZl
clZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQogICAgICAgICByZXR1cm4gd3Jp
dGVBbmRHcmV5QXJyYXlCdWZmZXJWaWV3KHZhbHVlLkFzPHY4OjpPYmplY3Q+KCksIG5leHQpOwog
ICAgIGVsc2UgaWYgKHZhbHVlLT5Jc1N0cmluZygpKQogICAgICAgICB3cml0ZVN0cmluZyh2YWx1
ZSk7Ci0gICAgZWxzZSBpZiAoVjhNZXNzYWdlUG9ydDo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNv
bGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpIHsKKyAgICBlbHNlIGlmIChWOE1lc3NhZ2VQb3J0OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkgewogICAgICAgICB1aW50MzJfdCBtZXNzYWdl
UG9ydEluZGV4OwogICAgICAgICBpZiAobV90cmFuc2ZlcnJlZE1lc3NhZ2VQb3J0cy50cnlHZXQo
dmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJm1lc3NhZ2VQb3J0SW5kZXgpKQogICAgICAgICAgICAg
ICAgIG1fd3JpdGVyLndyaXRlVHJhbnNmZXJyZWRNZXNzYWdlUG9ydChtZXNzYWdlUG9ydEluZGV4
KTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlRXJyb3Io
RGF0YUNsb25lRXJyb3IsIG5leHQpOwotICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFz
SW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkgJiYgbV90cmFuc2Zl
cnJlZEFycmF5QnVmZmVycy50cnlHZXQodmFsdWUuQXM8djg6Ok9iamVjdD4oKSwgJmFycmF5QnVm
ZmVySW5kZXgpKQorICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFs
dWUsIG1faXNvbGF0ZSkgJiYgbV90cmFuc2ZlcnJlZEFycmF5QnVmZmVycy50cnlHZXQodmFsdWUu
QXM8djg6Ok9iamVjdD4oKSwgJmFycmF5QnVmZmVySW5kZXgpKQogICAgICAgICByZXR1cm4gd3Jp
dGVUcmFuc2ZlcnJlZEFycmF5QnVmZmVyKHZhbHVlLCBhcnJheUJ1ZmZlckluZGV4LCBuZXh0KTsK
ICAgICBlbHNlIHsKICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBqc09iamVjdCA9IHZh
bHVlLkFzPHY4OjpPYmplY3Q+KCk7CkBAIC0xMzAxLDIxICsxMzAwLDIxIEBAIFNlcmlhbGl6ZXI6
OlN0YXRlQmFzZSogU2VyaWFsaXplcjo6ZG9TZXJpYWxpemUodjg6OkhhbmRsZTx2ODo6VmFsdWU+
IHZhbHVlLCBTdGF0CiAgICAgICAgICAgICB3cml0ZUJvb2xlYW5PYmplY3QodmFsdWUpOwogICAg
ICAgICBlbHNlIGlmICh2YWx1ZS0+SXNBcnJheSgpKSB7CiAgICAgICAgICAgICByZXR1cm4gc3Rh
cnRBcnJheVN0YXRlKHZhbHVlLkFzPHY4OjpBcnJheT4oKSwgbmV4dCk7Ci0gICAgICAgIH0gZWxz
ZSBpZiAoVjhGaWxlOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRU
eXBlKSkKKyAgICAgICAgfSBlbHNlIGlmIChWOEZpbGU6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lz
b2xhdGUpKQogICAgICAgICAgICAgd3JpdGVGaWxlKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAo
VjhCbG9iOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSkK
KyAgICAgICAgZWxzZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlKSkK
ICAgICAgICAgICAgIHdyaXRlQmxvYih2YWx1ZSk7CiAjaWYgRU5BQkxFKEZJTEVfU1lTVEVNKQot
ICAgICAgICBlbHNlIGlmIChWOERPTUZpbGVTeXN0ZW06Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lz
b2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKQorICAgICAgICBlbHNlIGlmIChWOERPTUZpbGVTeXN0
ZW06Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQogICAgICAgICAgICAgcmV0dXJuIHdy
aXRlRE9NRmlsZVN5c3RlbSh2YWx1ZSwgbmV4dCk7CiAjZW5kaWYKLSAgICAgICAgZWxzZSBpZiAo
VjhGaWxlTGlzdDo6SGFzSW5zdGFuY2UodmFsdWUsIG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlw
ZSkpCisgICAgICAgIGVsc2UgaWYgKFY4RmlsZUxpc3Q6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lz
b2xhdGUpKQogICAgICAgICAgICAgd3JpdGVGaWxlTGlzdCh2YWx1ZSk7Ci0gICAgICAgIGVsc2Ug
aWYgKFY4SW1hZ2VEYXRhOjpIYXNJbnN0YW5jZSh2YWx1ZSwgbV9pc29sYXRlLCBjdXJyZW50V29y
bGRUeXBlKSkKKyAgICAgICAgZWxzZSBpZiAoVjhJbWFnZURhdGE6Okhhc0luc3RhbmNlKHZhbHVl
LCBtX2lzb2xhdGUpKQogICAgICAgICAgICAgd3JpdGVJbWFnZURhdGEodmFsdWUpOwogICAgICAg
ICBlbHNlIGlmICh2YWx1ZS0+SXNSZWdFeHAoKSkKICAgICAgICAgICAgIHdyaXRlUmVnRXhwKHZh
bHVlKTsKLSAgICAgICAgZWxzZSBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUs
IG1faXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpCisgICAgICAgIGVsc2UgaWYgKFY4QXJyYXlC
dWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBtX2lzb2xhdGUpKQogICAgICAgICAgICAgcmV0dXJu
IHdyaXRlQXJyYXlCdWZmZXIodmFsdWUsIG5leHQpOwogICAgICAgICBlbHNlIGlmICh2YWx1ZS0+
SXNPYmplY3QoKSkgewogICAgICAgICAgICAgaWYgKGlzSG9zdE9iamVjdChqc09iamVjdCkgfHwg
anNPYmplY3QtPklzQ2FsbGFibGUoKSB8fCB2YWx1ZS0+SXNOYXRpdmVFcnJvcigpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhBZGFwdG9yRnVuY3Rpb24uY3BwCmluZGV4IGM5
N2I1OTNiODQ2MzNkZDNmMzQxMTBiZjEyYjY2NzA0ZmE4NWEyYTQuLjZiYzgwM2E0MTdkZWEwOGZj
ZGY4ODM1ZDViYmUyNTlmYjMzM2UxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4QWRhcHRvckZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOEFkYXB0b3JGdW5jdGlvbi5jcHAKQEAgLTQ0LDEyICs0NCwxMiBAQCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhBZGFwdG9yRnVuY3Rpb246OmdldFRlbXBsYXRl
KHY4OjpJc29sYXRlKgogewogICAgIEFTU0VSVChpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklz
b2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxh
dGVNYXAod29ybGRUeXBlKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKHdvcmxkVHlwZSkuZW5kKCkpCisgICAgVjhQZXJJc29sYXRlRGF0YTo6VGVt
cGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgm
aW5mbyk7CisgICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQog
ICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKICAgICAvLyBUaGUgbGlmZXRpbWUgaXMgb2Yg
bmV3VGVtcGxhdGUgaXMgZGVsZWdhdGVkIHRvIHRoZSBUZW1wbGF0ZU1hcCB0aHVzIHRoaXMgd29u
J3QgYmUgbGVha2VkLgogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBu
ZXdUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KGlz
b2xhdGUsIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoKSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxh
dGVNYXAod29ybGRUeXBlKS5hZGQoJmluZm8sIGNvbmZpZ3VyZVRlbXBsYXRlKG5ld1RlbXBsYXRl
KSk7CisgICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIGNvbmZpZ3VyZVRlbXBs
YXRlKG5ld1RlbXBsYXRlKSk7CiAgICAgcmV0dXJuIG5ld1RlbXBsYXRlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA3MzIyYzQyZDMxN2VkZWQxYTVm
YWQ1MzNjYjhmMzI5ZGY3YTFiMmE2Li5lYjhhYzRhMjE2ZWUzZWVjZGQ3NGZkMDU2MWM1NzZiNzQ0
MDgxMWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTE4
NSw3ICsxODUsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IHRvRE9NU3RyaW5nTGlzdCh2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYQogewogICAgIHY4OjpMb2NhbDx2
ODo6VmFsdWU+IHY4VmFsdWUodjg6OkxvY2FsPHY4OjpWYWx1ZT46Ok5ldyh2YWx1ZSkpOwogCi0g
ICAgaWYgKFY4RE9NU3RyaW5nTGlzdDo6SGFzSW5zdGFuY2UodjhWYWx1ZSwgaXNvbGF0ZSwgd29y
bGRUeXBlKGlzb2xhdGUpKSkgeworICAgIGlmIChWOERPTVN0cmluZ0xpc3Q6Okhhc0luc3RhbmNl
KHY4VmFsdWUsIGlzb2xhdGUpKSB7CiAgICAgICAgIFJlZlB0cjxET01TdHJpbmdMaXN0PiByZXQg
PSBWOERPTVN0cmluZ0xpc3Q6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
djhWYWx1ZSkpOwogICAgICAgICByZXR1cm4gcmV0LnJlbGVhc2UoKTsKICAgICB9CkBAIC0yMDUs
NyArMjA1LDcgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmluZ0xpc3Qodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGEKIFBhc3NSZWZQdHI8WFBhdGhOU1Jl
c29sdmVyPiB0b1hQYXRoTlNSZXNvbHZlcih2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogewogICAgIFJlZlB0cjxYUGF0aE5TUmVzb2x2ZXI+IHJlc29s
dmVyOwotICAgIGlmIChWOFhQYXRoTlNSZXNvbHZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xh
dGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCisgICAgaWYgKFY4WFBhdGhOU1Jlc29sdmVyOjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpCiAgICAgICAgIHJlc29sdmVyID0gVjhYUGF0aE5TUmVz
b2x2ZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QodmFsdWUpKTsKICAg
ICBlbHNlIGlmICh2YWx1ZS0+SXNPYmplY3QoKSkKICAgICAgICAgcmVzb2x2ZXIgPSBWOEN1c3Rv
bVhQYXRoTlNSZXNvbHZlcjo6Y3JlYXRlKHZhbHVlLT5Ub09iamVjdCgpLCBpc29sYXRlKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggYzQzNWZmY2MzYThhNzM5ZWUw
N2NhNTQ3NDM2NWI1ODg0ODNjZGUyOS4uYmMxMTI1ZTczYTA5YTYwNzY5MDAwNTYxMzFhMTM1YzJi
MDFhMzhiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTI3NSw5
ICsyNzUsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxsb25nIGxvbmc+KHZhbHVlLT5JbnRlZ2VyVmFsdWUoKSk7CiAgICAgfQogCi0gICAgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUodjg6Oklzb2xhdGUqKTsKLSAgICBXcmFwcGVyV29ybGRUeXBl
IHdvcmxkVHlwZUluTWFpblRocmVhZCh2ODo6SXNvbGF0ZSopOwotCiAgICAgdGVtcGxhdGU8Y2xh
c3MgVD4gc3RydWN0IE5hdGl2ZVZhbHVlVHJhaXRzOwogCiAgICAgdGVtcGxhdGU8PgpAQCAtMzI1
LDcgKzMyMiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgZm9yIChzaXplX3QgaSA9
IDA7IGkgPCBsZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IGVsZW1lbnQgPSBhcnJheS0+R2V0KGkpOwogCi0gICAgICAgICAgICBpZiAoVjhUOjpIYXNJbnN0
YW5jZShlbGVtZW50LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpKSB7CisgICAgICAgICAg
ICBpZiAoVjhUOjpIYXNJbnN0YW5jZShlbGVtZW50LCBpc29sYXRlKSkgewogICAgICAgICAgICAg
ICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0
Pjo6Q2FzdChlbGVtZW50KTsKICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKFY4VDo6dG9O
YXRpdmUob2JqZWN0KSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtNDcwLDYgKzQ2Nyw5IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFkKCk7CiAKKyAg
ICBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSh2ODo6SXNvbGF0ZSopOworICAgIFdyYXBwZXJX
b3JsZFR5cGUgd29ybGRUeXBlSW5NYWluVGhyZWFkKHY4OjpJc29sYXRlKik7CisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFY4QmluZGluZ19oCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAppbmRleCAyODQ1ZWU5MzZhNzI2YWQwMDVhYzY2
OTI2MjUzODJjNTE2YTA2Y2E1Li4wNThhMjdkZjQ0MWJkNWVkYTAzNmIzNmNkNjdiMjllOTNkY2Iz
OTFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbGxlY3Rpb24u
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5jcHAKQEAg
LTQ3LDcgKzQ3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvT3B0aW9uc0NvbGxlY3Rpb25T
ZXR0ZXIodWludDMyX3QgaW5kZXgsIHY4OjpIYW5kbGU8djg6OlYKICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKIAogICAgIC8vIENoZWNrIHRoYXQgdGhlIHZhbHVlIGlzIGFuIEhUTUxPcHRpb25F
bGVtZW50LiAgSWYgbm90LCB0aHJvdyBhIFRZUEVfTUlTTUFUQ0hfRVJSIERPTUV4Y2VwdGlvbi4K
LSAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRl
LCB3b3JsZFR5cGUoaXNvbGF0ZSkpKSB7CisgICAgaWYgKCFWOEhUTUxPcHRpb25FbGVtZW50OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSkpIHsKICAgICAgICAgc2V0RE9NRXhjZXB0aW9uKFRZ
UEVfTUlTTUFUQ0hfRVJSLCBpc29sYXRlKTsKICAgICAgICAgcmV0dXJuIHZhbHVlOwogICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4R0NDb250cm9sbGVyLmNwcAppbmRleCBk
NWJhMjEwMGE0MjNiMTEyMmI5ZDdiNTljNTY1NzU2YWVhODE1YmI5Li5hNGRkYzgzMDg2ODFmN2Zh
NjM2MTJiMmZmODA1Y2NjNTRiMTE5Y2YzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOEdDQ29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhHQ0NvbnRyb2xsZXIuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAgcHVibGljOgogICAgICAg
ICBBU1NFUlQodmFsdWUtPklzT2JqZWN0KCkpOwogICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
T2JqZWN0PiB3cmFwcGVyID0gdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46OkNhc3QodmFsdWUp
OwogICAgICAgICBBU1NFUlQoVjhET01XcmFwcGVyOjptYXliZURPTVdyYXBwZXIodmFsdWUpKTsK
LSAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBN
YWluV29ybGQpIHx8IFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29sYXRlLCBJc29s
YXRlZFdvcmxkKSk7CisgICAgICAgIEFTU0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIs
IG1faXNvbGF0ZSkpOwogICAgICAgICBOb2RlKiBub2RlID0gVjhOb2RlOjp0b05hdGl2ZSh3cmFw
cGVyKTsKICAgICAgICAgLy8gQSBtaW5vciBET00gR0MgY2FuIGhhbmRsZSBvbmx5IG5vZGUgd3Jh
cHBlcnMgaW4gdGhlIG1haW4gd29ybGQuCiAgICAgICAgIC8vIE5vdGUgdGhhdCBub2RlLT53cmFw
cGVyKCkuSXNFbXB0eSgpIHJldHVybnMgdHJ1ZSBmb3Igbm9kZXMgdGhhdApAQCAtMzc2LDcgKzM3
Niw3IEBAIHB1YmxpYzoKIAogICAgICAgICBpZiAoY2xhc3NJZCA9PSB2OERPTU5vZGVDbGFzc0lk
KSB7CiAgICAgICAgICAgICBVTlVTRURfUEFSQU0obV9pc29sYXRlKTsKLSAgICAgICAgICAgIEFT
U0VSVChWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgTWFpbldvcmxkKSB8
fCBWOE5vZGU6Okhhc0luc3RhbmNlKHdyYXBwZXIsIG1faXNvbGF0ZSwgSXNvbGF0ZWRXb3JsZCkp
OworICAgICAgICAgICAgQVNTRVJUKFY4Tm9kZTo6SGFzSW5zdGFuY2Uod3JhcHBlciwgbV9pc29s
YXRlKSk7CiAgICAgICAgICAgICBBU1NFUlQoIXdyYXBwZXIuSXNJbmRlcGVuZGVudChtX2lzb2xh
dGUpKTsKIAogICAgICAgICAgICAgTm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PE5vZGUqPihvYmpl
Y3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUE9iamVjdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QT2JqZWN0LmNwcAppbmRleCAwYWY1
ZWI0NGQyNDdmMTE3YzZiZTU0NDgxNjE0NmUzMTI2M2VkYzY4Li4yYmZiYmQ4MWVkYTRmZjk1OWNh
YzY1NGIwZGU4NmNkNDVlMzEyNmQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOE5QT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5Q
T2JqZWN0LmNwcApAQCAtNjksMTUgKzY5LDE0IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gbnBPYmplY3RJbnZva2VJbXBsKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MsIEludm9rCiB7
CiAgICAgTlBPYmplY3QqIG5wT2JqZWN0OwogCi0gICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50
V29ybGRUeXBlID0gd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAvLyBUaGVzZSB0
aHJlZSB0eXBlcyBhcmUgc3VidHlwZXMgb2YgSFRNTFBsdWdJbkVsZW1lbnQuCi0gICAgaWYgKFY4
SFRNTEFwcGxldEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSB8fCBWOEhUTUxFbWJlZEVsZW1lbnQ6Okhhc0luc3Rh
bmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKQot
ICAgICAgICB8fCBWOEhUTUxPYmplY3RFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigp
LCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpIHsKKyAgICBpZiAoVjhIVE1M
QXBwbGV0RWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRl
KCkpIHx8IFY4SFRNTEVtYmVkRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJn
cy5HZXRJc29sYXRlKCkpCisgICAgICAgIHx8IFY4SFRNTE9iamVjdEVsZW1lbnQ6Okhhc0luc3Rh
bmNlKGFyZ3MuSG9sZGVyKCksIGFyZ3MuR2V0SXNvbGF0ZSgpKSkgewogICAgICAgICAvLyBUaGUg
aG9sZGVyIG9iamVjdCBpcyBhIHN1YnR5cGUgb2YgSFRNTFBsdWdJbkVsZW1lbnQuCiAgICAgICAg
IEhUTUxQbHVnSW5FbGVtZW50KiBlbGVtZW50OwotICAgICAgICBpZiAoVjhIVE1MQXBwbGV0RWxl
bWVudDo6SGFzSW5zdGFuY2UoYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJl
bnRXb3JsZFR5cGUpKQorICAgICAgICBpZiAoVjhIVE1MQXBwbGV0RWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJncy5Ib2xkZXIoKSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICAgICAgZWxlbWVu
dCA9IFY4SFRNTEFwcGxldEVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgICAg
ICBlbHNlIGlmIChWOEhUTUxFbWJlZEVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3MuSG9sZGVyKCks
IGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKKyAgICAgICAgZWxzZSBpZiAo
VjhIVE1MRW1iZWRFbGVtZW50OjpIYXNJbnN0YW5jZShhcmdzLkhvbGRlcigpLCBhcmdzLkdldElz
b2xhdGUoKSkpCiAgICAgICAgICAgICBlbGVtZW50ID0gVjhIVE1MRW1iZWRFbGVtZW50Ojp0b05h
dGl2ZShhcmdzLkhvbGRlcigpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZWxlbWVudCA9
IFY4SFRNTE9iamVjdEVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAppbmRleCAyYmY1NGM0
ODdlMWIxNmM1MmFjZTNkYmY2NzUxYjFjOWFkZGJmOGY2Li5lMWQxNGYzNDc1OTU1ZjkxMjliZDE0
MTkyNmM2ODFiMzczMTEzZjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOFBlcklzb2xhdGVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlcklzb2xhdGVEYXRhLmNwcApAQCAtMTA0LDEwICsxMDQsOCBAQCB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjp0b1N0cmluZ1RlbXBsYXRlKCkKIHZv
aWQgVjhQZXJJc29sYXRlRGF0YTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5mbyog
bWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyhtZW1v
cnlPYmplY3RJbmZvLCB0aGlzLCBXZWJDb3JlTWVtb3J5VHlwZXM6OkJpbmRpbmcpOwotICAgIGlu
Zm8uYWRkTWVtYmVyKG1fcmF3VGVtcGxhdGVzRm9yTWFpbldvcmxkLCAicmF3VGVtcGxhdGVzRm9y
TWFpbldvcmxkIik7Ci0gICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXNGb3JOb25NYWlu
V29ybGQsICJyYXdUZW1wbGF0ZXNGb3JOb25NYWluV29ybGQiKTsKLSAgICBpbmZvLmFkZE1lbWJl
cihtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZCwgInRlbXBsYXRlc0Zvck1haW5Xb3JsZCIpOwotICAg
IGluZm8uYWRkTWVtYmVyKG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkLCAidGVtcGxhdGVzRm9y
Tm9uTWFpbldvcmxkIik7CisgICAgaW5mby5hZGRNZW1iZXIobV9yYXdUZW1wbGF0ZXMsICJyYXdU
ZW1wbGF0ZXMiKTsKKyAgICBpbmZvLmFkZE1lbWJlcihtX3RlbXBsYXRlcywgInRlbXBsYXRlcyIp
OwogICAgIGluZm8uYWRkTWVtYmVyKG1fc3RyaW5nQ2FjaGUsICJzdHJpbmdDYWNoZSIpOwogICAg
IGluZm8uYWRkTWVtYmVyKG1faW50ZWdlckNhY2hlLCAiaW50ZWdlckNhY2hlIik7CiAgICAgaW5m
by5hZGRNZW1iZXIobV9kb21EYXRhTGlzdCwgImRvbURhdGFMaXN0Iik7CkBAIC0xMjQsNDUgKzEy
MiwzNyBAQCB2b2lkIFY4UGVySXNvbGF0ZURhdGE6OnJlcG9ydE1lbW9yeVVzYWdlKE1lbW9yeU9i
amVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbgogICAgIGluZm8uaWdub3JlTWVtYmVyKG1f
YXV4aWxpYXJ5Q29udGV4dCk7CiB9CiAKLWJvb2wgVjhQZXJJc29sYXRlRGF0YTo6aGFzUHJpdmF0
ZVRlbXBsYXRlKFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSwgdm9pZCogcHJpdmF0
ZVBvaW50ZXIpCitib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc1ByaXZhdGVUZW1wbGF0ZShXcmFw
cGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlcikKIHsKLSAgICBpZiAoY3VycmVudFdv
cmxkVHlwZSA9PSBNYWluV29ybGQpCi0gICAgICAgIHJldHVybiBtX3RlbXBsYXRlc0Zvck1haW5X
b3JsZC5maW5kKHByaXZhdGVQb2ludGVyKSAhPSBtX3RlbXBsYXRlc0Zvck1haW5Xb3JsZC5lbmQo
KTsKLSAgICByZXR1cm4gbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQuZmluZChwcml2YXRlUG9p
bnRlcikgIT0gbV90ZW1wbGF0ZXNGb3JOb25NYWluV29ybGQuZW5kKCk7CisgICAgcmV0dXJuIG1f
dGVtcGxhdGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpICE9IG1fdGVtcGxhdGVzLmVuZCgpOwogfQog
Ci12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhQZXJJc29sYXRlRGF0YTo6
cHJpdmF0ZVRlbXBsYXRlKFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSwgdm9pZCog
cHJpdmF0ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwg
aW50IGxlbmd0aCkKK3Y4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklz
b2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3JhcHBlcldvcmxkVHlwZSwgdm9pZCogcHJpdmF0
ZVBvaW50ZXIsIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2ssIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBkYXRhLCB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwgaW50IGxl
bmd0aCkKIHsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0
ZVRlbXBsYXRlOwotICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMgPSB0ZW1wbGF0ZU1hcChjdXJy
ZW50V29ybGRUeXBlKTsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxh
dGVzLmZpbmQocHJpdmF0ZVBvaW50ZXIpOwotICAgIGlmIChyZXN1bHQgIT0gdGVtcGxhdGVzLmVu
ZCgpKQorICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQg
PSBtX3RlbXBsYXRlcy5maW5kKHByaXZhdGVQb2ludGVyKTsKKyAgICBpZiAocmVzdWx0ICE9IG1f
dGVtcGxhdGVzLmVuZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKICAgICB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbmV3UHJpdmF0ZVRlbXBsYXRlID0gdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcobV9pc29sYXRlLCB2ODo6RnVu
Y3Rpb25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrLCBkYXRhLCBzaWduYXR1cmUsIGxlbmd0aCkpOwot
ICAgIHRlbXBsYXRlcy5hZGQocHJpdmF0ZVBvaW50ZXIsIG5ld1ByaXZhdGVUZW1wbGF0ZSk7Cisg
ICAgbV90ZW1wbGF0ZXMuYWRkKHByaXZhdGVQb2ludGVyLCBuZXdQcml2YXRlVGVtcGxhdGUpOwog
ICAgIHJldHVybiBuZXdQcml2YXRlVGVtcGxhdGU7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0ZShXcmFwcGVyVHlw
ZUluZm8qIGluZm8sIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSkKK3Y4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpyYXdUZW1wbGF0
ZShXcmFwcGVyVHlwZUluZm8qIGluZm8pCiB7Ci0gICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlcyA9
IHJhd1RlbXBsYXRlTWFwKGN1cnJlbnRXb3JsZFR5cGUpOwotICAgIFRlbXBsYXRlTWFwOjppdGVy
YXRvciByZXN1bHQgPSB0ZW1wbGF0ZXMuZmluZChpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IHRl
bXBsYXRlcy5lbmQoKSkKKyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gbV9yYXdU
ZW1wbGF0ZXMuZmluZChpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IG1fcmF3VGVtcGxhdGVzLmVu
ZCgpKQogICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKIAogICAgIHY4OjpIYW5kbGVTY29w
ZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
dGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShtX2lzb2xhdGUpOwotICAgIHRlbXBsYXRlcy5hZGQo
aW5mbywgdGVtcGwpOworICAgIG1fcmF3VGVtcGxhdGVzLmFkZChpbmZvLCB0ZW1wbCk7CiAgICAg
cmV0dXJuIHRlbXBsOwogfQogCi1ib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3RhbmNlKFdy
YXBwZXJUeXBlSW5mbyogaW5mbywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCBXcmFwcGVy
V29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUpCitib29sIFY4UGVySXNvbGF0ZURhdGE6Omhhc0lu
c3RhbmNlKFdyYXBwZXJUeXBlSW5mbyogaW5mbywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVl
KQogewotICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZXMgPSByYXdUZW1wbGF0ZU1hcChjdXJyZW50
V29ybGRUeXBlKTsKLSAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gdGVtcGxhdGVz
LmZpbmQoaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCA9PSB0ZW1wbGF0ZXMuZW5kKCkpCi0gICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICByZXR1cm4gcmVzdWx0LT52YWx1ZS0+SGFzSW5zdGFuY2UodmFs
dWUpOworICAgIHJldHVybiByYXdUZW1wbGF0ZShpbmZvKS0+SGFzSW5zdGFuY2UodmFsdWUpOwog
fQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCBkZmJmYTk3M2QxZGMwZmJhOWU5MjFmNjJkOGIzY2Mz
ZmViNDA5YmMyLi5lNzdkNzUyOWZkYjZjZDQwZTIzNDVlMGYyMjEyY2YxMGYzZjQ4OTlkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC02Nywx
OSArNjcsOCBAQCBwdWJsaWM6CiAKICAgICB0eXBlZGVmIEhhc2hNYXA8dm9pZCosIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiA+IFRlbXBsYXRlTWFwOwogCi0gICAgVGVtcGxh
dGVNYXAmIHJhd1RlbXBsYXRlTWFwKFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQotICAgIHsK
LSAgICAgICAgaWYgKHdvcmxkVHlwZSA9PSBNYWluV29ybGQpCi0gICAgICAgICAgICByZXR1cm4g
bV9yYXdUZW1wbGF0ZXNGb3JNYWluV29ybGQ7Ci0gICAgICAgIHJldHVybiBtX3Jhd1RlbXBsYXRl
c0Zvck5vbk1haW5Xb3JsZDsKLSAgICB9Ci0KLSAgICBUZW1wbGF0ZU1hcCYgdGVtcGxhdGVNYXAo
V3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCi0gICAgewotICAgICAgICBpZiAod29ybGRUeXBl
ID09IE1haW5Xb3JsZCkKLSAgICAgICAgICAgIHJldHVybiBtX3RlbXBsYXRlc0Zvck1haW5Xb3Js
ZDsKLSAgICAgICAgcmV0dXJuIG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOwotICAgIH0KKyAg
ICBUZW1wbGF0ZU1hcCYgcmF3VGVtcGxhdGVNYXAoKSB7IHJldHVybiBtX3Jhd1RlbXBsYXRlczsg
fQorICAgIFRlbXBsYXRlTWFwJiB0ZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fdGVtcGxhdGVzOyB9
CiAKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0b1N0cmluZ1RlbXBsYXRl
KCk7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5RXZlbnRM
aXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQpAQCAtMTQyLDkgKzEzMSw5IEBAIHB1YmxpYzoKICAg
ICBib29sIGhhc1ByaXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRl
UG9pbnRlcik7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZh
dGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6Oklu
dm9jYXRpb25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4sIGludCBsZW5ndGggPSAwKTsKIAotICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiByYXdUZW1wbGF0ZShXcmFwcGVyVHlwZUluZm8qLCBXcmFwcGVy
V29ybGRUeXBlKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcmF3
VGVtcGxhdGUoV3JhcHBlclR5cGVJbmZvKik7CiAKLSAgICBib29sIGhhc0luc3RhbmNlKFdyYXBw
ZXJUeXBlSW5mbyosIHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgV3JhcHBlcldvcmxkVHlwZSk7Cisg
ICAgYm9vbCBoYXNJbnN0YW5jZShXcmFwcGVyVHlwZUluZm8qLCB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4pOwogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFY4UGVySXNvbGF0ZURhdGEodjg6Oklzb2xh
dGUqKTsKQEAgLTE1MiwxMCArMTQxLDggQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yT2ZUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRzJik7
CiAKICAgICB2ODo6SXNvbGF0ZSogbV9pc29sYXRlOwotICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVt
cGxhdGVzRm9yTWFpbldvcmxkOwotICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzRm9yTm9u
TWFpbldvcmxkOwotICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzRm9yTWFpbldvcmxkOwotICAg
IFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzRm9yTm9uTWFpbldvcmxkOworICAgIFRlbXBsYXRlTWFw
IG1fcmF3VGVtcGxhdGVzOworICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxhdGVzOwogICAgIFNjb3Bl
ZFBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fdG9TdHJpbmdUZW1wbGF0ZTsKICAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gbV9sYXp5RXZlbnRMaXN0ZW5l
clRvU3RyaW5nVGVtcGxhdGU7CiAgICAgT3duUHRyPFN0cmluZ0NhY2hlPiBtX3N0cmluZ0NhY2hl
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmluZGV4IDhkOWM5
MDE1NTNhZDZjMzNhZGU5MTU3ODllNTExMWVjMGM1OTFhOWYuLjNmYjg4MDkxNzUxZTA5OGUzNzYx
OGI0MGIwYzNmOWI3NmE5MmJjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4VXRpbGl0aWVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgYm9vbCBleHRyYWN0VHJhbnNmZXJhYmxlcyh2
ODo6TG9jYWw8djg6OlZhbHVlPiB2YWx1ZSwgTWVzc2FnZVBvcnRBcnJheSYgcG9ydHMsIEEKICAg
ICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICAvLyBWYWxpZGF0aW9u
IG9mIE9iamVjdHMgaW1wbGVtZW50aW5nIGFuIGludGVyZmFjZSwgcGVyIFdlYklETCBzcGVjIDQu
MS4xNS4KLSAgICAgICAgaWYgKFY4TWVzc2FnZVBvcnQ6Okhhc0luc3RhbmNlKHRyYW5zZmVycmFi
bGUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKKyAgICAgICAgaWYgKFY4TWVzc2Fn
ZVBvcnQ6Okhhc0luc3RhbmNlKHRyYW5zZmVycmFibGUsIGlzb2xhdGUpKSB7CiAgICAgICAgICAg
ICBSZWZQdHI8TWVzc2FnZVBvcnQ+IHBvcnQgPSBWOE1lc3NhZ2VQb3J0Ojp0b05hdGl2ZSh2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KHRyYW5zZmVycmFibGUpKTsKICAgICAgICAgICAgIC8v
IENoZWNrIGZvciBkdXBsaWNhdGUgTWVzc2FnZVBvcnRzLgogICAgICAgICAgICAgaWYgKHBvcnRz
LmNvbnRhaW5zKHBvcnQpKSB7CkBAIC05OCw3ICs5OCw3IEBAIGJvb2wgZXh0cmFjdFRyYW5zZmVy
YWJsZXModjg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUsIE1lc3NhZ2VQb3J0QXJyYXkmIHBvcnRz
LCBBCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgcG9ydHMuYXBwZW5kKHBvcnQucmVsZWFzZSgpKTsKLSAgICAgICAgfSBlbHNlIGlmIChW
OEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh0cmFuc2ZlcnJhYmxlLCBpc29sYXRlLCB3b3JsZFR5
cGUoaXNvbGF0ZSkpKQorICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3Rh
bmNlKHRyYW5zZmVycmFibGUsIGlzb2xhdGUpKQogICAgICAgICAgICAgYXJyYXlCdWZmZXJzLmFw
cGVuZChWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0
KHRyYW5zZmVycmFibGUpKSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdGhyb3dUeXBl
RXJyb3IoMCwgaXNvbGF0ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhBcnJheUJ1ZmZlclZpZXdDdXN0b20uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCmluZGV4IGFjMGFiNTcwODhm
YWY4MmY4OTc2ZDFkZDk0Y2MxOTZjMGM2Y2E5YjQuLmVhYjY4NGMyNWY5OTc3MDBiOWIwNzRmMmFl
YmQ0OWNiZTllMmY0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L2N1c3RvbS9WOEFycmF5QnVmZmVyVmlld0N1c3RvbS5oCkBAIC0xMzgsMTIgKzEzOCwx
MiBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0V2ViR0xBcnJheShjb25zdCB2ODo6
QXJndW1lbnRzJiBhcmdzLCBXcmFwcGVyVHlwZQogICAgIH0KIAogICAgIC8vIFNlZSB3aGV0aGVy
IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhIEFycmF5QnVmZmVyLgotICAgIGlmIChWOEFycmF5QnVm
ZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFy
Z3MuR2V0SXNvbGF0ZSgpKSkpCisgICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGFy
Z3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKICAgICAgIHJldHVybiBjb25zdHJ1Y3RXZWJHTEFy
cmF5V2l0aEFycmF5QnVmZmVyQXJndW1lbnQ8QXJyYXlDbGFzcywgRWxlbWVudFR5cGU+KGFyZ3Ms
IHR5cGUsIGFycmF5VHlwZSwgdHJ1ZSk7CiAKICAgICAvLyBTZWUgd2hldGhlciB0aGUgZmlyc3Qg
YXJndW1lbnQgaXMgdGhlIHNhbWUgdHlwZSBhcyBpbXBsLiBJbiB0aGF0IGNhc2UsCiAgICAgLy8g
d2UgY2FuIHNpbXBseSBtZW1jcHkgZGF0YSBmcm9tIHNvdXJjZSB0byBpbXBsLgotICAgIGlmIChK
YXZhU2NyaXB0V3JhcHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJ
c29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CisgICAgaWYgKEphdmFT
Y3JpcHRXcmFwcGVyQXJyYXlUeXBlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSkpIHsKICAgICAgICAgQXJyYXlDbGFzcyogc291cmNlID0gSmF2YVNjcmlwdFdyYXBwZXJB
cnJheVR5cGU6OnRvTmF0aXZlKGFyZ3NbMF0tPlRvT2JqZWN0KCkpOwogICAgICAgICB1aW50MzJf
dCBsZW5ndGggPSBzb3VyY2UtPmxlbmd0aCgpOwogCkBAIC0yMzYsNyArMjM2LDcgQEAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHNldFdlYkdMQXJyYXlIZWxwZXIoY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIAogICAgIENQbHVzUGx1c0FycmF5VHlwZSogaW1wbCA9IEphdmFTY3JpcHRXcmFwcGVy
QXJyYXlUeXBlOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAotICAgIGlmIChKYXZhU2NyaXB0
V3JhcHBlckFycmF5VHlwZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCks
IHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CisgICAgaWYgKEphdmFTY3JpcHRXcmFw
cGVyQXJyYXlUeXBlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpIHsK
ICAgICAgICAgLy8gdm9pZCBzZXQoaW4gV2ViR0w8VD5BcnJheSBhcnJheSwgW09wdGlvbmFsXSBp
biB1bnNpZ25lZCBsb25nIG9mZnNldCk7CiAgICAgICAgIENQbHVzUGx1c0FycmF5VHlwZSogc3Jj
ID0gSmF2YVNjcmlwdFdyYXBwZXJBcnJheVR5cGU6OnRvTmF0aXZlKGFyZ3NbMF0tPlRvT2JqZWN0
KCkpOwogICAgICAgICB1aW50MzJfdCBvZmZzZXQgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VOb2RlQ3VzdG9tLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEF1ZGlvQnVmZmVyU291cmNl
Tm9kZUN1c3RvbS5jcHAKaW5kZXggYWEzZTU4MzE4MDBlZjRlYTY0MjA4MGEzNzExYTE1Yzc3YmEw
NTUzYy4uNTQ1Y2YyYjFkZGI0MzIyNDg4ZDc2NDIyYWU3OWVmMDU1OWQyNDAxYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QXVkaW9CdWZmZXJTb3VyY2VO
b2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhB
dWRpb0J1ZmZlclNvdXJjZU5vZGVDdXN0b20uY3BwCkBAIC00Miw3ICs0Miw3IEBAIHZvaWQgVjhB
dWRpb0J1ZmZlclNvdXJjZU5vZGU6OmJ1ZmZlckF0dHJTZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4
OjpTdHJpbmc+IG5hbWUsCiAgICAgQXVkaW9CdWZmZXJTb3VyY2VOb2RlKiBpbXAgPSBWOEF1ZGlv
QnVmZmVyU291cmNlTm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKIAogICAgIEF1ZGlvQnVmZmVyKiBi
dWZmZXIgPSAwOwotICAgIGlmIChWOEF1ZGlvQnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1ZSwgaW5m
by5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShpbmZvLkdldElzb2xhdGUoKSkpKSB7CisgICAgaWYg
KFY4QXVkaW9CdWZmZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUoKSkpIHsK
ICAgICAgICAgYnVmZmVyID0gVjhBdWRpb0J1ZmZlcjo6dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0
KCkpOwogICAgICAgICBpZiAoYnVmZmVyICYmICFpbXAtPnNldEJ1ZmZlcihidWZmZXIpKSB7CiAg
ICAgICAgICAgICB0aHJvd1R5cGVFcnJvcigiQXVkaW9CdWZmZXIgdW5zdXBwb3J0ZWQgbnVtYmVy
IG9mIGNoYW5uZWxzIiwgaW5mby5HZXRJc29sYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4QmxvYkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhCbG9iQ3VzdG9tLmNwcAppbmRleCA3M2NiNmM2NzI2NGI4
NzJkMDcyY2E0ZTRhMTQwMjAzY2E0YjZjMjA3Li4xN2Y4YjIyZWRjNzY5YTdiMmFhNGRmZjQ5ODZh
NjJiMjU0YmQ3NmE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhCbG9iQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhCbG9iQ3VzdG9tLmNwcApAQCAtOTcsMTcgKzk3LDE3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEJsb2I6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAgICAgICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGl0ZW0gPSBibG9iUGFydHMtPkdldCh2ODo6
VWludDMyOjpOZXcoaSkpOwogICAgICAgICBBU1NFUlQoIWl0ZW0uSXNFbXB0eSgpKTsKICNpZiBF
TkFCTEUoQkxPQikKLSAgICAgICAgaWYgKFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNlKGl0ZW0s
IGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkgeworICAg
ICAgICBpZiAoVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UoaXRlbSwgYXJncy5HZXRJc29sYXRl
KCkpKSB7CiAgICAgICAgICAgICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVm
ZmVyOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGl0ZW0pKTsKICAgICAg
ICAgICAgIEFTU0VSVChhcnJheUJ1ZmZlcik7CiAgICAgICAgICAgICBibG9iQnVpbGRlci5hcHBl
bmQoY29udGV4dCwgYXJyYXlCdWZmZXIpOwotICAgICAgICB9IGVsc2UgaWYgKFY4QXJyYXlCdWZm
ZXJWaWV3OjpIYXNJbnN0YW5jZShpdGVtLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFy
Z3MuR2V0SXNvbGF0ZSgpKSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyVmll
dzo6SGFzSW5zdGFuY2UoaXRlbSwgYXJncy5HZXRJc29sYXRlKCkpKSB7CiAgICAgICAgICAgICBB
cnJheUJ1ZmZlclZpZXcqIGFycmF5QnVmZmVyVmlldyA9IFY4QXJyYXlCdWZmZXJWaWV3Ojp0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGl0ZW0pKTsKICAgICAgICAgICAgIEFT
U0VSVChhcnJheUJ1ZmZlclZpZXcpOwogICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGFy
cmF5QnVmZmVyVmlldyk7CiAgICAgICAgIH0gZWxzZQogI2VuZGlmCi0gICAgICAgIGlmIChWOEJs
b2I6Okhhc0luc3RhbmNlKGl0ZW0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkgeworICAgICAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShpdGVtLCBh
cmdzLkdldElzb2xhdGUoKSkpIHsKICAgICAgICAgICAgIEJsb2IqIGJsb2IgPSBWOEJsb2I6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoaXRlbSkpOwogICAgICAgICAgICAg
QVNTRVJUKGJsb2IpOwogICAgICAgICAgICAgYmxvYkJ1aWxkZXIuYXBwZW5kKGJsb2IpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q2FudmFzUmVuZGVy
aW5nQ29udGV4dDJEQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOENhbnZhc1JlbmRlcmluZ0NvbnRleHQyREN1c3RvbS5jcHAKaW5kZXggNTQ1MzgzNjgxYzIx
MThmYjIzNTdlNmMzZjY1NTgyMTY1NDk4MGQ1Ni4uNWNkYTEzYTYwMzhmY2UzM2NjNzRlMDYwN2Nj
MjFmOGFjYjIwNDI4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Q2FudmFzUmVuZGVyaW5nQ29udGV4dDJEQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDYW52YXNSZW5kZXJpbmdDb250ZXh0MkRDdXN0b20u
Y3BwCkBAIC02MSwxMCArNjEsMTAgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4
T2JqZWN0KENhbnZhc1N0eWxlKiBzdHlsZSwgdjg6OkhhbmRsZTx2ODo6T2JqZWMKIAogc3RhdGlj
IFBhc3NSZWZQdHI8Q2FudmFzU3R5bGU+IHRvQ2FudmFzU3R5bGUodjg6OkhhbmRsZTx2ODo6VmFs
dWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBpZiAoVjhDYW52YXNHcmFk
aWVudDo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpCisg
ICAgaWYgKFY4Q2FudmFzR3JhZGllbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSkKICAg
ICAgICAgcmV0dXJuIENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tR3JhZGllbnQoVjhDYW52YXNHcmFk
aWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdCh2YWx1ZSkpKTsKIAot
ICAgIGlmIChWOENhbnZhc1BhdHRlcm46Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlLCB3b3Js
ZFR5cGUoaXNvbGF0ZSkpKQorICAgIGlmIChWOENhbnZhc1BhdHRlcm46Okhhc0luc3RhbmNlKHZh
bHVlLCBpc29sYXRlKSkKICAgICAgICAgcmV0dXJuIENhbnZhc1N0eWxlOjpjcmVhdGVGcm9tUGF0
dGVybihWOENhbnZhc1BhdHRlcm46OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNh
c3QodmFsdWUpKSk7CiAKICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDbGlwYm9hcmRDdXN0b20uY3BwCmluZGV4IDYyNzFkOTU4
ODY2ZmMxODliZTI0NDMwMjFiYmZlOWEyY2RkYTY5MWUuLjgxNTBhYzEyNGQ5MzQyMTM1ODVhMjhk
ZjdhNTI4NmNlZGQ0ZDA3OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOENsaXBib2FyZEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4Q2xpcGJvYXJkQ3VzdG9tLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhDbGlwYm9hcmQ6OnNldERyYWdJbWFnZU1ldGhvZEN1c3RvbShj
b25zdCB2ODo6QXJndW1lbnRzJgogICAgIGludCB5ID0gdG9JbnQzMihhcmdzWzJdKTsKIAogICAg
IE5vZGUqIG5vZGUgPSAwOwotICAgIGlmIChWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAgICBpZiAo
VjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCiAgICAgICAg
IG5vZGUgPSBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpOwogCiAgICAgaWYgKCFub2RlIHx8ICFub2RlLT5pc0VsZW1lbnROb2RlKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Q3J5cHRvQ3VzdG9tLmNw
cAppbmRleCA2MmEyZTUwOWYyOTA4NmU4ZTM4YjQ0YjhlOWEzNGNhNzQ5ZGMwMTA0Li42YWMzZWZl
NjFjYTMyNzNiZDg4NmNiM2Y1Y2NhN2YwYjhlYzgxZDM1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhDcnlwdG9DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOENyeXB0b0N1c3RvbS5jcHAKQEAgLTQxLDcgKzQx
LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Q3J5cHRvOjpnZXRSYW5kb21WYWx1ZXNNZXRo
b2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYKICAgICAgICAgcmV0dXJuIHRocm93Tm90RW5v
dWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGJ1ZmZlciA9IGFyZ3NbMF07Ci0gICAgaWYgKCFWOEFycmF5QnVmZmVyVmlldzo6
SGFzSW5zdGFuY2UoYnVmZmVyLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0
SXNvbGF0ZSgpKSkpCisgICAgaWYgKCFWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UoYnVm
ZmVyLCBhcmdzLkdldElzb2xhdGUoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigi
Rmlyc3QgYXJndW1lbnQgaXMgbm90IGFuIEFycmF5QnVmZmVyVmlldyIsIGFyZ3MuR2V0SXNvbGF0
ZSgpKTsKIAogICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJheUJ1
ZmZlclZpZXc6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYnVmZmVyKSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01Gb3Jt
RGF0YUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhET01G
b3JtRGF0YUN1c3RvbS5jcHAKaW5kZXggOTllOTAyZDg5OGI0ZDQ5YWVlMDA1ZmJiMjQzY2ZmN2Yy
MWVmMTFhZi4uYjdkM2M1YmZiYWJmYTY0ZWZhOWMzMTY3NzllZDc3NDFlZDNiZDBjZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RE9NRm9ybURhdGFDdXN0
b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERPTUZvcm1E
YXRhQ3VzdG9tLmNwcApAQCAtNDIsNyArNDIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gVjhET01Gb3JtRGF0YTo6Y29uc3RydWN0b3JDdXN0b20oY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICBIVE1MRm9ybUVsZW1lbnQqIGZvcm0gPSAwOwot
ICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiBWOEhUTUxGb3JtRWxlbWVudDo6SGFzSW5zdGFu
Y2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUo
KSkpKQorICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiBWOEhUTUxGb3JtRWxlbWVudDo6SGFz
SW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICBmb3JtID0gVjhI
VE1MRm9ybUVsZW1lbnQ6OnRvTmF0aXZlKGFyZ3NbMF0tPlRvT2JqZWN0KCkpOwogICAgIFJlZlB0
cjxET01Gb3JtRGF0YT4gZG9tRm9ybURhdGEgPSBET01Gb3JtRGF0YTo6Y3JlYXRlKGZvcm0pOwog
CkBAIC02MSw3ICs2MSw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTUZvcm1EYXRhOjph
cHBlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJnCiAgICAgU3RyaW5nIG5h
bWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoTnVsbENoZWNrKGFyZ3NbMF0pOwogCiAgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGFyZyA9IGFyZ3NbMV07Ci0gICAgaWYgKFY4QmxvYjo6SGFzSW5zdGFu
Y2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkp
IHsKKyAgICBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
ewogICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6
Ok9iamVjdD46OkNhc3QoYXJnKTsKICAgICAgICAgQmxvYiogYmxvYiA9IFY4QmxvYjo6dG9OYXRp
dmUob2JqZWN0KTsKICAgICAgICAgQVNTRVJUKGJsb2IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RGF0YVZpZXdDdXN0b20uY3BwCmluZGV4IDRkMDkx
OTFmMDJjYjcxYmM1ODQzMzY3OTQ1MTRiZWQwNWUwMTRiMGYuLjM1NDNhZDc2Mjk4ZjQyN2FkMjVh
NjA0ODA5M2MxNjE4MjQ3Y2ZjMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOERhdGFWaWV3Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhEYXRhVmlld0N1c3RvbS5jcHAKQEAgLTQyLDcgKzQyLDcgQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4RGF0YVZpZXc6OmNvbnN0cnVjdG9yQ3VzdG9tKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCiAgICAgICAgIFY4RE9NV3JhcHBlcjo6YXNzb2NpYXRlT2JqZWN0
V2l0aFdyYXBwZXIoZGF0YVZpZXcucmVsZWFzZSgpLCAmaW5mbywgd3JhcHBlciwgYXJncy5HZXRJ
c29sYXRlKCksIFdyYXBwZXJDb25maWd1cmF0aW9uOjpEZXBlbmRlbnQpOwogICAgICAgICByZXR1
cm4gd3JhcHBlcjsKICAgICB9Ci0gICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFycmF5
QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCisgICAgaWYgKGFyZ3NbMF0tPklzTnVsbCgpIHx8ICFWOEFy
cmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgcmV0
dXJuIGNvbnN0cnVjdFdlYkdMQXJyYXlXaXRoQXJyYXlCdWZmZXJBcmd1bWVudDxEYXRhVmlldywg
Y2hhcj4oYXJncywgJmluZm8sIHY4OjprRXh0ZXJuYWxCeXRlQXJyYXksIGZhbHNlKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOERvY3VtZW50Q3Vz
dG9tLmNwcAppbmRleCAwNjkwMDZlMjRhMDIyNjJiNjRkYzk1MmRmOTk2NzU1NmQzYTdiYmI3Li4z
ZDcxZWE2ODEzODc0MGIzMzk0NTkxN2RiYTAwZGY3MjczMmRkOWE1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhEb2N1bWVudEN1c3RvbS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4RG9jdW1lbnRDdXN0b20uY3BwCkBA
IC03MCw3ICs3MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERvY3VtZW50OjpldmFsdWF0
ZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAgRXhjZXB0aW9uQ29k
ZSBlYyA9IDA7CiAgICAgU3RyaW5nIGV4cHJlc3Npb24gPSB0b1dlYkNvcmVTdHJpbmcoYXJnc1sw
XSk7CiAgICAgUmVmUHRyPE5vZGU+IGNvbnRleHROb2RlOwotICAgIGlmIChWOE5vZGU6Okhhc0lu
c3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSkKKyAgICBpZiAoVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElz
b2xhdGUoKSkpCiAgICAgICAgIGNvbnRleHROb2RlID0gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKTsKIAogICAgIFJlZlB0cjxYUGF0aE5TUmVz
b2x2ZXI+IHJlc29sdmVyID0gdG9YUGF0aE5TUmVzb2x2ZXIoYXJnc1syXSwgYXJncy5HZXRJc29s
YXRlKCkpOwpAQCAtNzksNyArNzksNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhEb2N1bWVu
dDo6ZXZhbHVhdGVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiAgICAg
aW50IHR5cGUgPSB0b0ludDMyKGFyZ3NbM10pOwogICAgIFJlZlB0cjxYUGF0aFJlc3VsdD4gaW5S
ZXN1bHQ7Ci0gICAgaWYgKFY4WFBhdGhSZXN1bHQ6Okhhc0luc3RhbmNlKGFyZ3NbNF0sIGFyZ3Mu
R2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAgICBpZiAoVjhY
UGF0aFJlc3VsdDo6SGFzSW5zdGFuY2UoYXJnc1s0XSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAg
ICAgICBpblJlc3VsdCA9IFY4WFBhdGhSZXN1bHQ6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9i
amVjdD46OkNhc3QoYXJnc1s0XSkpOwogCiAgICAgVjhUUllDQVRDSChSZWZQdHI8WFBhdGhSZXN1
bHQ+LCByZXN1bHQsIGRvY3VtZW50LT5ldmFsdWF0ZShleHByZXNzaW9uLCBjb250ZXh0Tm9kZS5n
ZXQoKSwgcmVzb2x2ZXIuZ2V0KCksIHR5cGUsIGluUmVzdWx0LmdldCgpLCBlYykpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE1lZGlhRWxlbWVu
dEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVk
aWFFbGVtZW50Q3VzdG9tLmNwcAppbmRleCBhYTk3ZTBlNzBmZjM0NWYzYjc3NGM1MGZjNjQzNDRk
NGQ0OTlmZWQ1Li5kOTNhZTM5YTJmZTc3ZGNkYzUwZjk0MGZkOTBkY2Y4MWU3ZGQ0MGY0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MTWVkaWFFbGVt
ZW50Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhI
VE1MTWVkaWFFbGVtZW50Q3VzdG9tLmNwcApAQCAtMzcsNyArMzcsNyBAQCB2b2lkIFY4SFRNTE1l
ZGlhRWxlbWVudDo6Y29udHJvbGxlckF0dHJTZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJp
bmc+IG5hbWUsCiB7CiAgICAgSFRNTE1lZGlhRWxlbWVudCogaW1wID0gVjhIVE1MTWVkaWFFbGVt
ZW50Ojp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKICAgICBNZWRpYUNvbnRyb2xsZXIqIGNvbnRy
b2xsZXIgPSAwOwotICAgIGlmIChWOE1lZGlhQ29udHJvbGxlcjo6SGFzSW5zdGFuY2UodmFsdWUs
IGluZm8uR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpKSkKKyAgICBp
ZiAoVjhNZWRpYUNvbnRyb2xsZXI6Okhhc0luc3RhbmNlKHZhbHVlLCBpbmZvLkdldElzb2xhdGUo
KSkpCiAgICAgICAgIGNvbnRyb2xsZXIgPSBWOE1lZGlhQ29udHJvbGxlcjo6dG9OYXRpdmUodmFs
dWUtPlRvT2JqZWN0KCkpOwogICAgIAogICAgIGlmICghY29udHJvbGxlcikgewpAQCAtNTUsMyAr
NTUsNCBAQCB2b2lkIFY4SFRNTE1lZGlhRWxlbWVudDo6Y29udHJvbGxlckF0dHJTZXR0ZXJDdXN0
b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsCiB9CiAKICNlbmRpZgorCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0aW9uc0NvbGxlY3Rp
b25DdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTE9w
dGlvbnNDb2xsZWN0aW9uQ3VzdG9tLmNwcAppbmRleCAzNmVkZTU1YzNmY2MxYjRmNmJjNDQwYThi
YjEwNmM3NzcxZDk4N2VlLi41NmI3MDY1N2Y0NDAzYWZmOTg1MDkwMGMzMTgyZmM1NWNlZGQ3YTgy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhIVE1MT3B0
aW9uc0NvbGxlY3Rpb25DdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAKQEAgLTkxLDcgKzkxLDcg
QEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRNTE9wdGlvbnNDb2xsZWN0aW9uOjpyZW1vdmVN
ZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3UKIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SFRN
TE9wdGlvbnNDb2xsZWN0aW9uOjphZGRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKIHsKLSAgICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAg
ICBpZiAoIVY4SFRNTE9wdGlvbkVsZW1lbnQ6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0
SXNvbGF0ZSgpKSkKICAgICAgICAgcmV0dXJuIHNldERPTUV4Y2VwdGlvbihUWVBFX01JU01BVENI
X0VSUiwgYXJncy5HZXRJc29sYXRlKCkpOwogICAgIEhUTUxPcHRpb25zQ29sbGVjdGlvbiogaW1w
ID0gVjhIVE1MT3B0aW9uc0NvbGxlY3Rpb246OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwogICAg
IEhUTUxPcHRpb25FbGVtZW50KiBvcHRpb24gPSBWOEhUTUxPcHRpb25FbGVtZW50Ojp0b05hdGl2
ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
c1swXSkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9W
OEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEhUTUxTZWxlY3RFbGVtZW50Q3VzdG9tLmNwcAppbmRleCAzNjZmNzg4Y2YyMWU1
OTIzODYwMDFmMTMyZjIyNTBiNjcwZjg4ZDIyLi4xMGIyM2M0NmRlMDU2NmJkNDE5MzdjM2FlZWU4
NzNlYTEzOTJmOTNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0
b20vVjhIVE1MU2VsZWN0RWxlbWVudEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SFRNTFNlbGVjdEVsZW1lbnRDdXN0b20uY3BwCkBAIC03MCw3ICs3
MCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEhUTUxTZWxlY3RFbGVtZW50OjpyZW1vdmVN
ZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50CiAKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBy
ZW1vdmVFbGVtZW50KEhUTUxTZWxlY3RFbGVtZW50KiBpbXAsIGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpIAogewotICAgIGlmIChWOEhUTUxPcHRpb25FbGVtZW50OjpIYXNJbnN0YW5jZShhcmdz
WzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkpIHsK
KyAgICBpZiAoVjhIVE1MT3B0aW9uRWxlbWVudDo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKSB7CiAgICAgICAgIEhUTUxPcHRpb25FbGVtZW50KiBlbGVtZW50ID0gVjhI
VE1MT3B0aW9uRWxlbWVudDo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSk7CiAgICAgICAgIGltcC0+cmVtb3ZlKGVsZW1lbnQtPmluZGV4KCkpOwogICAgICAg
ICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAK
aW5kZXggOTU2ZDU2YWUzN2I5ZmIwYzUyNWNlODNlN2RkYzRiMTZmYThkZjQ3OC4uZTYzNjk4ZjI1
OTc5MTZiMzYwN2YwYjA0YTFmZGZlM2RiM2RiYzJlNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RD
dXN0b20uY3BwCkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5q
ZWN0ZWRTY3JpcHRIb3N0Ojppc0hUTUxBbGxDb2xsZWN0aW9uTWV0aG9kQ3VzdG9tKGNvbnMKICAg
ICAgICAgcmV0dXJuIHY4Qm9vbGVhbihmYWxzZSwgYXJncy5HZXRJc29sYXRlKCkpOwogCiAgICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHJldHVybiB2ODo6Qm9vbGVhbjo6TmV3
KFY4SFRNTEFsbENvbGxlY3Rpb246Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0
ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSk7CisgICAgcmV0dXJuIHY4OjpCb29s
ZWFuOjpOZXcoVjhIVE1MQWxsQ29sbGVjdGlvbjo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5H
ZXRJc29sYXRlKCkpKTsKIH0KIAogdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SW5qZWN0ZWRTY3Jp
cHRIb3N0Ojp0eXBlTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MpCkBAIC0x
MzMsMjAgKzEzMywxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OnR5cGVNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgICAgICByZXR1cm4g
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJkYXRlIik7CiAgICAgaWYgKHZhbHVlLT5Jc1JlZ0V4cCgp
KQogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJyZWdleHAiKTsKLSAgICBX
cmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpOwotICAgIGlmIChWOE5vZGU6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xh
dGUoKSwgY3VycmVudFdvcmxkVHlwZSkpCisgICAgaWYgKFY4Tm9kZTo6SGFzSW5zdGFuY2UodmFs
dWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKICAgICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ld1N5
bWJvbCgibm9kZSIpOwotICAgIGlmIChWOE5vZGVMaXN0OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJn
cy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQorICAgIGlmIChWOE5vZGVMaXN0OjpI
YXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICByZXR1cm4gdjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwotICAgIGlmIChWOEhUTUxDb2xsZWN0aW9uOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQor
ICAgIGlmIChWOEhUTUxDb2xsZWN0aW9uOjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29s
YXRlKCkpKQogICAgICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwot
ICAgIGlmIChWOEludDhBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgp
LCBjdXJyZW50V29ybGRUeXBlKSB8fCBWOEludDE2QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBh
cmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkgfHwgVjhJbnQzMkFycmF5OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQorICAg
IGlmIChWOEludDhBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSB8
fCBWOEludDE2QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwg
VjhJbnQzMkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAg
ICAgICByZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwotICAgIGlmIChWOFVp
bnQ4QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdv
cmxkVHlwZSkgfHwgVjhVaW50MTZBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNv
bGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSB8fCBWOFVpbnQzMkFycmF5OjpIYXNJbnN0YW5jZSh2
YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKQorICAgIGlmIChWOFVp
bnQ4QXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhVaW50
MTZBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpKSB8fCBWOFVpbnQz
MkFycmF5OjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICBy
ZXR1cm4gdjg6OlN0cmluZzo6TmV3U3ltYm9sKCJhcnJheSIpOwotICAgIGlmIChWOEZsb2F0MzJB
cnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRU
eXBlKSB8fCBWOEZsb2F0NjRBcnJheTo6SGFzSW5zdGFuY2UodmFsdWUsIGFyZ3MuR2V0SXNvbGF0
ZSgpLCBjdXJyZW50V29ybGRUeXBlKSkKKyAgICBpZiAoVjhGbG9hdDMyQXJyYXk6Okhhc0luc3Rh
bmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkgfHwgVjhGbG9hdDY0QXJyYXk6Okhhc0luc3Rh
bmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSkpCiAgICAgICAgIHJldHVybiB2ODo6U3RyaW5n
OjpOZXdTeW1ib2woImFycmF5Iik7Ci0gICAgaWYgKFY4VWludDhDbGFtcGVkQXJyYXk6Okhhc0lu
c3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlwZSkpCisgICAg
aWYgKFY4VWludDhDbGFtcGVkQXJyYXk6Okhhc0luc3RhbmNlKHZhbHVlLCBhcmdzLkdldElzb2xh
dGUoKSkpCiAgICAgICAgIHJldHVybiB2ODo6U3RyaW5nOjpOZXdTeW1ib2woImFycmF5Iik7CiAg
ICAgcmV0dXJuIHY4OjpVbmRlZmluZWQoKTsKIH0KQEAgLTI0NCw3ICsyNDMsNyBAQCB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OmdldEV2ZW50TGlzdGVuZXJzTWV0
aG9kQ3VzdG9tKGNvbnN0CiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogCiAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gdmFsdWUgPSBhcmdzWzBdOwotICAgIGlmICghVjhOb2RlOjpI
YXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElz
b2xhdGUoKSkpKQorICAgIGlmICghVjhOb2RlOjpIYXNJbnN0YW5jZSh2YWx1ZSwgYXJncy5HZXRJ
c29sYXRlKCkpKQogICAgICAgICByZXR1cm4gdjg6OlVuZGVmaW5lZCgpOwogICAgIE5vZGUqIG5v
ZGUgPSBWOE5vZGU6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICBpZiAoIW5vZGUp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlv
bkN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhMb2NhdGlv
bkN1c3RvbS5jcHAKaW5kZXggY2ZlZDcyYzZkMjAzOTE4NTI2MzM2MjdhOWRiMDVkNDk3N2E5OTE0
OS4uMWVmZDg1YWM4ZjVhZmQ1ZWFjMDQ5ZjJmMGI4MWM2NGI1OGVkZWIzMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNw
cApAQCAtMTQzLDcgKzE0Myw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjpy
ZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgc3RhdGlj
IGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJyZWxvYWRQcml2YXRlVGVt
cGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdvcmxkVHlw
ZShpc29sYXRlKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZWxv
YWRNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5y
YXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkpKTsKKyAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gZGF0
YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlx
dWVLZXksIFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6
OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOwog
CiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZElu
c3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShpc29sYXRlLCBj
dXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsKQEAgLTE1NCw3
ICsxNTQsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVsb2FkQXR0ckdl
dHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIExvY2F0aW9uKiBpbXAgPSBW
OExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1NlY3VyaXR5Ojpz
aG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgpLCBpbXAtPmZy
YW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gInJlbG9hZFNoYXJlZFRlbXBsYXRlIjsK
LSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBs
YXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1w
bGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246Omlu
Zm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlbG9h
ZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJh
d1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVt
cGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUt
PkdldEZ1bmN0aW9uKCk7CkBAIC0xNjcsNyArMTY3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4TG9jYXRpb246OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5n
PgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVw
bGFjZVByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29y
bGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0
aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVt
cGxhdGUoJlY4TG9jYXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IFY4UGVySXNv
bGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3Vz
dG9tLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUo
JlY4TG9jYXRpb246OmluZm8pKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRl
ciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246
OkdldFRlbXBsYXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsKICAgICBpZiAoaG9sZGVy
LklzRW1wdHkoKSkgewpAQCAtMTc4LDcgKzE3OCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OExvY2F0aW9uOjpyZXBsYWNlQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4K
ICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJy
ZXBsYWNlU2hhcmVkVGVtcGxhdGUiOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8u
R2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRU
ZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwgdjhVbmRl
ZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9u
OjppbmZvLCBjdXJyZW50V29ybGRUeXBlKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGluZm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZz
aGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVwbGFjZU1ldGhvZEN1c3RvbSwg
djhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExv
Y2F0aW9uOjppbmZvKSkpOwogICAgICAgICByZXR1cm4gc2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0
aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRlVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7
CkBAIC0xOTEsNyArMTkxLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OmFz
c2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICBzdGF0aWMg
Y29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gImFzc2lnblByaXZhdGVUZW1w
bGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBl
KGluZm8uR2V0SXNvbGF0ZSgpKTsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1w
bGF0ZShjdXJyZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0
aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5l
dyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbywgY3VycmVudFdvcmxkVHlwZSkp
KTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBs
YXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVt
cGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmlu
ZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjpp
bmZvKSkpOwogCiAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMo
KS0+RmluZEluc3RhbmNlSW5Qcm90b3R5cGVDaGFpbihWOExvY2F0aW9uOjpHZXRUZW1wbGF0ZShp
c29sYXRlLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5KCkpIHsK
QEAgLTIwMiw3ICsyMDIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6YXNz
aWduQXR0ckdldHRlckN1c3RvbSh2ODo6TG9jYWw8djg6OlN0cmluZz4gbgogICAgIExvY2F0aW9u
KiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGluZ1Nl
Y3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5jZSgp
LCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAgc3Rh
dGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gImFzc2lnblNoYXJlZFRl
bXBsYXRlIjsKLSAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNo
YXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZz
aGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2
OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9j
YXRpb246OmluZm8sIGN1cnJlbnRXb3JsZFR5cGUpKSk7CisgICAgICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1w
bGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRp
b246OmFzc2lnbk1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25hdHVyZTo6TmV3
KGRhdGEtPnJhd1RlbXBsYXRlKCZWOExvY2F0aW9uOjppbmZvKSkpOwogICAgICAgICByZXR1cm4g
c2hhcmVkVGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CiAgICAgfQogICAgIHJldHVybiBwcml2YXRl
VGVtcGxhdGUtPkdldEZ1bmN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20uY3BwCmluZGV4IGQzMTgwZmFhM2UzZDcxZTk0MjgyNmIy
MWQ3Y2MzOWJkZDdhZDhmZTIuLmFlYzZhZGIyMzYyZGUwNWQwYWJhZTcyZGY4YTE2OWQ3NTE4ZmIx
OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVD
dXN0b20uY3BwCkBAIC02Niw4ICs2Niw4IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOE5vZGU6
Omluc2VydEJlZm9yZU1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBhcmdzLkhvbGRlcigpOwogICAgIE5vZGUq
IGltcCA9IFY4Tm9kZTo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBFeGNlcHRpb25Db2RlIGVjID0g
MDsKLSAgICBOb2RlKiBuZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJn
cy5HZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7Ci0gICAg
Tm9kZSogcmVmQ2hpbGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUo
djg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzFdKSkgOiAwOworICAgIE5vZGUqIG5l
d0NoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkg
PyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkp
IDogMDsKKyAgICBOb2RlKiByZWZDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwg
YXJncy5HZXRJc29sYXRlKCkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0gaW1wLT5pbnNlcnRC
ZWZvcmUobmV3Q2hpbGQsIHJlZkNoaWxkLCBlYywgQXR0YWNoTGF6aWx5KTsKICAgICBpZiAoZWMp
CiAgICAgICAgIHJldHVybiBzZXRET01FeGNlcHRpb24oZWMsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsK
QEAgLTgyLDggKzgyLDggQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6cmVwbGFjZUNo
aWxkTWV0aG9kQ3VzdG9tKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0gVjhO
b2RlOjp0b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIE5v
ZGUqIG5ld0NoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xh
dGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4
OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKLSAgICBOb2RlKiBvbGRD
aGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdv
cmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMV0pKSA6IDA7CisgICAgTm9kZSogbmV3Q2hpbGQgPSBW
OE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSA/IFY4Tm9kZTo6
dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAg
IE5vZGUqIG9sZENoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElz
b2xhdGUoKSkgPyBWOE5vZGU6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1sxXSkpIDogMDsKICAgICBib29sIHN1Y2Nlc3MgPSBpbXAtPnJlcGxhY2VDaGlsZChuZXdD
aGlsZCwgb2xkQ2hpbGQsIGVjLCBBdHRhY2hMYXppbHkpOwogICAgIGlmIChlYykKICAgICAgICAg
cmV0dXJuIHNldERPTUV4Y2VwdGlvbihlYywgYXJncy5HZXRJc29sYXRlKCkpOwpAQCAtOTcsNyAr
OTcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhOb2RlOjpyZW1vdmVDaGlsZE1ldGhvZEN1
c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gaG9sZGVyID0gYXJncy5Ib2xkZXIoKTsKICAgICBOb2RlKiBpbXAgPSBWOE5vZGU6OnRvTmF0
aXZlKGhvbGRlcik7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgTm9kZSogb2xkQ2hp
bGQgPSBWOE5vZGU6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3Js
ZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSA/IFY4Tm9kZTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOworICAgIE5vZGUqIG9sZENoaWxkID0gVjhO
b2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOE5vZGU6OnRv
TmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKICAgICBi
b29sIHN1Y2Nlc3MgPSBpbXAtPnJlbW92ZUNoaWxkKG9sZENoaWxkLCBlYyk7CiAgICAgaWYgKGVj
KQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7
CkBAIC0xMTIsNyArMTEyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4Tm9kZTo6YXBwZW5k
Q2hpbGRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGFyZ3MuSG9sZGVyKCk7CiAgICAgTm9kZSogaW1wID0g
VjhOb2RlOjp0b05hdGl2ZShob2xkZXIpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAg
IE5vZGUqIG5ld0NoaWxkID0gVjhOb2RlOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElz
b2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOE5vZGU6OnRvTmF0aXZl
KHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnc1swXSkpIDogMDsKKyAgICBOb2RlKiBu
ZXdDaGlsZCA9IFY4Tm9kZTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkp
ID8gVjhOb2RlOjp0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0p
KSA6IDA7CiAgICAgYm9vbCBzdWNjZXNzID0gaW1wLT5hcHBlbmRDaGlsZChuZXdDaGlsZCwgZWMs
IEF0dGFjaExhemlseSk7CiAgICAgaWYgKGVjKQogICAgICAgICByZXR1cm4gc2V0RE9NRXhjZXB0
aW9uKGVjLCBhcmdzLkdldElzb2xhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9jdXN0b20vVjhOb2RlTGlzdEN1c3RvbS5jcHAKaW5kZXggZjU1MmY3MDgwNmE2
MDM5NWU0ZWNiZDZjNWU4Njg0ZTI3ODkzZjFiMi4uOTA0YWIzMTE3NjZiNWQxNDE3Yjk1YTgxNTMz
OWM0Y2JkNTg4NWIxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3Vz
dG9tL1Y4Tm9kZUxpc3RDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOE5vZGVMaXN0Q3VzdG9tLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gVjhOb2RlTGlzdDo6bmFtZWRQcm9wZXJ0eUdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZQogCiB2b2lkKiBWOE5vZGVMaXN0OjpvcGFxdWVSb290Rm9yR0Modm9pZCog
b2JqZWN0LCB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyLCB2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKIHsKLSAgICBBU1NFUlQoVjhOb2RlTGlzdDo6SGFzSW5zdGFuY2Uod3JhcHBlciwg
aXNvbGF0ZSwgTWFpbldvcmxkKSB8fCBWOE5vZGVMaXN0OjpIYXNJbnN0YW5jZSh3cmFwcGVyLCBp
c29sYXRlLCBJc29sYXRlZFdvcmxkKSk7CisgICAgQVNTRVJUKFY4Tm9kZUxpc3Q6Okhhc0luc3Rh
bmNlKHdyYXBwZXIsIGlzb2xhdGUpKTsKICAgICBOb2RlTGlzdCogaW1wbCA9IHN0YXRpY19jYXN0
PE5vZGVMaXN0Kj4ob2JqZWN0KTsKICAgICBpZiAoIWltcGwtPmlzTGl2ZU5vZGVMaXN0KCkpCiAg
ICAgICAgIHJldHVybiBvYmplY3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4V2ViR0xSZW5kZXJpbmdDb250ZXh0Q3VzdG9tLmNw
cAppbmRleCAxMjQ3OWMwZGI0ODIwZTRhOGY1MWJlNjBiMmY1MDRhY2M2YjZkOTA1Li5kYjQ5OTM5
MDQwM2Q1ZTU3NzdhZTU1Y2E1YmIxZjQ2NDY5MzJhZjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhXZWJHTFJlbmRlcmluZ0NvbnRleHRDdXN0b20uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFdlYkdMUmVuZGVyaW5n
Q29udGV4dEN1c3RvbS5jcHAKQEAgLTI3NCw3ICsyNzQsNyBAQCBzdGF0aWMgV2ViR0xVbmlmb3Jt
TG9jYXRpb24qIHRvV2ViR0xVbmlmb3JtTG9jYXRpb24odjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZh
bHVlLAogewogICAgIG9rID0gZmFsc2U7CiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0
aW9uID0gMDsKLSAgICBpZiAoVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UodmFs
dWUsIGlzb2xhdGUsIHdvcmxkVHlwZShpc29sYXRlKSkpIHsKKyAgICBpZiAoVjhXZWJHTFVuaWZv
cm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpKSB7CiAgICAgICAgIGxvY2F0
aW9uID0gVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6dG9OYXRpdmUodmFsdWUtPlRvT2JqZWN0KCkp
OwogICAgICAgICBvayA9IHRydWU7CiAgICAgfQpAQCAtMjkyLDkgKzI5Miw5IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0QXR0YWNoZWRTaGFkZXJz
TWV0aG9kQ3VzdG9tKGNvCiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVm
aW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYm
ICFWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwot
ICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
PyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSkgOiAwOworICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFt
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJvZ3Jh
bTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViR0xTaGFkZXI+ID4gc2hhZGVyczsKICAgICBib29sIHN1Y2Nl
ZWQgPSBjb250ZXh0LT5nZXRBdHRhY2hlZFNoYWRlcnMocHJvZ3JhbSwgc2hhZGVycywgZWMpOwog
ICAgIGlmIChlYykgewpAQCAtMzYxLDkgKzM2MSw5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0UHJvZ3JhbVBhcmFtZXRlck1ldGhvZEN1c3RvbShj
CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJlbmRlcmluZ0NvbnRleHQq
IGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRpdmUoYXJncy5Ib2xkZXIo
KSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdz
WzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNv
bGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAgICBpZiAoYXJncy5MZW5n
dGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMUHJvZ3Jh
bTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICByZXR1
cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIFdlYkdMUHJvZ3Jh
bSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdl
dElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFdlYkdMUHJvZ3Jh
bTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwor
ICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUodjg6
OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwogICAgIHVuc2lnbmVkIHBu
YW1lID0gdG9JbnQzMihhcmdzWzFdKTsKICAgICBXZWJHTEdldEluZm8gaW5mbyA9IGNvbnRleHQt
PmdldFByb2dyYW1QYXJhbWV0ZXIocHJvZ3JhbSwgcG5hbWUsIGVjKTsKICAgICBpZiAoZWMpCkBA
IC0zODMsOSArMzgzLDkgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4V2ViR0xSZW5kZXJpbmdD
b250ZXh0OjpnZXRTaGFkZXJQYXJhbWV0ZXJNZXRob2RDdXN0b20oY28KIAogICAgIEV4Y2VwdGlv
bkNvZGUgZWMgPSAwOwogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IFY4V2Vi
R0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKLSAgICBpZiAoYXJn
cy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdM
U2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCisgICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1Vu
ZGVmaW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFNoYWRlcjo6SGFzSW5zdGFuY2UoYXJn
c1swXSwgYXJncy5HZXRJc29sYXRlKCkpKQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3Io
MCwgYXJncy5HZXRJc29sYXRlKCkpOwotICAgIFdlYkdMU2hhZGVyKiBzaGFkZXIgPSBWOFdlYkdM
U2hhZGVyOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkgPyBWOFdlYkdMU2hhZGVyOjp0b05hdGl2ZSh2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+OjpDYXN0KGFyZ3NbMF0pKSA6IDA7CisgICAgV2ViR0xTaGFkZXIqIHNoYWRl
ciA9IFY4V2ViR0xTaGFkZXI6Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgp
KSA/IFY4V2ViR0xTaGFkZXI6OnRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3Qo
YXJnc1swXSkpIDogMDsKICAgICB1bnNpZ25lZCBwbmFtZSA9IHRvSW50MzIoYXJnc1sxXSk7CiAg
ICAgV2ViR0xHZXRJbmZvIGluZm8gPSBjb250ZXh0LT5nZXRTaGFkZXJQYXJhbWV0ZXIoc2hhZGVy
LCBwbmFtZSwgZWMpOwogICAgIGlmIChlYykKQEAgLTQxOCwxMSArNDE4LDExIEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybU1ldGhvZEN1
c3RvbShjb25zdCB2ODo6CiAKICAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKICAgICBXZWJHTFJl
bmRlcmluZ0NvbnRleHQqIGNvbnRleHQgPSBWOFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6dG9OYXRp
dmUoYXJncy5Ib2xkZXIoKSk7Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAwICYmICFpc1VuZGVm
aW5lZE9yTnVsbChhcmdzWzBdKSAmJiAhVjhXZWJHTFByb2dyYW06Okhhc0luc3RhbmNlKGFyZ3Nb
MF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAg
ICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYm
ICFWOFdlYkdMUHJvZ3JhbTo6SGFzSW5zdGFuY2UoYXJnc1swXSwgYXJncy5HZXRJc29sYXRlKCkp
KQogICAgICAgICByZXR1cm4gdGhyb3dUeXBlRXJyb3IoMCwgYXJncy5HZXRJc29sYXRlKCkpOwot
ICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFtOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKSkg
PyBWOFdlYkdMUHJvZ3JhbTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmdzWzBdKSkgOiAwOworICAgIFdlYkdMUHJvZ3JhbSogcHJvZ3JhbSA9IFY4V2ViR0xQcm9ncmFt
OjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkgPyBWOFdlYkdMUHJvZ3Jh
bTo6dG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChhcmdzWzBdKSkgOiAwOwog
Ci0gICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiAxICYmICFpc1VuZGVmaW5lZE9yTnVsbChhcmdzWzFd
KSAmJiAhVjhXZWJHTFVuaWZvcm1Mb2NhdGlvbjo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5H
ZXRJc29sYXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKQorICAgIGlmIChhcmdz
Lkxlbmd0aCgpID4gMSAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1sxXSkgJiYgIVY4V2ViR0xV
bmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkK
ICAgICAgICAgcmV0dXJuIHRocm93VHlwZUVycm9yKDAsIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAg
ICBib29sIG9rID0gZmFsc2U7CiAgICAgV2ViR0xVbmlmb3JtTG9jYXRpb24qIGxvY2F0aW9uID0g
dG9XZWJHTFVuaWZvcm1Mb2NhdGlvbihhcmdzWzFdLCBvaywgYXJncy5HZXRJc29sYXRlKCkpOwpA
QCAtNDg3LDE0ICs0ODcsMTQgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2ZXJ0ZXhB
dHRyaWJBbmRVbmlmb3JtSGVscGVyZihjb25zdCB2ODo6QXJndW1lbnRzJgogICAgIGlmIChpc0Z1
bmN0aW9uVG9DYWxsRm9yQXR0cmlidXRlKGZ1bmN0aW9uVG9DYWxsKSkKICAgICAgICAgaW5kZXgg
PSB0b0ludDMyKGFyZ3NbMF0pOwogICAgIGVsc2UgewotICAgICAgICBpZiAoYXJncy5MZW5ndGgo
KSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxv
Y2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSwgd29ybGRUeXBl
KGFyZ3MuR2V0SXNvbGF0ZSgpKSkpCisgICAgICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAh
aXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhh
c0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpKSkKICAgICAgICAgICAgIHJldHVy
biB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgICAgIGxvY2F0aW9u
ID0gdG9XZWJHTFVuaWZvcm1Mb2NhdGlvbihhcmdzWzBdLCBvaywgYXJncy5HZXRJc29sYXRlKCkp
OwogICAgIH0KIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCogY29udGV4dCA9IFY4V2ViR0xS
ZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKIAotICAgIGlmIChWOEZs
b2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1sxXSwgYXJncy5HZXRJc29sYXRlKCksIHdvcmxk
VHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CisgICAgaWYgKFY4RmxvYXQzMkFycmF5OjpIYXNJ
bnN0YW5jZShhcmdzWzFdLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKICAgICAgICAgRmxvYXQzMkFy
cmF5KiBhcnJheSA9IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZShhcmdzWzFdLT5Ub09iamVjdCgp
KTsKICAgICAgICAgQVNTRVJUKGFycmF5ICE9IE5VTEwpOwogICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKQEAgLTU1OCwxMiArNTU4LDEyIEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gdW5pZm9ybUhlbHBlcmkoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKICAgICAgICAgcmV0
dXJuIHRocm93Tm90RW5vdWdoQXJndW1lbnRzRXJyb3IoYXJncy5HZXRJc29sYXRlKCkpOwogCiAg
ICAgV2ViR0xSZW5kZXJpbmdDb250ZXh0KiBjb250ZXh0ID0gVjhXZWJHTFJlbmRlcmluZ0NvbnRl
eHQ6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAm
JiAhaXNVbmRlZmluZWRPck51bGwoYXJnc1swXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246
Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5H
ZXRJc29sYXRlKCkpKSkKKyAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVk
T3JOdWxsKGFyZ3NbMF0pICYmICFWOFdlYkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShh
cmdzWzBdLCBhcmdzLkdldElzb2xhdGUoKSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJv
cigwLCBhcmdzLkdldElzb2xhdGUoKSk7CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIFdlYkdM
VW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlvbiA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oYXJnc1sw
XSwgb2ssIGFyZ3MuR2V0SXNvbGF0ZSgpKTsKIAotICAgIGlmIChWOEludDMyQXJyYXk6Okhhc0lu
c3RhbmNlKGFyZ3NbMV0sIGFyZ3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29s
YXRlKCkpKSkgeworICAgIGlmIChWOEludDMyQXJyYXk6Okhhc0luc3RhbmNlKGFyZ3NbMV0sIGFy
Z3MuR2V0SXNvbGF0ZSgpKSkgewogICAgICAgICBJbnQzMkFycmF5KiBhcnJheSA9IFY4SW50MzJB
cnJheTo6dG9OYXRpdmUoYXJnc1sxXS0+VG9PYmplY3QoKSk7CiAgICAgICAgIEFTU0VSVChhcnJh
eSAhPSBOVUxMKTsKICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CkBAIC02NjAsMTMgKzY2
MCwxMyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHVuaWZvcm1NYXRyaXhIZWxwZXIo
Y29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncywKIAogICAgIFdlYkdMUmVuZGVyaW5nQ29udGV4dCog
Y29udGV4dCA9IFY4V2ViR0xSZW5kZXJpbmdDb250ZXh0Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigp
KTsKIAotICAgIGlmIChhcmdzLkxlbmd0aCgpID4gMCAmJiAhaXNVbmRlZmluZWRPck51bGwoYXJn
c1swXSkgJiYgIVY4V2ViR0xVbmlmb3JtTG9jYXRpb246Okhhc0luc3RhbmNlKGFyZ3NbMF0sIGFy
Z3MuR2V0SXNvbGF0ZSgpLCB3b3JsZFR5cGUoYXJncy5HZXRJc29sYXRlKCkpKSkKKyAgICBpZiAo
YXJncy5MZW5ndGgoKSA+IDAgJiYgIWlzVW5kZWZpbmVkT3JOdWxsKGFyZ3NbMF0pICYmICFWOFdl
YkdMVW5pZm9ybUxvY2F0aW9uOjpIYXNJbnN0YW5jZShhcmdzWzBdLCBhcmdzLkdldElzb2xhdGUo
KSkpCiAgICAgICAgIHJldHVybiB0aHJvd1R5cGVFcnJvcigwLCBhcmdzLkdldElzb2xhdGUoKSk7
CiAgICAgYm9vbCBvayA9IGZhbHNlOwogICAgIFdlYkdMVW5pZm9ybUxvY2F0aW9uKiBsb2NhdGlv
biA9IHRvV2ViR0xVbmlmb3JtTG9jYXRpb24oYXJnc1swXSwgb2ssIGFyZ3MuR2V0SXNvbGF0ZSgp
KTsKICAgICAKICAgICBib29sIHRyYW5zcG9zZSA9IGFyZ3NbMV0tPkJvb2xlYW5WYWx1ZSgpOwot
ICAgIGlmIChWOEZsb2F0MzJBcnJheTo6SGFzSW5zdGFuY2UoYXJnc1syXSwgYXJncy5HZXRJc29s
YXRlKCksIHdvcmxkVHlwZShhcmdzLkdldElzb2xhdGUoKSkpKSB7CisgICAgaWYgKFY4RmxvYXQz
MkFycmF5OjpIYXNJbnN0YW5jZShhcmdzWzJdLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKICAgICAg
ICAgRmxvYXQzMkFycmF5KiBhcnJheSA9IFY4RmxvYXQzMkFycmF5Ojp0b05hdGl2ZShhcmdzWzJd
LT5Ub09iamVjdCgpKTsKICAgICAgICAgQVNTRVJUKGFycmF5ICE9IE5VTEwpOwogICAgICAgICBF
eGNlcHRpb25Db2RlIGVjID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOFhNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAppbmRleCA3ZWM4OTEw
YWU5NzU2NTEyZTk5OTQxYTU4YWFmMTlhZjU1ZTljYzczLi4xYWFmYTc0MmIxYmQ1ZDA1ZTEzNzQx
OWFhZTFjMzgxNjczNWUxOTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvY3VzdG9tL1Y4WE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCkBAIC0xNTgsMTAg
KzE1OCwxMCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhYTUxIdHRwUmVxdWVzdDo6b3Blbk1l
dGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBhcgogICAgIHJldHVybiB2ODo6VW5kZWZp
bmVkKCk7CiB9CiAKLXN0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVu
dFdvcmxkVHlwZSkKK3N0YXRpYyBib29sIGlzRG9jdW1lbnRUeXBlKHY4OjpIYW5kbGU8djg6OlZh
bHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7CiAgICAgLy8gRklYTUU6IGFkZCBv
dGhlciBkb2N1bWVudCB0eXBlcy4KLSAgICByZXR1cm4gVjhEb2N1bWVudDo6SGFzSW5zdGFuY2Uo
dmFsdWUsIGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpIHx8IFY4SFRNTERvY3VtZW50OjpIYXNJ
bnN0YW5jZSh2YWx1ZSwgaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSk7CisgICAgcmV0dXJuIFY4
RG9jdW1lbnQ6Okhhc0luc3RhbmNlKHZhbHVlLCBpc29sYXRlKSB8fCBWOEhUTUxEb2N1bWVudDo6
SGFzSW5zdGFuY2UodmFsdWUsIGlzb2xhdGUpOwogfQogCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhYTUxIdHRwUmVxdWVzdDo6c2VuZE1ldGhvZEN1c3RvbShjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQpAQCAtMTc1LDMxICsxNzUsMzAgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4WE1MSHR0
cFJlcXVlc3Q6OnNlbmRNZXRob2RDdXN0b20oY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXIKICAgICAg
ICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoZWMpOwogICAgIGVsc2UgewogICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJnID0gYXJnc1swXTsKLSAgICAgICAgV3JhcHBlcldvcmxkVHlwZSBj
dXJyZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGFyZ3MuR2V0SXNvbGF0ZSgpKTsKICAgICAgICAg
aWYgKGlzVW5kZWZpbmVkT3JOdWxsKGFyZykpCiAgICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+
c2VuZChlYyk7Ci0gICAgICAgIGVsc2UgaWYgKGlzRG9jdW1lbnRUeXBlKGFyZywgYXJncy5HZXRJ
c29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7CisgICAgICAgIGVsc2UgaWYgKGlzRG9jdW1l
bnRUeXBlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7CiAgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJnKTsK
ICAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IFY4RG9jdW1lbnQ6OnRvTmF0aXZlKG9i
amVjdCk7CiAgICAgICAgICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgICAgICAgICAgeG1sSHR0
cFJlcXVlc3QtPnNlbmQoZG9jdW1lbnQsIGVjKTsKLSAgICAgICAgfSBlbHNlIGlmIChWOEJsb2I6
Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCksIGN1cnJlbnRXb3JsZFR5cGUpKSB7
CisgICAgICAgIH0gZWxzZSBpZiAoVjhCbG9iOjpIYXNJbnN0YW5jZShhcmcsIGFyZ3MuR2V0SXNv
bGF0ZSgpKSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QgPSB2
ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgICAgICBCbG9iKiBibG9i
ID0gVjhCbG9iOjp0b05hdGl2ZShvYmplY3QpOwogICAgICAgICAgICAgQVNTRVJUKGJsb2IpOwog
ICAgICAgICAgICAgeG1sSHR0cFJlcXVlc3QtPnNlbmQoYmxvYiwgZWMpOwotICAgICAgICB9IGVs
c2UgaWYgKFY4RE9NRm9ybURhdGE6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCks
IGN1cnJlbnRXb3JsZFR5cGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhET01Gb3JtRGF0YTo6
SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSkpIHsKICAgICAgICAgICAgIHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0ID0gdjg6OkhhbmRsZTx2ODo6T2JqZWN0Pjo6Q2FzdChh
cmcpOwogICAgICAgICAgICAgRE9NRm9ybURhdGEqIGRvbUZvcm1EYXRhID0gVjhET01Gb3JtRGF0
YTo6dG9OYXRpdmUob2JqZWN0KTsKICAgICAgICAgICAgIEFTU0VSVChkb21Gb3JtRGF0YSk7CiAg
ICAgICAgICAgICB4bWxIdHRwUmVxdWVzdC0+c2VuZChkb21Gb3JtRGF0YSwgZWMpOwogI2lmIEVO
QUJMRShXRUJHTCkgfHwgRU5BQkxFKEJMT0IpCi0gICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1
ZmZlcjo6SGFzSW5zdGFuY2UoYXJnLCBhcmdzLkdldElzb2xhdGUoKSwgY3VycmVudFdvcmxkVHlw
ZSkpIHsKKyAgICAgICAgfSBlbHNlIGlmIChWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZShhcmcs
IGFyZ3MuR2V0SXNvbGF0ZSgpKSkgewogICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0
PiBvYmplY3QgPSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+OjpDYXN0KGFyZyk7CiAgICAgICAgICAg
ICBBcnJheUJ1ZmZlciogYXJyYXlCdWZmZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZShvYmpl
Y3QpOwogICAgICAgICAgICAgQVNTRVJUKGFycmF5QnVmZmVyKTsKICAgICAgICAgICAgIHhtbEh0
dHBSZXF1ZXN0LT5zZW5kKGFycmF5QnVmZmVyLCBlYyk7Ci0gICAgICAgIH0gZWxzZSBpZiAoVjhB
cnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCksIGN1cnJl
bnRXb3JsZFR5cGUpKSB7CisgICAgICAgIH0gZWxzZSBpZiAoVjhBcnJheUJ1ZmZlclZpZXc6Okhh
c0luc3RhbmNlKGFyZywgYXJncy5HZXRJc29sYXRlKCkpKSB7CiAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IG9iamVjdCA9IHY4OjpIYW5kbGU8djg6Ok9iamVjdD46OkNhc3QoYXJn
KTsKICAgICAgICAgICAgIEFycmF5QnVmZmVyVmlldyogYXJyYXlCdWZmZXJWaWV3ID0gVjhBcnJh
eUJ1ZmZlclZpZXc6OnRvTmF0aXZlKG9iamVjdCk7CiAgICAgICAgICAgICBBU1NFUlQoYXJyYXlC
dWZmZXJWaWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFy
cmF5QnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVy
LmNwcAppbmRleCA1OGFkMzVkMTlkYzEzNTE2MDYzMGE1MjUxNzk1ZTlhNjFjODhlNjU2Li4wZWM1
ZGYzZjRlZWEyYjEzZWYyZGQzNmE1ODQ5ODYwZWE0NjJmMTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJheUJ1ZmZlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXIuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBXZWJBcnJheUJ1ZmZlcjo6dG9WOFZhbHVlKCkKIAogV2ViQXJyYXlC
dWZmZXIqIFdlYkFycmF5QnVmZmVyOjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gdmFsdWUpCiB7Ci0gICAgaWYgKCFWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2YWx1
ZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgV2ViQ29yZTo6TWFpbldvcmxkKSAmJiAhVjhB
cnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCks
IFdlYkNvcmU6Oklzb2xhdGVkV29ybGQpICYmICFWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2
YWx1ZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQoKSwgV2ViQ29yZTo6V29ya2VyV29ybGQpKQor
ICAgIGlmICghVjhBcnJheUJ1ZmZlcjo6SGFzSW5zdGFuY2UodmFsdWUsIHY4OjpJc29sYXRlOjpH
ZXRDdXJyZW50KCkpKQogICAgICAgICByZXR1cm4gMDsKICAgICBXVEY6OkFycmF5QnVmZmVyKiBi
dWZmZXIgPSBWOEFycmF5QnVmZmVyOjp0b05hdGl2ZSh2YWx1ZS0+VG9PYmplY3QoKSk7CiAgICAg
cmV0dXJuIG5ldyBXZWJBcnJheUJ1ZmZlcihidWZmZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViQXJyYXlCdWZmZXJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkFycmF5QnVmZmVyVmlldy5jcHAKaW5kZXggNDI0ZjQyN2Q4MTkwNzg5
YTk0Y2NlYWRhOThmYzdhYjQwYzRlZjgxZC4uM2FlY2NmZWRhZDEyOGU3NmYxZGQ2NmFhZTNlYzZk
N2NiNGVmNzU4OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQXJy
YXlCdWZmZXJWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJBcnJh
eUJ1ZmZlclZpZXcuY3BwCkBAIC02Myw3ICs2Myw3IEBAIHVuc2lnbmVkIFdlYkFycmF5QnVmZmVy
Vmlldzo6Ynl0ZUxlbmd0aCgpIGNvbnN0CiAKIFdlYkFycmF5QnVmZmVyVmlldyogV2ViQXJyYXlC
dWZmZXJWaWV3OjpjcmVhdGVGcm9tVjhWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUp
CiB7Ci0gICAgaWYgKCFXZWJDb3JlOjpWOEFycmF5QnVmZmVyVmlldzo6SGFzSW5zdGFuY2UodmFs
dWUsIHY4OjpJc29sYXRlOjpHZXRDdXJyZW50KCksIFdlYkNvcmU6Ok1haW5Xb3JsZCkgJiYgIVdl
YkNvcmU6OlY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZSh2YWx1ZSwgdjg6Oklzb2xhdGU6
OkdldEN1cnJlbnQoKSwgV2ViQ29yZTo6SXNvbGF0ZWRXb3JsZCkgJiYgIVdlYkNvcmU6OlY4QXJy
YXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZSh2YWx1ZSwgdjg6Oklzb2xhdGU6OkdldEN1cnJlbnQo
KSwgV2ViQ29yZTo6V29ya2VyV29ybGQpKQorICAgIGlmICghV2ViQ29yZTo6VjhBcnJheUJ1ZmZl
clZpZXc6Okhhc0luc3RhbmNlKHZhbHVlLCB2ODo6SXNvbGF0ZTo6R2V0Q3VycmVudCgpKSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgQXJyYXlCdWZmZXJWaWV3KiB2aWV3ID0gV2ViQ29yZTo6VjhB
cnJheUJ1ZmZlclZpZXc6OnRvTmF0aXZlKHZhbHVlLT5Ub09iamVjdCgpKTsKICAgICByZXR1cm4g
bmV3IFdlYkFycmF5QnVmZmVyVmlldyh2aWV3KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkJpbmRpbmdzLmNwcAppbmRleCA1OWU1ZDc3ZTM2NzhjNzk4MWI4NWUxZGM2ZDE2MTc5YTVh
MWY0NzkwLi5lN2U3ZGRiNmExNTRkMTBkNDc1MjlmY2U3NDJkNDZlNTFkODhiNmM5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmluZGluZ3MuY3BwCkBAIC0yMTQsNyArMjE0LDcg
QEAgc3RhdGljIGJvb2wgZ2V0UmFuZ2VJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYlJhbmdlKiB3
ZWJSYW5nZSwgdjg6Oklzb2xhdGUqIGlzb2wKICAgICBpZiAoIVY4UmFuZ2U6OmluZm8uZXF1YWxz
KHRvV3JhcHBlclR5cGVJbmZvKHY4T2JqZWN0KSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIFJhbmdlKiBuYXRpdmUgPSBWOFJhbmdlOjpIYXNJbnN0YW5jZSh2OE9iamVjdCwgaXNvbGF0
ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSA/IFY4UmFuZ2U6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7
CisgICAgUmFuZ2UqIG5hdGl2ZSA9IFY4UmFuZ2U6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29s
YXRlKSA/IFY4UmFuZ2U6OnRvTmF0aXZlKHY4T2JqZWN0KSA6IDA7CiAgICAgaWYgKCFuYXRpdmUp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjI5LDcgKzIyOSw3IEBAIHN0YXRpYyBib29s
IGdldE5vZGVJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYk5vZGUqIHdlYk5vZGUsIHY4OjpJc29s
YXRlKiBpc29sYXRlCiAKICAgICBWOE5QT2JqZWN0KiB2OE5QT2JqZWN0ID0gcmVpbnRlcnByZXRf
Y2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IHY4
T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBOb2RlKiBuYXRpdmUgPSBWOE5vZGU6
Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlLCB3b3JsZFR5cGUoaXNvbGF0ZSkpID8gVjhO
b2RlOjp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIE5vZGUqIG5hdGl2ZSA9IFY4Tm9kZTo6
SGFzSW5zdGFuY2UodjhPYmplY3QsIGlzb2xhdGUpID8gVjhOb2RlOjp0b05hdGl2ZSh2OE9iamVj
dCkgOiAwOwogICAgIGlmICghbmF0aXZlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI0
NCw3ICsyNDQsNyBAQCBzdGF0aWMgYm9vbCBnZXRFbGVtZW50SW1wbChOUE9iamVjdCogb2JqZWN0
LCBXZWJFbGVtZW50KiB3ZWJFbGVtZW50LCB2ODo6SXNvbGF0ZQogCiAgICAgVjhOUE9iamVjdCog
djhOUE9iamVjdCA9IHJlaW50ZXJwcmV0X2Nhc3Q8VjhOUE9iamVjdCo+KG9iamVjdCk7CiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiB2OE9iamVjdCh2OE5QT2JqZWN0LT52OE9iamVjdCk7Ci0g
ICAgRWxlbWVudCogbmF0aXZlID0gVjhFbGVtZW50OjpIYXNJbnN0YW5jZSh2OE9iamVjdCwgaXNv
bGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSA/IFY4RWxlbWVudDo6dG9OYXRpdmUodjhPYmplY3Qp
IDogMDsKKyAgICBFbGVtZW50KiBuYXRpdmUgPSBWOEVsZW1lbnQ6Okhhc0luc3RhbmNlKHY4T2Jq
ZWN0LCBpc29sYXRlKSA/IFY4RWxlbWVudDo6dG9OYXRpdmUodjhPYmplY3QpIDogMDsKICAgICBp
ZiAoIW5hdGl2ZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0yNTksNyArMjU5LDcgQEAg
c3RhdGljIGJvb2wgZ2V0QXJyYXlCdWZmZXJJbXBsKE5QT2JqZWN0KiBvYmplY3QsIFdlYkFycmF5
QnVmZmVyKiBhcnJheUJ1ZmZlciwgdjgKIAogICAgIFY4TlBPYmplY3QqIHY4TlBPYmplY3QgPSBy
ZWludGVycHJldF9jYXN0PFY4TlBPYmplY3QqPihvYmplY3QpOwogICAgIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gdjhPYmplY3QodjhOUE9iamVjdC0+djhPYmplY3QpOwotICAgIEFycmF5QnVmZmVy
KiBuYXRpdmUgPSBWOEFycmF5QnVmZmVyOjpIYXNJbnN0YW5jZSh2OE9iamVjdCwgaXNvbGF0ZSwg
d29ybGRUeXBlKGlzb2xhdGUpKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4T2JqZWN0KSA6
IDA7CisgICAgQXJyYXlCdWZmZXIqIG5hdGl2ZSA9IFY4QXJyYXlCdWZmZXI6Okhhc0luc3RhbmNl
KHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4QXJyYXlCdWZmZXI6OnRvTmF0aXZlKHY4T2JqZWN0KSA6
IDA7CiAgICAgaWYgKCFuYXRpdmUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjc0LDcg
KzI3NCw3IEBAIHN0YXRpYyBib29sIGdldEFycmF5QnVmZmVyVmlld0ltcGwoTlBPYmplY3QqIG9i
amVjdCwgV2ViQXJyYXlCdWZmZXJWaWV3KiBhcnJheUJ1CiAKICAgICBWOE5QT2JqZWN0KiB2OE5Q
T2JqZWN0ID0gcmVpbnRlcnByZXRfY2FzdDxWOE5QT2JqZWN0Kj4ob2JqZWN0KTsKICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3Q+IHY4T2JqZWN0KHY4TlBPYmplY3QtPnY4T2JqZWN0KTsKLSAgICBB
cnJheUJ1ZmZlclZpZXcqIG5hdGl2ZSA9IFY4QXJyYXlCdWZmZXJWaWV3OjpIYXNJbnN0YW5jZSh2
OE9iamVjdCwgaXNvbGF0ZSwgd29ybGRUeXBlKGlzb2xhdGUpKSA/IFY4QXJyYXlCdWZmZXJWaWV3
Ojp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOworICAgIEFycmF5QnVmZmVyVmlldyogbmF0aXZlID0g
VjhBcnJheUJ1ZmZlclZpZXc6Okhhc0luc3RhbmNlKHY4T2JqZWN0LCBpc29sYXRlKSA/IFY4QXJy
YXlCdWZmZXJWaWV3Ojp0b05hdGl2ZSh2OE9iamVjdCkgOiAwOwogICAgIGlmICghbmF0aXZlKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAK
</data>

          </attachment>
      

    </bug>

</bugzilla>