<?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>112136</bug_id>
          
          <creation_ts>2013-03-12 05:16:12 -0700</creation_ts>
          <short_desc>[V8] Move the GetRawTemplate and HasInstance logic from generated bindings to V8PerIsolateData</short_desc>
          <delta_ts>2013-03-12 06:04:25 -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="Marja Hölttä">marja</reporter>
          <assigned_to name="Marja Hölttä">marja</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dcarney</cc>
    
    <cc>dgrogan</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jsbell</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>853363</commentid>
    <comment_count>0</comment_count>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 05:16:12 -0700</bug_when>
    <thetext>When templates for main world and non-main worlds will be separated, HasInstance logic will be a bit ugly: We cannot determine the world type on the fly, because during GC there is no entered context, and HasInstance is called during GC. So we need to check against templates from all the worlds. It&apos;s cleaner if that logic is in V8PerIsolateData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853369</commentid>
    <comment_count>1</comment_count>
      <attachid>192715</attachid>
    <who name="Marja Hölttä">marja</who>
    <bug_when>2013-03-12 05:25:29 -0700</bug_when>
    <thetext>Created attachment 192715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853377</commentid>
    <comment_count>2</comment_count>
      <attachid>192715</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2013-03-12 05:31:28 -0700</bug_when>
    <thetext>Comment on attachment 192715
Patch

It&apos;s anyway a good idea to factor out duplicated logic from auto-generated code to V8Binding.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853397</commentid>
    <comment_count>3</comment_count>
      <attachid>192715</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 06:04:20 -0700</bug_when>
    <thetext>Comment on attachment 192715
Patch

Clearing flags on attachment: 192715

Committed r145538: &lt;http://trac.webkit.org/changeset/145538&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>853398</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-03-12 06:04:25 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>192715</attachid>
            <date>2013-03-12 05:25:29 -0700</date>
            <delta_ts>2013-03-12 06:04:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-112136-20130312132127.patch</filename>
            <type>text/plain</type>
            <size>74726</size>
            <attacher name="Marja Hölttä">marja</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQ1NTExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTdhODVlYjM5MDBmYmE0
YjY2NGQ1NjM2YTFlZTcxMzFkMTEwMzU5Zi4uYjcxNzRkNDhjNjc1ZDUxY2M3OTgwYWNkYWRlNWQ3
M2EzYzkyNWQ3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDExNCBAQAogMjAxMy0wMy0xMiAgTWFy
amEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CiAKKyAgICAgICAgW1Y4XSBNb3ZlIHRo
ZSBHZXRSYXdUZW1wbGF0ZSBhbmQgSGFzSW5zdGFuY2UgbG9naWMgZnJvbSBnZW5lcmF0ZWQgYmlu
ZGluZ3MgdG8gVjhQZXJJc29sYXRlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTEyMTM2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgV2hlbiB0ZW1wbGF0ZXMgZm9yIG1haW4gd29ybGQgYW5kIG5vbi1t
YWluIHdvcmxkcyB3aWxsIGJlIHNlcGFyYXRlZCAoYnVnCisgICAgICAgIDExMTcyNCksIEhhc0lu
c3RhbmNlIGxvZ2ljIHdpbGwgYmUgYSBiaXQgdWdseTogV2UgY2Fubm90IGRldGVybWluZSB0aGUK
KyAgICAgICAgd29ybGQgdHlwZSBvbiB0aGUgZmx5LCBiZWNhdXNlIGR1cmluZyBHQyB0aGVyZSBp
cyBubyBlbnRlcmVkIGNvbnRleHQsCisgICAgICAgIGFuZCBIYXNJbnN0YW5jZSBpcyBjYWxsZWQg
ZHVyaW5nIEdDLiBTbyB3ZSBuZWVkIHRvIGNoZWNrIGFnYWluc3QKKyAgICAgICAgdGVtcGxhdGVz
IGZyb20gYWxsIHRoZSB3b3JsZHMuIEl0J3MgY2xlYW5lciBpZiB0aGF0IGxvZ2ljIGlzIGluCisg
ICAgICAgIFY4UGVySXNvbGF0ZURhdGEuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChVcGRhdGVk
IGV4aXN0aW5nIGJpbmRpbmdzIHRlc3RzKS4KKworICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
Q29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAoR2VuZXJhdGVIZWFkZXIpOgorICAgICAgICAo
R2VuZXJhdGVEb21haW5TYWZlRnVuY3Rpb25HZXR0ZXIpOgorICAgICAgICAoR2VuZXJhdGVJbXBs
ZW1lbnRhdGlvbik6CisgICAgICAgIChDcmVhdGVDdXN0b21TaWduYXR1cmUpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RmxvYXQ2NEFycmF5OjpHZXRUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOEZs
b2F0NjRBcnJheTo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOEZsb2F0NjRBcnJheS5oOgorICAgICAgICAoVjhGbG9hdDY0QXJyYXkpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6VGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OnBvc3RNZXNz
YWdlQXR0ckdldHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVE
T01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RBY3RpdmVET01PYmpl
Y3Q6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEFjdGl2ZURPTU9iamVj
dDo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RBY3RpdmVET01PYmplY3QuaDoKKyAgICAgICAgKFY4VGVzdEFjdGl2ZURPTU9iamVjdCk6Cisg
ICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpHZXRUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6SGFzSW5z
dGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21O
YW1lZEdldHRlci5oOgorICAgICAgICAoVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhhc0luc3RhbmNlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5oOgorICAgICAgICAoVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcik6CisgICAgICAgICogYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29y
ZTo6VjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdEV2ZW50VGFyZ2V0OjpIYXNJbnN0YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0Lmg6CisgICAgICAgIChWOFRlc3RFdmVudFRhcmdl
dCk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RFeGNlcHRpb246OkdldFRlbXBsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4VGVzdEV4Y2VwdGlvbjo6SGFzSW5zdGFuY2UpOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uaDoKKyAgICAgICAgKFY4
VGVzdEV4Y2VwdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RJbnRlcmZhY2U6OkdldFRlbXBs
YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdEludGVyZmFjZTo6SGFzSW5zdGFuY2UpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaDoKKyAg
ICAgICAgKFY4VGVzdEludGVyZmFjZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6SGFzSW5zdGFuY2UpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
Lmg6CisgICAgICAgIChWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyKToKKyAgICAgICAgKiBi
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaDoK
KyAgICAgICAgKFY4VGVzdE5hbWVkQ29uc3RydWN0b3IpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5v
ZGU6OkdldFRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE5vZGU6Okhhc0luc3Rh
bmNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oOgor
ICAgICAgICAoVjhUZXN0Tm9kZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RPYmpUZW1w
bGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6OkdldFRlbXBsYXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouaDoKKyAgICAgICAgKFY4VGVzdE9iaik6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3Rv
cnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yczo6
R2V0VGVtcGxhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6SGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmg6CisgICAgICAgIChWOFRlc3RPdmVybG9hZGVk
Q29uc3RydWN0b3JzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6R2V0VGVtcGxhdGUpOgorICAgICAg
ICAoV2ViQ29yZTo6VjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjpIYXNJbnN0
YW5jZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oOgorICAgICAgICAoVjhUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0VHlwZWRlZnMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RUeXBlZGVmczo6R2V0VGVtcGxh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6VjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaDoKKyAgICAg
ICAgKFY4VGVzdFR5cGVkZWZzKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVE
YXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6VjhQZXJJc29sYXRlRGF0
YTo6aGFzSW5zdGFuY2UpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEu
aDoKKyAgICAgICAgKFY4UGVySXNvbGF0ZURhdGEpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlY4TG9jYXRpb246
OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6
cmVwbGFjZUF0dHJHZXR0ZXJDdXN0b20pOgorICAgICAgICAoV2ViQ29yZTo6VjhMb2NhdGlvbjo6
YXNzaWduQXR0ckdldHRlckN1c3RvbSk6CisKKzIwMTMtMDMtMTIgIE1hcmphIEjDtmx0dMOkICA8
bWFyamFAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFtWOF0gR2V0IHJpZCBvZiBmdW5jdGlvbi1s
ZXZlbCBzdGF0aWMgRnVuY3Rpb25UZW1wbGF0ZXMgaW4gZ2VuZXJhdGVkIGJpbmRpbmdzIGNvZGUK
ICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExMTk3MQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JWOC5wbSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtCmluZGV4IDhjMjU3YzllN2U4ZjZjYjYwNzAwYTZlMjhiYjY4NzA2MmEyOTIwOTguLmVmMjBm
OWZlZWQzY2Q0ZjNhNjI4NjcwOWZmNzA1NDU5ZjkzNmU5MmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0zNjEsNyArMzYx
LDYgQEAgRU5ECiAKICAgICBwdXNoKEBoZWFkZXJDb250ZW50LCA8PEVORCk7CiAgICAgc3RhdGlj
IGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6SXNvbGF0ZSopOwot
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0UmF3VGVt
cGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBlcldvcmxkVHlwZSk7
CiAgICAgc3RhdGljICR7bmF0aXZlVHlwZX0qIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVj
dD4gb2JqZWN0KQogICAgIHsKQEAgLTc4MSw3ICs3ODAsNyBAQCBzdWIgR2VuZXJhdGVEb21haW5T
YWZlRnVuY3Rpb25HZXR0ZXIKICAgICBteSAkdjhJbnRlcmZhY2VOYW1lID0gIlY4IiAuICRpbnRl
cmZhY2VOYW1lOwogICAgIG15ICRmdW5jTmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1l
OwogCi0gICAgbXkgJHNpZ25hdHVyZSA9ICJ2ODo6U2lnbmF0dXJlOjpOZXcoIiAuICR2OEludGVy
ZmFjZU5hbWUgLiAiOjpHZXRSYXdUZW1wbGF0ZShpbmZvLkdldElzb2xhdGUoKSkpIjsKKyAgICBt
eSAkc2lnbmF0dXJlID0gInY4OjpTaWduYXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3VGVtcGxhdGUoJiIgLiAkdjhJbnRlcmZhY2VOYW1lIC4g
Ijo6aW5mbykpIjsKICAgICBpZiAoJGZ1bmN0aW9uLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmli
dXRlcy0+eyJWOERvTm90Q2hlY2tTaWduYXR1cmUifSkgewogICAgICAgICAkc2lnbmF0dXJlID0g
InY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpIjsKICAgICB9CkBAIC03OTUsNyArNzk0LDggQEAg
c3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiAke2Z1bmNOYW1lfUF0dHJHZXR0ZXIodjg6Okxv
Y2FsPHY4OjpTdHJpbmc+IG5hbWUsIGMKICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGdldHRpbmcg
YSB1bmlxdWUgcG9pbnRlciB3aGljaCB3ZSBjYW4gcGFzcyB0byBwcml2YXRlVGVtcGxhdGUuCiAg
ICAgc3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICIke2Z1bmNO
YW1lfVByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJyZW50V29ybGRU
eXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCAkbmV3VGVtcGxhdGVQYXJhbXMpOworICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNv
bGF0ZSgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0
ZVRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2
YXRlVGVtcGxhdGVVbmlxdWVLZXksICRuZXdUZW1wbGF0ZVBhcmFtcyk7CiAKICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8uVGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3Rv
dHlwZUNoYWluKCR7djhJbnRlcmZhY2VOYW1lfTo6R2V0VGVtcGxhdGUoaW5mby5HZXRJc29sYXRl
KCksIGN1cnJlbnRXb3JsZFR5cGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHkoKSkgewpAQCAt
ODA2LDcgKzgwNiw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gJHtmdW5jTmFtZX1B
dHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjCiAgICAgJHtpbnRlcmZhY2VO
YW1lfSogaW1wID0gJHt2OEludGVyZmFjZU5hbWV9Ojp0b05hdGl2ZShob2xkZXIpOwogICAgIGlm
ICghQmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRl
OjppbnN0YW5jZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsK
ICAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gIiR7
ZnVuY05hbWV9U2hhcmVkVGVtcGxhdGUiOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlu
Zm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFy
ZWRUZW1wbGF0ZVVuaXF1ZUtleSwgJG5ld1RlbXBsYXRlUGFyYW1zKTsKKyAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJp
dmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwg
JG5ld1RlbXBsYXRlUGFyYW1zKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRG
dW5jdGlvbigpOwogICAgIH0KIApAQCAtMzE1MiwxOSArMzE1Miw2IEBAIEVORAogICAgIHJldHVy
biBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2OElu
dGVyZmFjZU5hbWV9OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAg
ICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0g
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVl
OwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUp
OwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Ci0gICAgcmV0
dXJuIHRlbXBsOwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gJHt2
OEludGVyZmFjZU5hbWV9OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBl
cldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4
UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC0zMTc0LDE0ICszMTYxLDE0IEBAIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiAke3Y4SW50ZXJmYWNlTmFtZX06Okdl
dFRlbXBsYXRlKHY4OjpJc29sYXRlCiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAg
ICAgQ29uZmlndXJlJHt2OEludGVyZmFjZU5hbWV9VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNv
bGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgICAgIENvbmZpZ3VyZSR7djhJbnRlcmZh
Y2VOYW1lfVRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRU
eXBlKTsKICAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJl
dHVybiB0ZW1wbDsKIH0KIAogYm9vbCAke3Y4SW50ZXJmYWNlTmFtZX06Okhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAg
cmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAg
cmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZv
LCB2YWx1ZSk7CiB9CiAKIEVORApAQCAtNDEwMiw3ICs0MDg5LDcgQEAgc3ViIENyZWF0ZUN1c3Rv
bVNpZ25hdHVyZQogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAg
IEFkZFRvSW1wbEluY2x1ZGVzKEdldFY4SGVhZGVyTmFtZSgkdHlwZSkpOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOCR7dHlwZX06OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpIjsKKyAgICAgICAgICAgICAgICAkcmVzdWx0IC49ICJWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjgke3R5cGV9OjppbmZvKSI7CiAgICAg
ICAgICAgICB9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAkcmVzdWx0IC49ICJ2ODo6
SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4
IGZmM2RlNTZmYTg1ODRmNTdlNGY4NjgyOWY5ZWQzMjZlMzgyZGVlYjAuLmRkNzZlYWY0MzEyMjdi
ZjcwZjFjMzUxNDFhNzYzOWU5ZjZkYWEzN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTUz
LDcgKzE1Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2ln
bmF0dXJlICdmb28nCiAgICAgY29uc3QgaW50IGZvb0FyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4RmxvYXQzMkFycmF5
OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGZvb0FyZ3ZbZm9vQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNv
bGF0ZSktPnJhd1RlbXBsYXRlKCZWOEZsb2F0MzJBcnJheTo6aW5mbykgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IGZvb1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBmb29BcmdjLCBmb29Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgiZm9vIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoRmxvYXQ2NEFycmF5VjhJbnRlcm5h
bDo6Zm9vTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGZvb1NpZ25hdHVyZSkpOwogCkBA
IC0xNjIsMTkgKzE2Miw2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgcmV0dXJuIGRl
c2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOEZsb2F0NjRB
cnJheTo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKLQotICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwotICAgIHJldHVybiB0ZW1w
bDsKLX0KLQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4RmxvYXQ2NEFy
cmF5OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CkBAIC0xODQsMTQgKzE3MSwxNCBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhGbG9hdDY0QXJyYXk6OkdldFRlbXBsYXRlKHY4OjpJc29s
YXRlKiBpcwogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
RmxvYXQ2NEFycmF5VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdv
cmxkVHlwZSk7CisgICAgICAgIENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUoZGF0YS0+
cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwogICAgIGRhdGEtPnRlbXBs
YXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29s
IFY4RmxvYXQ2NEFycmF5OjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUs
IHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJh
eS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFy
cmF5LmgKaW5kZXggYzA4NDQ4M2VhY2QzZmE4MWY2ZGIwZTE0MjI3MzJmY2NkNzFmYTZhZS4uYWZl
Mjg5MzM4ODIwZWYxMDQ3OTkzMGFkNTBjZTNmMGUyM2Q1MTI2ZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmgK
QEAgLTM2LDcgKzM2LDYgQEAgY2xhc3MgVjhGbG9hdDY0QXJyYXkgewogcHVibGljOgogICAgIHN0
YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gVjhBcnJheUJ1ZmZlclZpZXc6
Omhhc0RlcGVuZGVudExpZmV0aW1lOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpI
YW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAg
ICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0
ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBGbG9hdDY0QXJy
YXkqIHRvTmF0aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXggN2M2ZWFlZjczNmM5YWQ1ZjA0ZWY5N2Y3
MmJkYjA4YTJlN2FkOTc4OC4uYWUzYTg1MWU0NDljZDAwMmY5ZDAwY2I2ODg2OWE2Y2VhMmNkMTY4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTEzMSw3ICsxMzEsOCBA
QCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBvc3RNZXNzYWdlQXR0ckdldHRlcih2ODo6
TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIC8vIFRoaXMgaXMgb25seSBmb3IgZ2V0dGlu
ZyBhIHVuaXF1ZSBwb2ludGVyIHdoaWNoIHdlIGNhbiBwYXNzIHRvIHByaXZhdGVUZW1wbGF0ZS4K
ICAgICBzdGF0aWMgY29uc3QgY2hhciogcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5ID0gInBvc3RN
ZXNzYWdlUHJpdmF0ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3Js
ZFR5cGUgPSB3b3JsZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5
cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVy
bmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6U2lnbmF0
dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZShpbmZvLkdldElz
b2xhdGUoKSkpKTsKKyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJy
ZW50V29ybGRUeXBlLCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBUZXN0QWN0aXZlRE9NT2Jq
ZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwg
djg6OlNpZ25hdHVyZTo6TmV3KFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRl
KCkpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbmZvKSkpOwogCiAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0PiBob2xkZXIgPSBpbmZvLlRoaXMoKS0+RmluZEluc3RhbmNl
SW5Qcm90b3R5cGVDaGFpbihWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKGluZm8u
R2V0SXNvbGF0ZSgpLCBjdXJyZW50V29ybGRUeXBlKSk7CiAgICAgaWYgKGhvbGRlci5Jc0VtcHR5
KCkpIHsKQEAgLTE0Miw3ICsxNDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHBv
c3RNZXNzYWdlQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgYwogICAgIFRl
c3RBY3RpdmVET01PYmplY3QqIGltcCA9IFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6dG9OYXRpdmUo
aG9sZGVyKTsKICAgICBpZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0Zy
YW1lKEJpbmRpbmdTdGF0ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNl
Y3VyaXR5RXJyb3IpKSB7CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0
ZVVuaXF1ZUtleSA9ICJwb3N0TWVzc2FnZVNoYXJlZFRlbXBsYXRlIjsKLSAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50
V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFRlc3RBY3RpdmVET01PYmplY3RW
OEludGVybmFsOjpwb3N0TWVzc2FnZU1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6
U2lnbmF0dXJlOjpOZXcoVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjpHZXRSYXdUZW1wbGF0ZShpbmZv
LkdldElzb2xhdGUoKSkpKTsKKyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IHNoYXJlZFRlbXBsYXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3Js
ZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSwgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50
ZXJuYWw6OnBvc3RNZXNzYWdlTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHY4OjpTaWdu
YXR1cmU6Ok5ldyhWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKS0+cmF3
VGVtcGxhdGUoJlY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW5mbykpKTsKICAgICAgICAgcmV0dXJu
IHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KIApAQCAtMTk0LDcgKzE5NSw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhCiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdl
eGNpdGluZ0Z1bmN0aW9uJwogICAgIGNvbnN0IGludCBleGNpdGluZ0Z1bmN0aW9uQXJnYyA9IDE7
Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5jdGlvbkFy
Z3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOE5vZGU6OkdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZXhjaXRpbmdGdW5j
dGlvbkFyZ3ZbZXhjaXRpbmdGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9t
KGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8
djg6OlNpZ25hdHVyZT4gZXhjaXRpbmdGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6
Ok5ldyhkZXNjLCBleGNpdGluZ0Z1bmN0aW9uQXJnYywgZXhjaXRpbmdGdW5jdGlvbkFyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJleGNpdGluZ0Z1bmN0aW9uIiks
IHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6
OmV4Y2l0aW5nRnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZXhjaXRpbmdG
dW5jdGlvblNpZ25hdHVyZSkpOwogCkBAIC0yMDYsMTkgKzIwNyw2IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0VGVtcGxhCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFJhd1RlbXBsYXRlKHY4OjpJ
c29sYXRlKiBpc29sYXRlKQotewotICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRl
TWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8p
OwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAg
ICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2Nv
cGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3Jl
YXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKLSAgICByZXR1cm4gdGVtcGw7Ci19Ci0KIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4
OjpJc29sYXRlKiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBW
OFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsK
QEAgLTIyOCwxNCArMjE2LDE0IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBWOFRlc3RBY3RpdmVET01PYmplY3Q6OkdldFRlbXBsYXRlKHY4OjpJc29sCiAKICAgICB2ODo6
SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2JqZWN0
VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgICAgIENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKICAgICBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9vbCBWOFRl
c3RBY3RpdmVET01PYmplY3Q6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlz
b2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2
ZURPTU9iamVjdC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEFjdGl2ZURPTU9iamVjdC5oCmluZGV4IGEyYTQ5MmUwMjU1NmVjMDRiNWYwNDhhMWY3NzJi
ZWViOGJjOWE2OWMuLmQyMzViYzU0NTQxYWQ2OTM0YjhhNjdmOTAwOWRmODAwYTM5YzhlN2QgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RB
Y3RpdmVET01PYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNE
ZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4
OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7
CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0QWN0
aXZlRE9NT2JqZWN0KiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA0MzhiMDE4NThh
MDE0Y2I1NjMzZmQyNTQ5NGYxOGY4MmQxNTFhNWUyLi40NjAxNDhjMmI0YjA2ZmIzZWZiYTU1NWI5
MzJlYjhmZDhkZTQxYzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAK
QEAgLTExMiwxOSArMTEyLDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXAKICAgICByZXR1cm4g
ZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsK
LSAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29s
YXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9
IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZh
bHVlOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xh
dGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Ci0gICAg
cmV0dXJuIHRlbXBsOwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRl
LCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBk
YXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTEzNCwxNCArMTIxLDE0
IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RDdXN0b21OYW1l
ZEdldHRlcjo6R2V0VGVtcGxhdGUodjg6OklzCiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxl
U2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0K
LSAgICAgICAgQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyks
IGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8s
IHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0Q3VzdG9tTmFtZWRH
ZXR0ZXI6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xh
dGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJ
bnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVy
LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuaAppbmRleCBlNzRhYTZhOWNjOWY1MDdmYjM3OTQ4NWQwMjk2NjEyYjhmMGQ4
MWRmLi5lMmYxZDVhNGVkOTRiYTkwY2U4ZTViMThiODlhZWUwZDc3OWRkMDcxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuaApAQCAtMzUsNyArMzUsNiBAQCBjbGFzcyBWOFRlc3RD
dXN0b21OYW1lZEdldHRlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVw
ZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwog
ICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxh
dGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAg
ICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNDIwNDhkOWVhZTUy
YTJlMDNmMzRhYjJlNmNlNTc3NmMwYzE1NzE2NS4uZTZjODk4ZTEwMDg0NjQzYjUxOTIxMDk3Y2Qy
NGQyNzZlZjcyMDcxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAt
MTU0LDE5ICsxNTQsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbAogICAgIHJldHVybiBkZXNj
OwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvcjo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAg
VjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7
Ci0gICAgVjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRh
LT5yYXdUZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsK
LQotICAgIHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsK
LSAgICBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwotICAgIHJldHVy
biB0ZW1wbDsKLX0KLQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dEV2ZW50Q29uc3RydWN0b3I6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTE3NiwxNCArMTYzLDE0IEBAIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVudENvbnN0cnVjdG9y
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvCiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAg
ICAgQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsYXRlKEdldFJhd1RlbXBsYXRl
KGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgICAgICBDb25maWd1cmVWOFRlc3RF
dmVudENvbnN0cnVjdG9yVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmluZm8pLCBpc29sYXRl
LCB3b3JsZFR5cGUpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7
CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6Okhh
c0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xh
dGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2
YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0lu
c3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9y
LmgKaW5kZXggODc2MjI4NGU2MjcyMmUzZjI0MDVmZmNjNGVkOTNjMzQ3ZDgwMGQxMS4uNmYxN2Y2
NmQ0Mzg5ZmVjZjJiOWI3OGNjOWI5YjBiNDhjM2JjNzQ4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRD
b25zdHJ1Y3Rvci5oCkBAIC0zNiw3ICszNiw2IEBAIGNsYXNzIFY4VGVzdEV2ZW50Q29uc3RydWN0
b3IgewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1l
ID0gZmFsc2U7CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFs
dWU+LCB2ODo6SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiwgV3JhcHBlcldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RFdmVudENvbnN0cnVjdG9yKiB0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCBmMzdiMjU1YmVkODZjNGQzNWViYWE3Njg0NzViYTlkM2Y4YmFh
NjcxLi44NDg1ZjA5NzI4MTU3NjBlMjEzNWM3Y2VkMmNiNGExM2JkNjc5OThjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTE3OSw3ICsxNzksNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUodgogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnZGlzcGF0Y2hFdmVudCcKICAgICBjb25z
dCBpbnQgZGlzcGF0Y2hFdmVudEFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGRpc3BhdGNoRXZlbnRBcmd2W2Rpc3BhdGNoRXZlbnRBcmdjXSA9IHsgVjhFdmVu
dDo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBkaXNwYXRjaEV2ZW50QXJndltkaXNwYXRjaEV2ZW50QXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOEV2ZW50OjppbmZvKSB9
OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gZGlzcGF0Y2hFdmVudFNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBkaXNwYXRjaEV2ZW50QXJnYywgZGlzcGF0Y2hFdmVu
dEFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJkaXNwYXRjaEV2
ZW50IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5h
bDo6ZGlzcGF0Y2hFdmVudE1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2
ZW50U2lnbmF0dXJlKSk7CiAKQEAgLTE4OCwxOSArMTg4LDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBs
YXRlKHYKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdEV2ZW50VGFyZ2V0OjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSog
aXNvbGF0ZSkKLXsKLSAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0
YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRl
cmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBp
ZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVy
biByZXN1bHQtPnZhbHVlOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1Rl
bXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0
ZW1wbCk7Ci0gICAgcmV0dXJuIHRlbXBsOwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gVjhUZXN0RXZlbnRUYXJnZXQ6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBp
c29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVE
YXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTIxMCwxNCAr
MTk3LDE0IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RFdmVu
dFRhcmdldDo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqCiAKICAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xh
dGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBs
KTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0RXZlbnRUYXJnZXQ6Okhhc0lu
c3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUp
CiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1
ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3Rh
bmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIEV2ZW50VGFyZ2V0KiBWOFRlc3RFdmVudFRhcmdldDo6
dG9FdmVudFRhcmdldCh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmgKaW5kZXggN2MwNWFmM2Y1NDQ3MTAxMDc2OTk5MzhlMmEzYjU0NDA4MDRjMzUzZC4u
YWJhMmIzYTk0YjA5MzU2OTgyNzc1ZmU5NTgwZDE4MGE4NzdmYmVhNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgVjhUZXN0RXZlbnRUYXJnZXQgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RFdmVudFRhcmdldCogdG9OYXRpdmUodjg6Okhh
bmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRl
eCA3N2VmNjk1YTdjYmJjZTlmNWQ1NDllMDBlMDMyZTEzNzg2MDg2MDQxLi43YzAzMzE2NzM5YzQw
YzJkNmM3ZTE0YjJjODAxODgzYWZmNWQ4NjVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAt
MTAzLDE5ICsxMDMsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IENvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKHY4OgogICAgIHJldHVybiBkZXNj
OwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0
aW9uOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBWOFBlcklz
b2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBW
OFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3
VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1Rl
bXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwotCi0gICAg
djg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRh
dGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Ci0gICAgcmV0dXJuIHRlbXBs
OwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0
aW9uOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3
b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURh
dGE6OmZyb20oaXNvbGF0ZSk7CkBAIC0xMjUsMTQgKzExMiwxNCBAQCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0RXhjZXB0aW9uOjpHZXRUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4
VGVzdEV4Y2VwdGlvblRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3
b3JsZFR5cGUpOworICAgICAgICBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZShkYXRh
LT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVt
cGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJv
b2wgVjhUZXN0RXhjZXB0aW9uOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShp
c29sYXRlKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
eGNlcHRpb24uaAppbmRleCA0M2RkMjUzYjI4MmFkYTYxNjMyNWU4MGFkNzc4NjVhODdmYjkwNjRm
Li42NjYzYTI1OGMyNmRmMWEyMzMyNTM0ZTc4NGJkY2VhYzk4YjczOTRjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2Vw
dGlvbi5oCkBAIC0zNSw3ICszNSw2IEBAIGNsYXNzIFY4VGVzdEV4Y2VwdGlvbiB7CiBwdWJsaWM6
CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSBmYWxzZTsKICAg
ICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29s
YXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBH
ZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29y
bGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdEV4Y2VwdGlvbiogdG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCA0MzI5
YmYwZTg3ODdjOWFhMzEwMTM5ODYzZjMxZGZkOTFkMmFiOWM0Li4zZTIzM2Y3OTE4ZWM0YmQ1OWUx
NzIxYTAyZmZiYmQ0MjYwMWE1ZmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtNDM4LDcg
KzQzOCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29u
ZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0
dXJlICdzdXBwbGVtZW50YWxNZXRob2QyJwogICAgIGNvbnN0IGludCBzdXBwbGVtZW50YWxNZXRo
b2QyQXJnYyA9IDI7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxl
bWVudGFsTWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3VwcGxlbWVudGFs
TWV0aG9kMkFyZ3Zbc3VwcGxlbWVudGFsTWV0aG9kMkFyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdU
ZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3VwcGxlbWVudGFsTWV0aG9kMlNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBzdXBwbGVtZW50YWxNZXRob2QyQXJnYywgc3VwcGxlbWVudGFsTWV0aG9kMkFyZ3YpOwogI2lm
IEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHByb3RvLT5T
ZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdXBwbGVtZW50YWxNZXRob2QyIiksIHY4OjpGdW5j
dGlvblRlbXBsYXRlOjpOZXcoVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1l
dGhvZDJNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc3VwcGxlbWVudGFsTWV0aG9kMlNp
Z25hdHVyZSkpOwpAQCAtNDUzLDE5ICs0NTMsNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4Ogog
ICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkK
LXsKLSAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShp
c29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVz
dWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0
ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAgIHJldHVybiByZXN1bHQt
PnZhbHVlOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlz
b2xhdGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Ci0g
ICAgcmV0dXJuIHRlbXBsOwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3Jh
cHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9
IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBAIC00NzUsMTQgKzQ2MiwxNCBAQCB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0SW50ZXJmYWNlOjpHZXRU
ZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAg
ICAgIENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgICAgICBDb25maWd1cmVWOFRlc3RJbnRlcmZh
Y2VUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7
CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4g
dGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0SW50ZXJmYWNlOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBH
ZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAgIHJldHVybiBW
OFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUp
OwogfQogCiBBY3RpdmVET01PYmplY3QqIFY4VGVzdEludGVyZmFjZTo6dG9BY3RpdmVET01PYmpl
Y3Qodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmggYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmgKaW5kZXgg
YWEwOTM3YzI5MWY2YWQxNDc3MWE1MzQzZjgxYjkwYzYzODg1MWRhZi4uNWI3OGI4YWMzOTZjYmU4
YzRlNzc4M2EyZTIyNmFjZDYyZmNiMjljMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuaApAQCAtMzYsNyAr
MzYsNiBAQCBjbGFzcyBWOFRlc3RJbnRlcmZhY2UgewogcHVibGljOgogICAgIHN0YXRpYyBjb25z
dCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gdHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJ
bnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0
aWMgVGVzdEludGVyZmFjZSogdG9OYXRpdmUodjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3Qp
CiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmlu
ZGV4IDI1ZmZhNzE4OTY2NGRiZWYyNDQ2ZTY5MGZjNmI5ODJmZjRhNTVlZjcuLjI5MWRmY2U1OTdh
MWEwZDZmYzM5YzllYzUyZjE0MjE3MDYwODU1NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTExMiwxOSArMTEyLDYgQEAgc3RhdGljIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5
TGlzdExpc3RlbmUKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OkdldFJhd1RlbXBs
YXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEg
PSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6
OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZp
bmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQo
KSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUg
aGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRl
bXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVN
YXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKLSAgICByZXR1cm4gdGVtcGw7Ci19Ci0KIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVy
OjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3Js
ZFR5cGUpCiB7CiAgICAgVjhQZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSk7CkBAIC0xMzQsMTQgKzEyMSwxNCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6R2V0VGVtcGxh
dGUodgogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwg
aXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAgICAgQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclRlbXBsYXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29y
bGRUeXBlKTsKICAgICBkYXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAg
IHJldHVybiB0ZW1wbDsKIH0KIAogYm9vbCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2Uo
dmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVy
eUxpc3RMaXN0ZW5lci5oCmluZGV4IDk1NTU0Y2U2NzAzZmViMjU5NGRhZjJjYWFiNThiMmNjMTE2
NGQ4Y2MuLjRlMzY2Y2RmNTUxZjE2MTYwZjZkMWM3NjhlYjQxNDU5OWE3YzRjYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuaApAQCAtMzUsNyArMzUsNiBAQCBj
bGFzcyBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
Y29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29s
IEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBz
dGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRl
KHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAg
IHN0YXRpYyBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciogdG9OYXRpdmUodjg6OkhhbmRsZTx2
ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3Iu
Y3BwCmluZGV4IGQ2ODk0ZWU4NWRkOWNmMDdlMzJlYWVkNjAzOGE1ODM5M2QzN2MzNjEuLjExYWM5
Y2Y1YjVjN2E3ZmU2OTZiOTYzYjc3MTlkMjVhM2NhYTdiNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFt
ZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTE0MywxOSArMTQzLDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9y
VGVtcGwKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29s
YXRlKiBpc29sYXRlKQotewotICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xh
dGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAgIFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFw
OjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwot
ICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAg
cmV0dXJuIHJlc3VsdC0+dmFsdWU7Ci0KLSAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRl
UmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAgZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmlu
Zm8sIHRlbXBsKTsKLSAgICByZXR1cm4gdGVtcGw7Ci19Ci0KIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjpHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSogaXNvbGF0ZSwgV3JhcHBlcldvcmxkVHlwZSB3b3JsZFR5cGUpCiB7CiAgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7CkBA
IC0xNjUsMTQgKzE1MiwxNCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6R2V0VGVtcGxhdGUodjg6OklzbwogCiAgICAgdjg6Okhh
bmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JU
ZW1wbGF0ZShHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAg
ICAgICAgQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKGRhdGEtPnJhd1Rl
bXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKICAgICBkYXRhLT50ZW1wbGF0ZU1h
cCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsKIH0KIAogYm9vbCBWOFRl
c3ROYW1lZENvbnN0cnVjdG9yOjpIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUsIHY4OjpJc29sYXRlKiBpc29sYXRlKQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShp
c29sYXRlKS0+SGFzSW5zdGFuY2UodmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRh
Ojpmcm9tKGlzb2xhdGUpLT5oYXNJbnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiBBY3RpdmVE
T01PYmplY3QqIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OnRvQWN0aXZlRE9NT2JqZWN0KHY4OjpI
YW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmgK
aW5kZXggNGZkZTI1M2NlNTAwZjdhNmNhNGJhZGEwNDhlMmJmODMzYzc3YzY4My4uYTE5ZGJjNjZj
ZWNlNGM0ZThjNTNkZmEyNGRhZjc2NDU4NzA4YjU0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25z
dHJ1Y3Rvci5oCkBAIC00MSw3ICs0MSw2IEBAIGNsYXNzIFY4VGVzdE5hbWVkQ29uc3RydWN0b3Ig
ewogcHVibGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0g
dHJ1ZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4s
IHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqLCBX
cmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdE5hbWVkQ29uc3RydWN0b3IqIHRvTmF0
aXZlKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gb2JqZWN0KQogICAgIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRl
eCAzNTBmMGVjYzE1YzI1NjBhZGRjNTljZTA0YjZjODljOTk5MDVjNGFkLi4yMjZiMzQ0MzlmZTY2
ZmU1ODMwYWUyNzM1ZmYyM2Y5NDFlNWVjNGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBAIC0xMTAsMTkgKzEx
MCw2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmln
dXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3ROb2RlOjpHZXRSYXdUZW1w
bGF0ZSh2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRh
ID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRh
OjpUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5m
aW5kKCZpbmZvKTsKLSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5k
KCkpCi0gICAgICAgIHJldHVybiByZXN1bHQtPnZhbHVlOwotCi0gICAgdjg6OkhhbmRsZVNjb3Bl
IGhhbmRsZVNjb3BlOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0
ZW1wbCA9IGNyZWF0ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRl
TWFwKCkuYWRkKCZpbmZvLCB0ZW1wbCk7Ci0gICAgcmV0dXJuIHRlbXBsOwotfQotCiB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0Tm9kZTo6R2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRUeXBlKQogewogICAgIFY4
UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwpA
QCAtMTMyLDE0ICsxMTksMTQgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IFY4VGVzdE5vZGU6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXQKIAogICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPQotICAgICAgICBDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUoR2V0
UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CisgICAgICAgIENvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0Tm9kZTo6SGFzSW5zdGFuY2Uodjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlLCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKIHsKLSAgICBy
ZXR1cm4gR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSktPkhhc0luc3RhbmNlKHZhbHVlKTsKKyAgICBy
ZXR1cm4gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+aGFzSW5zdGFuY2UoJmluZm8s
IHZhbHVlKTsKIH0KIAogRXZlbnRUYXJnZXQqIFY4VGVzdE5vZGU6OnRvRXZlbnRUYXJnZXQodjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiBvYmplY3QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuaAppbmRleCAxNGZlZjU3MjlmMGVkOTkz
N2VhYjY2NTA3MDllYWY4ZTlmZTI2ZWE2Li45Nzg2MDM3NjMwNTk4ZjA2YjdmN2Y2NzRlZDMwMDMy
OGM1YWNhYzI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0Tm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgVjhUZXN0Tm9kZSB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50TGlmZXRpbWUgPSB0
cnVlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwg
djg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdy
YXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0Tm9kZSogdG9OYXRpdmUodjg6OkhhbmRs
ZTx2ODo6T2JqZWN0PiBvYmplY3QpCiAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1ZWI0MWU1ZDY2Y2Nh
ZGQ5MzU4Yjk5Mjk1YTExMTExZjFiZTM3NjhiLi4wYTRjYzMzM2EyOTIyMTM0YzNkODUyZmQzMmRk
Y2U2MjBiZjJjZDE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMzA2MiwzMSArMzA2MiwzMSBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKHY4OjpQZXJzaQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndm9pZE1ldGhvZFdp
dGhBcmdzJwogICAgIGNvbnN0IGludCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjID0gMzsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2W3Zv
aWRNZXRob2RXaXRoQXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PigpLCB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OkdldFJh
d1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gdm9pZE1ldGhvZFdpdGhBcmdzQXJndlt2b2lkTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUo
JlY4VGVzdE9iajo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZvaWRN
ZXRob2RXaXRoQXJnc1NpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2b2lkTWV0
aG9kV2l0aEFyZ3NBcmdjLCB2b2lkTWV0aG9kV2l0aEFyZ3NBcmd2KTsKICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidm9pZE1ldGhvZFdpdGhBcmdzIiksIHY4OjpGdW5jdGlv
blRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZvaWRNZXRob2RXaXRoQXJnc01ldGhv
ZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2b2lkTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2xvbmdNZXRob2RXaXRoQXJncycKICAgICBjb25z
dCBpbnQgbG9uZ01ldGhvZFdpdGhBcmdzQXJnYyA9IDM7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gbG9uZ01ldGhvZFdpdGhBcmdzQXJndltsb25nTWV0aG9kV2l0aEFyZ3NB
cmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRl
KSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGxvbmdNZXRob2RXaXRo
QXJnc0FyZ3ZbbG9uZ01ldGhvZFdpdGhBcmdzQXJnY10gPSB7IHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOFRlc3RPYmo6OmluZm8p
IH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBsb25nTWV0aG9kV2l0aEFyZ3NTaWdu
YXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbG9uZ01ldGhvZFdpdGhBcmdzQXJnYywg
bG9uZ01ldGhvZFdpdGhBcmdzQXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woImxvbmdNZXRob2RXaXRoQXJncyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRl
c3RPYmpWOEludGVybmFsOjpsb25nTWV0aG9kV2l0aEFyZ3NNZXRob2RDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgbG9uZ01ldGhvZFdpdGhBcmdzU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20g
U2lnbmF0dXJlICdvYmpNZXRob2RXaXRoQXJncycKICAgICBjb25zdCBpbnQgb2JqTWV0aG9kV2l0
aEFyZ3NBcmdjID0gMzsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBvYmpN
ZXRob2RXaXRoQXJnc0FyZ3Zbb2JqTWV0aG9kV2l0aEFyZ3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4o
KSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG9iak1ldGhvZFdpdGhBcmdzQXJndltvYmpNZXRob2RXaXRo
QXJnc0FyZ2NdID0geyB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5yYXdUZW1wbGF0ZSgmVjhUZXN0T2JqOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4gb2JqTWV0aG9kV2l0aEFyZ3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgb2JqTWV0aG9kV2l0aEFyZ3NBcmdjLCBvYmpNZXRob2RXaXRoQXJnc0FyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJvYmpNZXRob2RXaXRoQXJncyIp
LCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpvYmpNZXRob2RX
aXRoQXJnc01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBvYmpNZXRob2RXaXRoQXJnc1Np
Z25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnbWV0aG9kV2l0aFNlcXVlbmNl
QXJnJwogICAgIGNvbnN0IGludCBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmdjID0gMTsKLSAgICB2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2
W21ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+
OjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJn
QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZW
OHNlcXVlbmNlPFNjcmlwdFByb2ZpbGU+OjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNp
Z25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJtZXRob2RXaXRo
U2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2JqVjhJbnRlcm5h
bDo6bWV0aG9kV2l0aFNlcXVlbmNlQXJnTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1l
dGhvZFdpdGhTZXF1ZW5jZUFyZ1NpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVy
ZSAnbWV0aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cycKICAgICBjb25zdCBpbnQgbWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NB
cmd2W21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmdjXSA9IHsgdjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFRoYXRS
ZXF1aXJlc0FsbEFyZ3NBbmRUaHJvd3NBcmd2W21ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NBbmRU
aHJvd3NBcmdjXSA9IHsgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhQZXJJ
c29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4VGVzdE9iajo6aW5mbykg
fTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFy
Z3NBbmRUaHJvd3NTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYywgbWV0aG9kVGhh
dFJlcXVpcmVzQWxsQXJnc0FuZFRocm93c0FyZ2MsIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3NBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgibWV0
aG9kVGhhdFJlcXVpcmVzQWxsQXJnc0FuZFRocm93cyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KFRlc3RPYmpWOEludGVybmFsOjptZXRob2RUaGF0UmVxdWlyZXNBbGxBcmdzQW5kVGhyb3dz
TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG1ldGhvZFRoYXRSZXF1aXJlc0FsbEFyZ3NB
bmRUaHJvd3NTaWduYXR1cmUpKTsKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tBbmRPcHRpb25hbEFyZyIpLCB2ODo6RnVuY3Rpb25U
ZW1wbGF0ZTo6TmV3KFRlc3RPYmpWOEludGVybmFsOjpzdGF0aWNNZXRob2RXaXRoQ2FsbGJhY2tB
bmRPcHRpb25hbEFyZ01ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCB2ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4oKSkpOwpAQCAtMzEwNCw0MyArMzEwNCw0MyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4
OjpQZXJzaQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbicK
ICAgICBjb25zdCBpbnQgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MgPSAxOwotICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHN0cmluZ0FycmF5RnVuY3Rpb25Bcmd2W3N0cmluZ0Fy
cmF5RnVuY3Rpb25BcmdjXSA9IHsgVjhET01TdHJpbmdbXTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0
ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1
bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0aW9uQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6
OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOERPTVN0cmluZ1tdOjppbmZvKSB9OwogICAg
IHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSA9
IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBzdHJpbmdBcnJheUZ1bmN0aW9uQXJnYywgc3RyaW5n
QXJyYXlGdW5jdGlvbkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9s
KCJzdHJpbmdBcnJheUZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9i
alY4SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmlu
ZWQoKSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNp
Z25hdHVyZSAnZG9tU3RyaW5nTGlzdEZ1bmN0aW9uJwogICAgIGNvbnN0IGludCBkb21TdHJpbmdM
aXN0RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBkb21TdHJpbmdMaXN0RnVuY3Rpb25Bcmd2W2RvbVN0cmluZ0xpc3RGdW5jdGlvbkFyZ2NdID0g
eyBWOERPTVN0cmluZ0xpc3Q6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6Okhh
bmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZG9tU3RyaW5nTGlzdEZ1bmN0aW9uQXJndltkb21T
dHJpbmdMaXN0RnVuY3Rpb25BcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRl
KS0+cmF3VGVtcGxhdGUoJlY4RE9NU3RyaW5nTGlzdDo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+IGRvbVN0cmluZ0xpc3RGdW5jdGlvblNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBkb21TdHJpbmdMaXN0RnVuY3Rpb25BcmdjLCBkb21TdHJpbmdMaXN0
RnVuY3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgiZG9t
U3RyaW5nTGlzdEZ1bmN0aW9uIiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4
SW50ZXJuYWw6OmRvbVN0cmluZ0xpc3RGdW5jdGlvbk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCBkb21TdHJpbmdMaXN0RnVuY3Rpb25TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBT
aWduYXR1cmUgJ2NvbnZlcnQxJwogICAgIGNvbnN0IGludCBjb252ZXJ0MUFyZ2MgPSAxOwotICAg
IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQxQXJndltjb252ZXJ0MUFy
Z2NdID0geyBWOGE6OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDFBcmd2W2NvbnZlcnQxQXJnY10gPSB7IFY4UGVy
SXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBsYXRlKCZWOGE6OmluZm8pIH07CiAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBjb252ZXJ0MVNpZ25hdHVyZSA9IHY4OjpTaWdu
YXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0MUFyZ2MsIGNvbnZlcnQxQXJndik7CiAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woImNvbnZlcnQxIiksIHY4OjpGdW5jdGlvblRlbXBs
YXRlOjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OmNvbnZlcnQxTWV0aG9kQ2FsbGJhY2ssIHY4VW5k
ZWZpbmVkKCksIGNvbnZlcnQxU2lnbmF0dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICdjb252ZXJ0MicKICAgICBjb25zdCBpbnQgY29udmVydDJBcmdjID0gMTsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0MkFyZ3ZbY29udmVydDJBcmdjXSA9IHsg
VjhiOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IGNvbnZlcnQyQXJndltjb252ZXJ0MkFyZ2NdID0geyBWOFBlcklzb2xhdGVE
YXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhiOjppbmZvKSB9OwogICAgIHY4OjpI
YW5kbGU8djg6OlNpZ25hdHVyZT4gY29udmVydDJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpO
ZXcoZGVzYywgY29udmVydDJBcmdjLCBjb252ZXJ0MkFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6
OlN0cmluZzo6TmV3U3ltYm9sKCJjb252ZXJ0MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RPYmpWOEludGVybmFsOjpjb252ZXJ0Mk1ldGhvZENhbGxiYWNrLCB2OFVuZGVmaW5lZCgp
LCBjb252ZXJ0MlNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAnY29udmVy
dDQnCiAgICAgY29uc3QgaW50IGNvbnZlcnQ0QXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDRBcmd2W2NvbnZlcnQ0QXJnY10gPSB7IFY4ZDo6R2V0
UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBjb252ZXJ0NEFyZ3ZbY29udmVydDRBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJv
bShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4ZDo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4
OjpTaWduYXR1cmU+IGNvbnZlcnQ0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2Ms
IGNvbnZlcnQ0QXJnYywgY29udmVydDRBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgiY29udmVydDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0T2Jq
VjhJbnRlcm5hbDo6Y29udmVydDRNZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVy
dDRTaWduYXR1cmUpKTsKIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ2NvbnZlcnQ1JwogICAg
IGNvbnN0IGludCBjb252ZXJ0NUFyZ2MgPSAxOwotICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IGNvbnZlcnQ1QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBs
YXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29u
dmVydDVBcmd2W2NvbnZlcnQ1QXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0
ZSktPnJhd1RlbXBsYXRlKCZWOGU6OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0
dXJlPiBjb252ZXJ0NVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCBjb252ZXJ0
NUFyZ2MsIGNvbnZlcnQ1QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1i
b2woImNvbnZlcnQ1IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50ZXJu
YWw6OmNvbnZlcnQ1TWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ1U2lnbmF0
dXJlKSk7CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICd2YXJpYWRpY05vZGVNZXRob2QnCiAg
ICAgY29uc3QgaW50IHZhcmlhZGljTm9kZU1ldGhvZEFyZ2MgPSAyOwotICAgIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHZhcmlhZGljTm9kZU1ldGhvZEFyZ3ZbdmFyaWFkaWNOb2Rl
TWV0aG9kQXJnY10gPSB7IFY4Tm9kZTo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIFY4Tm9kZTo6
R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiB2YXJpYWRpY05vZGVNZXRob2RBcmd2W3ZhcmlhZGljTm9kZU1ldGhvZEFyZ2NdID0g
eyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhOb2RlOjpp
bmZvKSwgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxhdGUoJlY4Tm9k
ZTo6aW5mbykgfTsKICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHZhcmlhZGljTm9kZU1l
dGhvZFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjLCB2YXJpYWRpY05vZGVNZXRo
b2RBcmdjLCB2YXJpYWRpY05vZGVNZXRob2RBcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgidmFyaWFkaWNOb2RlTWV0aG9kIiksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoVGVzdE9ialY4SW50ZXJuYWw6OnZhcmlhZGljTm9kZU1ldGhvZE1ldGhvZENhbGxiYWNr
LCB2OFVuZGVmaW5lZCgpLCB2YXJpYWRpY05vZGVNZXRob2RTaWduYXR1cmUpKTsKICAgICBWOERP
TUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBWOFRl
c3RPYmpDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVjhUZXN0T2JqQ29uc3RzKSwgaXNvbGF0ZSk7
CkBAIC0zMTUwLDE5ICszMTUwLDYgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICByZXR1
cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVz
dE9iajo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKLQotICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwotICAgIHJldHVybiB0ZW1w
bDsKLX0KLQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE9iajo6
R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUsIFdyYXBwZXJXb3JsZFR5cGUgd29ybGRU
eXBlKQogewogICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpm
cm9tKGlzb2xhdGUpOwpAQCAtMzE3MiwxNCArMzE1OSwxNCBAQCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T2JqOjpHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSogaXNv
bGF0ZQogCiAgICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3BlOwogICAgIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9Ci0gICAgICAgIENvbmZpZ3VyZVY4VGVz
dE9ialRlbXBsYXRlKEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUp
OworICAgICAgICBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgm
aW5mbyksIGlzb2xhdGUsIHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQo
JmluZm8sIHRlbXBsKTsKICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0T2JqOjpI
YXNJbnN0YW5jZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFsdWUsIHY4OjpJc29sYXRlKiBpc29s
YXRlKQogewotICAgIHJldHVybiBHZXRSYXdUZW1wbGF0ZShpc29sYXRlKS0+SGFzSW5zdGFuY2Uo
dmFsdWUpOworICAgIHJldHVybiBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5oYXNJ
bnN0YW5jZSgmaW5mbywgdmFsdWUpOwogfQogCiB2b2lkIFY4VGVzdE9iajo6aW5zdGFsbFBlckNv
bnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2UsIFRlc3RPYmoq
IGltcGwsIHY4OjpJc29sYXRlKiBpc29sYXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5oCmluZGV4IDEwZmJiMmZkMzlhODQ5Y2Rm
MTYzNjA5OWRiOWViOWNjM2JlMTI0NWIuLmFmZGY3NjdmYmViY2ZlMzU3ZmUzZTZkMWY5M2M0ODA3
MWIyZDkwNWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RPYmouaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmgKQEAgLTM1LDcgKzM1LDYgQEAgY2xhc3MgVjhUZXN0T2JqIHsKIHB1
YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRMaWZldGltZSA9IGZhbHNl
OwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiwgdjg6
Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6SXNvbGF0ZSosIFdyYXBw
ZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0T2JqKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENv
bnN0cnVjdG9ycy5jcHAKaW5kZXggMjU1Mzc5NzRlNzljN2Y1NTU2MzFjMmEyMDliZjcwMWEzOWFl
YTIzOS4uMGQ4MDU5OWJkOWQzOTRmZGEwMDgzZjgxZjkxZWMzZGNmYjRkMzI1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmNwcApAQCAtMTY0LDE5ICsxNjQs
NiBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3Vy
ZVY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcgogICAgIHJldHVybiBkZXNjOwogfQogCi12ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVj
dG9yczo6R2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzb2xhdGUpCi17Ci0gICAgVjhQZXJJ
c29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSk7Ci0gICAg
VjhQZXJJc29sYXRlRGF0YTo6VGVtcGxhdGVNYXA6Oml0ZXJhdG9yIHJlc3VsdCA9IGRhdGEtPnJh
d1RlbXBsYXRlTWFwKCkuZmluZCgmaW5mbyk7Ci0gICAgaWYgKHJlc3VsdCAhPSBkYXRhLT5yYXdU
ZW1wbGF0ZU1hcCgpLmVuZCgpKQotICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKLQotICAg
IHY4OjpIYW5kbGVTY29wZSBoYW5kbGVTY29wZTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShpc29sYXRlKTsKLSAgICBk
YXRhLT5yYXdUZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwotICAgIHJldHVybiB0ZW1w
bDsKLX0KLQogdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdE92ZXJs
b2FkZWRDb25zdHJ1Y3RvcnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlLCBXcmFw
cGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0g
VjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTE4NiwxNCArMTczLDE0IEBAIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RPdmVybG9hZGVkQ29uc3Ry
dWN0b3JzOjpHZXRUZW1wbGF0ZSh2CiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0KLSAgICAg
ICAgQ29uZmlndXJlVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9yc1RlbXBsYXRlKEdldFJhd1Rl
bXBsYXRlKGlzb2xhdGUpLCBpc29sYXRlLCB3b3JsZFR5cGUpOworICAgICAgICBDb25maWd1cmVW
OFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzVGVtcGxhdGUoZGF0YS0+cmF3VGVtcGxhdGUoJmlu
Zm8pLCBpc29sYXRlLCB3b3JsZFR5cGUpOwogICAgIGRhdGEtPnRlbXBsYXRlTWFwKCkuYWRkKCZp
bmZvLCB0ZW1wbCk7CiAgICAgcmV0dXJuIHRlbXBsOwogfQogCiBib29sIFY4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnM6Okhhc0luc3RhbmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwg
djg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xh
dGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZy
b20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE92ZXJsb2Fk
ZWRDb25zdHJ1Y3RvcnMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzLmgKaW5kZXggNDlkZTZiMDg5NDlmNTFkZmFj
ZTkyYjU2Mzc1MjU0YTU2ZDVlMzM2OC4uYWU1MjEwMTJkODljYjdmOWVjMGQ1YjAyNGM5ZDVhZWYx
MGRlNzQ0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T3ZlcmxvYWRlZENvbnN0cnVjdG9ycy5oCkBA
IC0zNSw3ICszNSw2IEBAIGNsYXNzIFY4VGVzdE92ZXJsb2FkZWRDb25zdHJ1Y3RvcnMgewogcHVi
bGljOgogICAgIHN0YXRpYyBjb25zdCBib29sIGhhc0RlcGVuZGVudExpZmV0aW1lID0gZmFsc2U7
CiAgICAgc3RhdGljIGJvb2wgSGFzSW5zdGFuY2Uodjg6OkhhbmRsZTx2ODo6VmFsdWU+LCB2ODo6
SXNvbGF0ZSopOwotICAgIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gR2V0UmF3VGVtcGxhdGUodjg6Oklzb2xhdGUqKTsKICAgICBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiwgV3JhcHBl
cldvcmxkVHlwZSk7CiAgICAgc3RhdGljIFRlc3RPdmVybG9hZGVkQ29uc3RydWN0b3JzKiB0b05h
dGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmluZGV4IGNh
ZjFiYjQ3ODhhMjI2N2YyYTFlZjQ2NDFjOThkZjAzMmJmYmJmMjkuLjcwZGZjYTdiMjliYmQ2M2Jj
NTUzYjIzODYzNWJkZjExMTcyYTQ2NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RT
ZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0zMjksMTkgKzMyOSw2IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlCiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKLXY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2U6OkdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29sYXRlKQotewotICAgIFY4UGVy
SXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpOwotICAg
IFY4UGVySXNvbGF0ZURhdGE6OlRlbXBsYXRlTWFwOjppdGVyYXRvciByZXN1bHQgPSBkYXRhLT5y
YXdUZW1wbGF0ZU1hcCgpLmZpbmQoJmluZm8pOwotICAgIGlmIChyZXN1bHQgIT0gZGF0YS0+cmF3
VGVtcGxhdGVNYXAoKS5lbmQoKSkKLSAgICAgICAgcmV0dXJuIHJlc3VsdC0+dmFsdWU7Ci0KLSAg
ICB2ODo6SGFuZGxlU2NvcGUgaGFuZGxlU2NvcGU7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IHRlbXBsID0gY3JlYXRlUmF3VGVtcGxhdGUoaXNvbGF0ZSk7Ci0gICAg
ZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsKLSAgICByZXR1cm4gdGVt
cGw7Ci19Ci0KIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRlKiBpc29s
YXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xhdGVEYXRh
KiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTM1MSwxNCArMzM4
LDE0IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OkdldFRlCiAKICAgICB2ODo6SGFuZGxlU2NvcGUgaGFu
ZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHRlbXBs
ID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VGVtcGxhdGUoR2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSksIGlzb2xhdGUsIHdvcmxkVHlwZSk7Cisg
ICAgICAgIENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBs
YXRlKGRhdGEtPnJhd1RlbXBsYXRlKCZpbmZvKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKICAgICBk
YXRhLT50ZW1wbGF0ZU1hcCgpLmFkZCgmaW5mbywgdGVtcGwpOwogICAgIHJldHVybiB0ZW1wbDsK
IH0KIAogYm9vbCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6Okhhc0luc3Rh
bmNlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7
Ci0gICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7
CisgICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNl
KCZpbmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5o
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5oCmluZGV4IDhiY2Y1MzZkMTZhMjhkMzU4NGUyZjI2MmI2
MjNkYzg5M2JjZTc0MTUuLjBhNWZhM2YyMjQzNWI2OWE0MDdiNzNjOTk3MWU3YjUzNmUxODEwMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlLmgKQEAgLTM2LDcgKzM2LDYgQEAgY2xhc3MgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgYm9vbCBoYXNEZXBlbmRlbnRM
aWZldGltZSA9IGZhbHNlOwogICAgIHN0YXRpYyBib29sIEhhc0luc3RhbmNlKHY4OjpIYW5kbGU8
djg6OlZhbHVlPiwgdjg6Oklzb2xhdGUqKTsKLSAgICBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IEdldFJhd1RlbXBsYXRlKHY4OjpJc29sYXRlKik7CiAgICAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRUZW1wbGF0ZSh2ODo6
SXNvbGF0ZSosIFdyYXBwZXJXb3JsZFR5cGUpOwogICAgIHN0YXRpYyBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlKiB0b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVj
dCkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmNwcAppbmRleCA2MTI5ZDExZDcxM2YyZGE5NDdlZThj
Y2FhMDIxZjliNTEyNzUzMTI3Li5lNjc3ZWJjOTU4MWMwYjNkNWMzMmU5NDgwYWNmNTg3M2ZmOTU2
MDYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0VHlwZWRlZnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RUeXBlZGVmcy5jcHAKQEAgLTU1MSwyNSArNTUxLDI1IEBAIHN0YXRpYyB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0VHlwZWRl
ZnNUZW1wbGF0ZSh2ODo6CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdtZXRob2RXaXRoU2Vx
dWVuY2VBcmcnCiAgICAgY29uc3QgaW50IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2MgPSAxOwot
ICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1ldGhvZFdpdGhTZXF1ZW5jZUFy
Z0FyZ3ZbbWV0aG9kV2l0aFNlcXVlbmNlQXJnQXJnY10gPSB7IFY4c2VxdWVuY2U8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkgfTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtZXRob2RXaXRoU2VxdWVuY2VBcmdBcmd2W21ldGhvZFdp
dGhTZXF1ZW5jZUFyZ0FyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xhdGUpLT5y
YXdUZW1wbGF0ZSgmVjhzZXF1ZW5jZTxTZXJpYWxpemVkU2NyaXB0VmFsdWU+OjppbmZvKSB9Owog
ICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0
dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ2Ms
IG1ldGhvZFdpdGhTZXF1ZW5jZUFyZ0FyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJtZXRob2RXaXRoU2VxdWVuY2VBcmciKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6
Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjptZXRob2RXaXRoU2VxdWVuY2VBcmdNZXRob2RD
YWxsYmFjaywgdjhVbmRlZmluZWQoKSwgbWV0aG9kV2l0aFNlcXVlbmNlQXJnU2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJlICdudWxsYWJsZUFycmF5QXJnJwogICAgIGNvbnN0
IGludCBudWxsYWJsZUFycmF5QXJnQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gbnVsbGFibGVBcnJheUFyZ0FyZ3ZbbnVsbGFibGVBcnJheUFyZ0FyZ2NdID0g
eyBWOERPTVN0cmluZ1tdOjpHZXRSYXdUZW1wbGF0ZShpc29sYXRlKSB9OworICAgIHY4OjpIYW5k
bGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG51bGxhYmxlQXJyYXlBcmdBcmd2W251bGxhYmxlQXJy
YXlBcmdBcmdjXSA9IHsgVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cmF3VGVtcGxh
dGUoJlY4RE9NU3RyaW5nW106OmluZm8pIH07CiAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJl
PiBudWxsYWJsZUFycmF5QXJnU2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MsIG51
bGxhYmxlQXJyYXlBcmdBcmdjLCBudWxsYWJsZUFycmF5QXJnQXJndik7CiAgICAgcHJvdG8tPlNl
dCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woIm51bGxhYmxlQXJyYXlBcmciKSwgdjg6OkZ1bmN0aW9u
VGVtcGxhdGU6Ok5ldyhUZXN0VHlwZWRlZnNWOEludGVybmFsOjpudWxsYWJsZUFycmF5QXJnTWV0
aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIG51bGxhYmxlQXJyYXlBcmdTaWduYXR1cmUpKTsK
IAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3N0cmluZ0FycmF5RnVuY3Rpb24nCiAgICAgY29u
c3QgaW50IHN0cmluZ0FycmF5RnVuY3Rpb25BcmdjID0gMTsKLSAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBzdHJpbmdBcnJheUZ1bmN0aW9uQXJndltzdHJpbmdBcnJheUZ1bmN0
aW9uQXJnY10gPSB7IFY4RE9NU3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07Cisg
ICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbkFy
Z3Zbc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2NdID0geyBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlz
b2xhdGUpLT5yYXdUZW1wbGF0ZSgmVjhET01TdHJpbmdbXTo6aW5mbykgfTsKICAgICB2ODo6SGFu
ZGxlPHY4OjpTaWduYXR1cmU+IHN0cmluZ0FycmF5RnVuY3Rpb25TaWduYXR1cmUgPSB2ODo6U2ln
bmF0dXJlOjpOZXcoZGVzYywgc3RyaW5nQXJyYXlGdW5jdGlvbkFyZ2MsIHN0cmluZ0FycmF5RnVu
Y3Rpb25Bcmd2KTsKICAgICBwcm90by0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic3RyaW5n
QXJyYXlGdW5jdGlvbiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4
SW50ZXJuYWw6OnN0cmluZ0FycmF5RnVuY3Rpb25NZXRob2RDYWxsYmFjaywgdjhVbmRlZmluZWQo
KSwgc3RyaW5nQXJyYXlGdW5jdGlvblNpZ25hdHVyZSkpOwogCiAgICAgLy8gQ3VzdG9tIFNpZ25h
dHVyZSAnc3RyaW5nQXJyYXlGdW5jdGlvbjInCiAgICAgY29uc3QgaW50IHN0cmluZ0FycmF5RnVu
Y3Rpb24yQXJnYyA9IDE7Ci0gICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc3Ry
aW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVuY3Rpb24yQXJnY10gPSB7IFY4RE9N
U3RyaW5nW106OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpIH07CisgICAgdjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmd2W3N0cmluZ0FycmF5RnVu
Y3Rpb24yQXJnY10gPSB7IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPnJhd1RlbXBs
YXRlKCZWOERPTVN0cmluZ1tdOjppbmZvKSB9OwogICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVy
ZT4gc3RyaW5nQXJyYXlGdW5jdGlvbjJTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVz
Yywgc3RyaW5nQXJyYXlGdW5jdGlvbjJBcmdjLCBzdHJpbmdBcnJheUZ1bmN0aW9uMkFyZ3YpOwog
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJzdHJpbmdBcnJheUZ1bmN0aW9u
MiIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RUeXBlZGVmc1Y4SW50ZXJuYWw6OnN0
cmluZ0FycmF5RnVuY3Rpb24yTWV0aG9kQ2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIHN0cmluZ0Fy
cmF5RnVuY3Rpb24yU2lnbmF0dXJlKSk7CiAKQEAgLTU3OCwxOSArNTc4LDYgQEAgc3RhdGljIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RUeXBlZGVm
c1RlbXBsYXRlKHY4OjoKICAgICByZXR1cm4gZGVzYzsKIH0KIAotdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IFY4VGVzdFR5cGVkZWZzOjpHZXRSYXdUZW1wbGF0ZSh2ODo6SXNv
bGF0ZSogaXNvbGF0ZSkKLXsKLSAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKLSAgICBWOFBlcklzb2xhdGVEYXRhOjpUZW1wbGF0ZU1h
cDo6aXRlcmF0b3IgcmVzdWx0ID0gZGF0YS0+cmF3VGVtcGxhdGVNYXAoKS5maW5kKCZpbmZvKTsK
LSAgICBpZiAocmVzdWx0ICE9IGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuZW5kKCkpCi0gICAgICAg
IHJldHVybiByZXN1bHQtPnZhbHVlOwotCi0gICAgdjg6OkhhbmRsZVNjb3BlIGhhbmRsZVNjb3Bl
OwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiB0ZW1wbCA9IGNyZWF0
ZVJhd1RlbXBsYXRlKGlzb2xhdGUpOwotICAgIGRhdGEtPnJhd1RlbXBsYXRlTWFwKCkuYWRkKCZp
bmZvLCB0ZW1wbCk7Ci0gICAgcmV0dXJuIHRlbXBsOwotfQotCiB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gVjhUZXN0VHlwZWRlZnM6OkdldFRlbXBsYXRlKHY4OjpJc29sYXRl
KiBpc29sYXRlLCBXcmFwcGVyV29ybGRUeXBlIHdvcmxkVHlwZSkKIHsKICAgICBWOFBlcklzb2xh
dGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKTsKQEAgLTYwMCwx
NCArNTg3LDE0IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBWOFRlc3RU
eXBlZGVmczo6R2V0VGVtcGxhdGUodjg6Oklzb2xhdGUqIGlzCiAKICAgICB2ODo6SGFuZGxlU2Nv
cGUgaGFuZGxlU2NvcGU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHRlbXBsID0KLSAgICAgICAgQ29uZmlndXJlVjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSwgaXNvbGF0ZSwgd29ybGRUeXBlKTsKKyAgICAgICAgQ29uZmlndXJl
VjhUZXN0VHlwZWRlZnNUZW1wbGF0ZShkYXRhLT5yYXdUZW1wbGF0ZSgmaW5mbyksIGlzb2xhdGUs
IHdvcmxkVHlwZSk7CiAgICAgZGF0YS0+dGVtcGxhdGVNYXAoKS5hZGQoJmluZm8sIHRlbXBsKTsK
ICAgICByZXR1cm4gdGVtcGw7CiB9CiAKIGJvb2wgVjhUZXN0VHlwZWRlZnM6Okhhc0luc3RhbmNl
KHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSwgdjg6Oklzb2xhdGUqIGlzb2xhdGUpCiB7Ci0g
ICAgcmV0dXJuIEdldFJhd1RlbXBsYXRlKGlzb2xhdGUpLT5IYXNJbnN0YW5jZSh2YWx1ZSk7Cisg
ICAgcmV0dXJuIFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaXNvbGF0ZSktPmhhc0luc3RhbmNlKCZp
bmZvLCB2YWx1ZSk7CiB9CiAKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFR5cGVkZWZzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaAppbmRleCA0MDRhZjdiOTc0MDJkMTE5
ZTE5ZDdiNGM0MDQzYTViOGNkOTQ3NTUxLi4xNGRiMWU1NWQ5ODI4N2EwZTdkY2UwNzQyYzNhMThj
NTVhYjczOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0VHlwZWRlZnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0VHlwZWRlZnMuaApAQCAtMzUsNyArMzUsNiBAQCBjbGFzcyBWOFRl
c3RUeXBlZGVmcyB7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgaGFzRGVwZW5kZW50
TGlmZXRpbWUgPSBmYWxzZTsKICAgICBzdGF0aWMgYm9vbCBIYXNJbnN0YW5jZSh2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4sIHY4OjpJc29sYXRlKik7Ci0gICAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBHZXRSYXdUZW1wbGF0ZSh2ODo6SXNvbGF0ZSopOwogICAgIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gR2V0VGVtcGxhdGUodjg6
Oklzb2xhdGUqLCBXcmFwcGVyV29ybGRUeXBlKTsKICAgICBzdGF0aWMgVGVzdFR5cGVkZWZzKiB0
b05hdGl2ZSh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IG9iamVjdCkKICAgICB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCmluZGV4IDk4NmNhMjNj
MTEwMWY0ZmIwM2YxNjcwMDUxMjIyMTgyMmFhNWZhNzEuLjJmZmMxOTQyYmQ0NmFmMzQ5YjZmMjI2
Njg5NTljYjM5ZmI0NzEwZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0xMzMsNiArMTMzLDIzIEBAIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBWOFBlcklzb2xhdGVEYXRhOjpwcml2YXRlVGVtcGxhdGUoV3Jh
cHBlcldvCiAgICAgcmV0dXJuIG5ld1ByaXZhdGVUZW1wbGF0ZTsKIH0KIAordjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IFY4UGVySXNvbGF0ZURhdGE6OnJhd1RlbXBsYXRlKFdy
YXBwZXJUeXBlSW5mbyogaW5mbykKK3sKKyAgICBUZW1wbGF0ZU1hcDo6aXRlcmF0b3IgcmVzdWx0
ID0gbV9yYXdUZW1wbGF0ZXMuZmluZChpbmZvKTsKKyAgICBpZiAocmVzdWx0ICE9IG1fcmF3VGVt
cGxhdGVzLmVuZCgpKQorICAgICAgICByZXR1cm4gcmVzdWx0LT52YWx1ZTsKKworICAgIHY4OjpI
YW5kbGVTY29wZSBoYW5kbGVTY29wZTsKKyAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gdGVtcGwgPSBjcmVhdGVSYXdUZW1wbGF0ZShtX2lzb2xhdGUpOworICAgIG1fcmF3
VGVtcGxhdGVzLmFkZChpbmZvLCB0ZW1wbCk7CisgICAgcmV0dXJuIHRlbXBsOworfQorCitib29s
IFY4UGVySXNvbGF0ZURhdGE6Omhhc0luc3RhbmNlKFdyYXBwZXJUeXBlSW5mbyogaW5mbywgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQoreworICAgIHJldHVybiByYXdUZW1wbGF0ZShpbmZv
KS0+SGFzSW5zdGFuY2UodmFsdWUpOworfQorCiAjaWYgRU5BQkxFKElOU1BFQ1RPUikKIHZvaWQg
VjhQZXJJc29sYXRlRGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxTdHJpbmdWaXNp
dG9yKiB2aXNpdG9yKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhQZXJJc29sYXRlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29s
YXRlRGF0YS5oCmluZGV4IDBlN2E3ZjllNTgyMjlhYWI3M2M3MmVhZmZlOWExOTgwMzEzNDQ2MTIu
LmMzYzAyYjAxM2U5YTRmODU5MzljNjY3NWI5NWE1MTg3NjRjZjE0YWMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKQEAgLTEzMCw2ICsxMzAsMTAg
QEAgcHVibGljOgogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBy
aXZhdGVUZW1wbGF0ZShXcmFwcGVyV29ybGRUeXBlLCB2b2lkKiBwcml2YXRlUG9pbnRlciwgdjg6
Okludm9jYXRpb25DYWxsYmFjaywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGRhdGEsIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4sIGludCBsZW5ndGggPSAwKTsKIAorICAgIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiByYXdUZW1wbGF0ZShXcmFwcGVyVHlwZUluZm8qKTsKKwor
ICAgIGJvb2wgaGFzSW5zdGFuY2UoV3JhcHBlclR5cGVJbmZvKiwgdjg6OkhhbmRsZTx2ODo6VmFs
dWU+KTsKKwogcHJpdmF0ZToKICAgICBleHBsaWNpdCBWOFBlcklzb2xhdGVEYXRhKHY4OjpJc29s
YXRlKik7CiAgICAgflY4UGVySXNvbGF0ZURhdGEoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOExvY2F0aW9uQ3VzdG9tLmNwcAppbmRleCA4OTc4MTM4
ZmZkYjQzZDNmYTkyOWNmM2ZlNWI0OTQwNTRkMTI0MWY5Li4xZWZkODVhYzhmNWFmZDVlYWMwNDlm
MmYwYjgxYzY0YjU4ZWRlYjMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9jdXN0b20vVjhMb2NhdGlvbkN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvY3VzdG9tL1Y4TG9jYXRpb25DdXN0b20uY3BwCkBAIC0xNDIsNyArMTQyLDggQEAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246OnJlbG9hZEF0dHJHZXR0ZXJDdXN0b20odjg6
OkxvY2FsPHY4OjpTdHJpbmc+IG4KICAgICAvLyBUaGlzIGlzIG9ubHkgZm9yIGdldHRpbmcgYSB1
bmlxdWUgcG9pbnRlciB3aGljaCB3ZSBjYW4gcGFzcyB0byBwcml2YXRlVGVtcGxhdGUuCiAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHByaXZhdGVUZW1wbGF0ZVVuaXF1ZUtleSA9ICJyZWxvYWRQcml2
YXRlVGVtcGxhdGUiOwogICAgIFdyYXBwZXJXb3JsZFR5cGUgY3VycmVudFdvcmxkVHlwZSA9IHdv
cmxkVHlwZShpc29sYXRlKTsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gcHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cHJp
dmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXks
IFY4TG9jYXRpb246OnJlbG9hZE1ldGhvZEN1c3RvbSwgdjhVbmRlZmluZWQoKSwgdjg6OlNpZ25h
dHVyZTo6TmV3KFY4TG9jYXRpb246OkdldFJhd1RlbXBsYXRlKGlzb2xhdGUpKSk7CisgICAgVjhQ
ZXJJc29sYXRlRGF0YSogZGF0YSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29s
YXRlKCkpOworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwcml2YXRl
VGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZh
dGVUZW1wbGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVu
ZGVmaW5lZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRp
b246OmluZm8pKSk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGhvbGRlciA9IGluZm8u
VGhpcygpLT5GaW5kSW5zdGFuY2VJblByb3RvdHlwZUNoYWluKFY4TG9jYXRpb246OkdldFRlbXBs
YXRlKGlzb2xhdGUsIGN1cnJlbnRXb3JsZFR5cGUpKTsKICAgICBpZiAoaG9sZGVyLklzRW1wdHko
KSkgewpAQCAtMTUzLDcgKzE1NCw3IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOExvY2F0aW9u
OjpyZWxvYWRBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuCiAgICAgTG9j
YXRpb24qIGltcCA9IFY4TG9jYXRpb246OnRvTmF0aXZlKGhvbGRlcik7CiAgICAgaWYgKCFCaW5k
aW5nU2VjdXJpdHk6OnNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShCaW5kaW5nU3RhdGU6Omluc3Rh
bmNlKCksIGltcC0+ZnJhbWUoKSwgRG9Ob3RSZXBvcnRTZWN1cml0eUVycm9yKSkgewogICAgICAg
ICBzdGF0aWMgY29uc3QgY2hhciogc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXkgPSAicmVsb2FkU2hh
cmVkVGVtcGxhdGUiOwotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gc2hhcmVkVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0
ZSgpKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1wbGF0ZVVu
aXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKTsK
KyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBs
YXRlID0gZGF0YS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZzaGFyZWRUZW1w
bGF0ZVVuaXF1ZUtleSwgVjhMb2NhdGlvbjo6cmVsb2FkTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6U2lnbmF0dXJlOjpOZXcoZGF0YS0+cmF3VGVtcGxhdGUoJlY4TG9jYXRpb246Omlu
Zm8pKSk7CiAgICAgICAgIHJldHVybiBzaGFyZWRUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKICAg
ICB9CiAgICAgcmV0dXJuIHByaXZhdGVUZW1wbGF0ZS0+R2V0RnVuY3Rpb24oKTsKQEAgLTE2NSw3
ICsxNjYsOCBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhMb2NhdGlvbjo6cmVwbGFjZUF0dHJH
ZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+CiAgICAgLy8gVGhpcyBpcyBvbmx5IGZv
ciBnZXR0aW5nIGEgdW5pcXVlIHBvaW50ZXIgd2hpY2ggd2UgY2FuIHBhc3MgdG8gcHJpdmF0ZVRl
bXBsYXRlTWFwLgogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVL
ZXkgPSAicmVwbGFjZVByaXZhdGVUZW1wbGF0ZSI7CiAgICAgV3JhcHBlcldvcmxkVHlwZSBjdXJy
ZW50V29ybGRUeXBlID0gd29ybGRUeXBlKGluZm8uR2V0SXNvbGF0ZSgpKTsKLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29s
YXRlRGF0YTo6ZnJvbShpc29sYXRlKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUs
ICZwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0
b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdU
ZW1wbGF0ZShpc29sYXRlKSkpOworICAgIFY4UGVySXNvbGF0ZURhdGEqIGRhdGEgPSBWOFBlcklz
b2xhdGVEYXRhOjpmcm9tKGluZm8uR2V0SXNvbGF0ZSgpKTsKKyAgICB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcHJpdmF0ZVRlbXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6
ZnJvbShpc29sYXRlKS0+cHJpdmF0ZVRlbXBsYXRlKGN1cnJlbnRXb3JsZFR5cGUsICZwcml2YXRl
VGVtcGxhdGVVbmlxdWVLZXksIFY4TG9jYXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5k
ZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlv
bjo6aW5mbykpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVyID0gaW5mby5U
aGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6R2V0VGVtcGxh
dGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIuSXNFbXB0eSgp
KSB7CkBAIC0xNzYsNyArMTc4LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4TG9jYXRpb246
OnJlcGxhY2VBdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2NhbDx2ODo6U3RyaW5nPgogICAgIExvY2F0
aW9uKiBpbXAgPSBWOExvY2F0aW9uOjp0b05hdGl2ZShob2xkZXIpOwogICAgIGlmICghQmluZGlu
Z1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUoQmluZGluZ1N0YXRlOjppbnN0YW5j
ZSgpLCBpbXAtPmZyYW1lKCksIERvTm90UmVwb3J0U2VjdXJpdHlFcnJvcikpIHsKICAgICAgICAg
c3RhdGljIGNvbnN0IGNoYXIqIHNoYXJlZFRlbXBsYXRlVW5pcXVlS2V5ID0gInJlcGxhY2VTaGFy
ZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5HZXRJc29sYXRl
KCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRlbXBsYXRlVW5p
cXVlS2V5LCBWOExvY2F0aW9uOjpyZXBsYWNlTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKTsK
KyAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHNoYXJlZFRlbXBs
YXRlID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZvLkdldElzb2xhdGUoKSktPnByaXZhdGVU
ZW1wbGF0ZShjdXJyZW50V29ybGRUeXBlLCAmc2hhcmVkVGVtcGxhdGVVbmlxdWVLZXksIFY4TG9j
YXRpb246OnJlcGxhY2VNZXRob2RDdXN0b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6
Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2NhdGlvbjo6aW5mbykpKTsKICAgICAgICAgcmV0
dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwogICAgIH0KICAgICByZXR1cm4gcHJp
dmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwpAQCAtMTg4LDcgKzE5MCw4IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBWOExvY2F0aW9uOjphc3NpZ25BdHRyR2V0dGVyQ3VzdG9tKHY4OjpMb2Nh
bDx2ODo6U3RyaW5nPiBuCiAgICAgLy8gVGhpcyBpcyBvbmx5IGZvciBnZXR0aW5nIGEgdW5pcXVl
IHBvaW50ZXIgd2hpY2ggd2UgY2FuIHBhc3MgdG8gcHJpdmF0ZVRlbXBsYXRlTWFwLgogICAgIHN0
YXRpYyBjb25zdCBjaGFyKiBwcml2YXRlVGVtcGxhdGVVbmlxdWVLZXkgPSAiYXNzaWduUHJpdmF0
ZVRlbXBsYXRlIjsKICAgICBXcmFwcGVyV29ybGRUeXBlIGN1cnJlbnRXb3JsZFR5cGUgPSB3b3Js
ZFR5cGUoaW5mby5HZXRJc29sYXRlKCkpOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBwcml2YXRlVGVtcGxhdGUgPSBWOFBlcklzb2xhdGVEYXRhOjpmcm9tKGlzb2xh
dGUpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnByaXZhdGVUZW1wbGF0ZVVu
aXF1ZUtleSwgVjhMb2NhdGlvbjo6YXNzaWduTWV0aG9kQ3VzdG9tLCB2OFVuZGVmaW5lZCgpLCB2
ODo6U2lnbmF0dXJlOjpOZXcoVjhMb2NhdGlvbjo6R2V0UmF3VGVtcGxhdGUoaXNvbGF0ZSkpKTsK
KyAgICBWOFBlcklzb2xhdGVEYXRhKiBkYXRhID0gVjhQZXJJc29sYXRlRGF0YTo6ZnJvbShpbmZv
LkdldElzb2xhdGUoKSk7CisgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IHByaXZhdGVUZW1wbGF0ZSA9IGRhdGEtPnByaXZhdGVUZW1wbGF0ZShjdXJyZW50V29ybGRUeXBl
LCAmcHJpdmF0ZVRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0
b20sIHY4VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgm
VjhMb2NhdGlvbjo6aW5mbykpKTsKIAogICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaG9sZGVy
ID0gaW5mby5UaGlzKCktPkZpbmRJbnN0YW5jZUluUHJvdG90eXBlQ2hhaW4oVjhMb2NhdGlvbjo6
R2V0VGVtcGxhdGUoaXNvbGF0ZSwgY3VycmVudFdvcmxkVHlwZSkpOwogICAgIGlmIChob2xkZXIu
SXNFbXB0eSgpKSB7CkBAIC0xOTksNyArMjAyLDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
TG9jYXRpb246OmFzc2lnbkF0dHJHZXR0ZXJDdXN0b20odjg6OkxvY2FsPHY4OjpTdHJpbmc+IG4K
ICAgICBMb2NhdGlvbiogaW1wID0gVjhMb2NhdGlvbjo6dG9OYXRpdmUoaG9sZGVyKTsKICAgICBp
ZiAoIUJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKEJpbmRpbmdTdGF0
ZTo6aW5zdGFuY2UoKSwgaW1wLT5mcmFtZSgpLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKSB7
CiAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyKiBzaGFyZWRUZW1wbGF0ZVVuaXF1ZUtleSA9ICJh
c3NpZ25TaGFyZWRUZW1wbGF0ZSI7Ci0gICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlv
blRlbXBsYXRlPiBzaGFyZWRUZW1wbGF0ZSA9IFY4UGVySXNvbGF0ZURhdGE6OmZyb20oaW5mby5H
ZXRJc29sYXRlKCkpLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNoYXJlZFRl
bXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4VW5kZWZp
bmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhWOExvY2F0aW9uOjpHZXRSYXdUZW1wbGF0ZShpc29s
YXRlKSkpOworICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gc2hh
cmVkVGVtcGxhdGUgPSBkYXRhLT5wcml2YXRlVGVtcGxhdGUoY3VycmVudFdvcmxkVHlwZSwgJnNo
YXJlZFRlbXBsYXRlVW5pcXVlS2V5LCBWOExvY2F0aW9uOjphc3NpZ25NZXRob2RDdXN0b20sIHY4
VW5kZWZpbmVkKCksIHY4OjpTaWduYXR1cmU6Ok5ldyhkYXRhLT5yYXdUZW1wbGF0ZSgmVjhMb2Nh
dGlvbjo6aW5mbykpKTsKICAgICAgICAgcmV0dXJuIHNoYXJlZFRlbXBsYXRlLT5HZXRGdW5jdGlv
bigpOwogICAgIH0KICAgICByZXR1cm4gcHJpdmF0ZVRlbXBsYXRlLT5HZXRGdW5jdGlvbigpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>