<?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>93615</bug_id>
          
          <creation_ts>2012-08-09 05:54:42 -0700</creation_ts>
          <short_desc>[V8] Introduce V8DOMConfiguration class and make batchConfigureXXX() methods static</short_desc>
          <delta_ts>2012-08-10 16:19:04 -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>WebCore JavaScript</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>93095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>japhet</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>691459</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 05:54:42 -0700</bug_when>
    <thetext>Per the discussion in bug 93239,

(1) Rename V8ConfigureDOMAttributesAndMethods to V8DOMConfiguration.
(2) Introduce V8DOMConfiguration class and make batchConfigureXXX() methods static.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692127</commentid>
    <comment_count>1</comment_count>
      <attachid>157617</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 19:51:10 -0700</bug_when>
    <thetext>Created attachment 157617
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692145</commentid>
    <comment_count>2</comment_count>
      <attachid>157622</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-09 20:20:33 -0700</bug_when>
    <thetext>Created attachment 157622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692315</commentid>
    <comment_count>3</comment_count>
      <attachid>157622</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-10 00:56:39 -0700</bug_when>
    <thetext>Comment on attachment 157622
Patch

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

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.cpp:37
&gt; +                                                  v8::Handle&lt;v8::ObjectTemplate&gt; proto, 

I would clean up all these names too.  e.g., proto -&gt; prototype

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.cpp:67
&gt; +v8::Local&lt;v8::Signature&gt; V8DOMConfiguration::configureTemplate(v8::Persistent&lt;v8::FunctionTemplate&gt; desc,

desc -&gt; functionDescriptor

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.cpp:68
&gt; +                                                               const char *interfaceName,

&quot;const char *&quot; -&gt; &quot;const char*&quot;

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.cpp:70
&gt; +                                                               int fieldCount,

int -&gt; size_t ?

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.h:53
&gt; +        bool onProto;

onProto -&gt; onPrototype

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.h:63
&gt; +                                          v8::Handle&lt;ObjectOrTemplate&gt; proto,

proto -&gt; prototype

&gt; Source/WebCore/bindings/v8/V8DOMConfiguration.h:65
&gt; +        {

Bad indent</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692518</commentid>
    <comment_count>4</comment_count>
      <attachid>157726</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-10 06:24:24 -0700</bug_when>
    <thetext>Created attachment 157726
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692641</commentid>
    <comment_count>5</comment_count>
      <attachid>157726</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 10:03:31 -0700</bug_when>
    <thetext>Comment on attachment 157726
patch for landing

Clearing flags on attachment: 157726

Committed r125295: &lt;http://trac.webkit.org/changeset/125295&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157617</attachid>
            <date>2012-08-09 19:51:10 -0700</date>
            <delta_ts>2012-08-09 20:20:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93615-20120810115042.patch</filename>
            <type>text/plain</type>
            <size>59596</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNThhODU2ZDFiMzk1YmNk
NTFlZDc4YjBkODlkY2VlMjEwY2UzNzVlNy4uZGU4OWU0YWZkMGY3ZjJiMWJmNTA3YWE5ZjI5OGQy
YzkxMzgyNWMxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcyIEBACisyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIEludHJvZHVj
ZSBWOERPTUNvbmZpZ3VyYXRpb24gY2xhc3MgYW5kIG1ha2UgYmF0Y2hDb25maWd1cmVYWFgoKSBt
ZXRob2RzIHN0YXRpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQZXIgdGhlIGRpc2N1c3Npb24gaW4gYnVnIDkzMjM5LAorCisgICAgICAgICgxKSBSZW5h
bWUgVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcyB0byBWOERPTUNvbmZpZ3VyYXRp
b24uCisgICAgICAgICgyKSBJbnRyb2R1Y2UgVjhET01Db25maWd1cmF0aW9uIGNsYXNzIGFuZCBt
YWtlIGJhdGNoQ29uZmlndXJlWFhYKCkgbWV0aG9kcyBzdGF0aWMuCisKKyAgICAgICAgTm8gdGVz
dHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRl
c3RFeGNlcHRpb25UZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmln
dXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3ROb2RlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6
Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0
ZXNBbmRNZXRob2RzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQXR0
cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6
YmF0Y2hDb25maWd1cmVDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01D
b25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERP
TUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQmF0Y2hlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZSk6CisgICAgICAg
IChCYXRjaGVkQ29uc3RhbnQpOgorICAgICAgICAoQmF0Y2hlZENhbGxiYWNrKToKKwogMjAxMi0w
OC0wOSAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIEhUTUxF
bGVtZW50LmNsYXNzTGlzdCBjYW5ub3QgcmVtb3ZlIGNsYXNzbmFtZXMgd2l0aCB1cHBlcmNhc2Ug
Y2hhcmFjdGVycwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQppbmRleCA3NjgwZWRjZDQzMGZmNGQ1YmFiOGU5YmY5NTI3
MzkzZmEyMDY1ZmFhLi5jZDRiOGE3N2EwYTM0YzRmZDQ5NmZiMGJjYzRjN2M4ZTllZWY3ZDZmIDEw
MDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Vc2VWOC5jbWFrZQpAQCAtNDcsOSArNDcsOCBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJD
RVMKICAgICBiaW5kaW5ncy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5k
aW5ncy92OC9WOEJpbmRpbmcuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhCaW5kaW5nSGVscGVycy5j
cHAKLSAgICBiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAotICAgIGJpbmRpbmdzL3Y4
L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwLAogICAgIGJpbmRpbmdzL3Y4
L1Y4Q29sbGVjdGlvbi5jcHAKKyAgICBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3Bw
LAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NTWFwLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NV2lu
ZG93U2hlbGwuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjEsNiAr
NjAsNyBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9WOElz
b2xhdGVkQ29udGV4dC5jcHAKICAgICBiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVyLmNw
cAogICAgIGJpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKKyAgICBiaW5kaW5n
cy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwCiAg
ICAgYmluZGluZ3MvdjgvVjhSZWN1cnNpb25TY29wZS5jcHAKICAgICBiaW5kaW5ncy92OC9WOFV0
aWxpdGllcy5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaSBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQppbmRleCBiNDljMzIwMzE1OWRhZGYwMmIyYTcwYzdj
NGU5Y2YzM2QwMTI1MmI4Li40MWU0MTNiOTY2NzhiNTgxNjg0NzQ1NWQxMzVjMzJlMDA0NTBhOTEw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKKysrIGIvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5neXBpCkBAIC0yMjQ3LDEyICsyMjQ3LDEwIEBACiAgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhCaW5kaW5nTWFjcm9zLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4
L1Y4QmluZGluZ1BlckNvbnRleHREYXRhLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3Mvdjgv
VjhCaW5kaW5nUGVyQ29udGV4dERhdGEuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQ
ZXJJc29sYXRlRGF0YS5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuaCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1
dGVzQW5kTWV0aG9kcy5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJl
RE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhD
b2xsZWN0aW9uLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgn
LAorICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAnLAorICAg
ICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oJywKICAgICAgICAgICAg
ICdiaW5kaW5ncy92OC9WOERPTU1hcC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3Bw
JywKQEAgLTIyNzksNiArMjI3Nyw4IEBACiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhOUFV0
aWxzLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5j
cHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5oJywK
KyAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcCcsCisgICAgICAg
ICAgICAnYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oJywKICAgICAgICAgICAgICdiaW5k
aW5ncy92OC9WOFByb3h5LmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhQcm94eS5o
JywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOFJlY3Vyc2lvblNjb3BlLmNwcCcsCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bSBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCmlu
ZGV4IGQyZThiMTM0NDJkMTgxMDNkYTRkODFkNTZkYzdmOGVmOTIzNjU0ZWMuLjVmMTJjMDczNGE2
OTBiYzcwMTQ1M2ZlZTMzODliYzgyZDhhNGQ1OWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtCkBAIC0yNzI2LDcgKzI3MjYsNyBA
QCBFTkQKICAgICAkYXR0cmlidXRlcyA9IFxAbm9ybWFsQXR0cmlidXRlczsKICAgICAjIFB1dCB0
aGUgYXR0cmlidXRlcyB0aGF0IGRpc2FsbG93IHNoYWRvd2luZyBvbiB0aGUgc2hhZG93IG9iamVj
dC4KICAgICBpZiAoQGRpc2FsbG93c1NoYWRvd2luZykgewotICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIHNoYWRvd0F0dHJzW10gPSB7XG4i
KTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgVjhET01Db25maWd1
cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIHNoYWRvd0F0dHJzW10gPSB7XG4iKTsKICAgICAgICAg
R2VuZXJhdGVCYXRjaGVkQXR0cmlidXRlRGF0YSgkZGF0YU5vZGUsIFxAZGlzYWxsb3dzU2hhZG93
aW5nKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9O1xuXG4iKTsKICAgICB9CkBAIC0y
NzM0LDcgKzI3MzQsNyBAQCBFTkQKICAgICBteSAkaGFzX2F0dHJpYnV0ZXMgPSAwOwogICAgIGlm
IChAJGF0dHJpYnV0ZXMpIHsKICAgICAgICAgJGhhc19hdHRyaWJ1dGVzID0gMTsKLSAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSAke2ludGVy
ZmFjZU5hbWV9QXR0cnNbXSA9IHtcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgJHtpbnRlcmZh
Y2VOYW1lfUF0dHJzW10gPSB7XG4iKTsKICAgICAgICAgR2VuZXJhdGVCYXRjaGVkQXR0cmlidXRl
RGF0YSgkZGF0YU5vZGUsICRhdHRyaWJ1dGVzKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJ9O1xuXG4iKTsKICAgICB9CkBAIC0yNzQ5LDcgKzI3NDksNyBAQCBFTkQKICAgICAgICAgbmV4
dCBpZiAhSXNTdGFuZGFyZEZ1bmN0aW9uKCRkYXRhTm9kZSwgJGZ1bmN0aW9uKTsKICAgICAgICAg
aWYgKCEkaGFzX2NhbGxiYWNrcykgewogICAgICAgICAgICAgJGhhc19jYWxsYmFja3MgPSAxOwot
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxi
YWNrICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3NbXSA9IHtcbiIpOworICAgICAgICAgICAgcHVz
aChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVk
Q2FsbGJhY2sgJHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0ge1xuIik7CiAgICAgICAgIH0K
ICAgICAgICAgbXkgJG5hbWUgPSAkZnVuY3Rpb24tPnNpZ25hdHVyZS0+bmFtZTsKICAgICAgICAg
bXkgJGNhbGxiYWNrID0gR2V0RnVuY3Rpb25UZW1wbGF0ZUNhbGxiYWNrTmFtZSgkZnVuY3Rpb24s
ICRpbnRlcmZhY2VOYW1lKTsKQEAgLTI3NjgsNyArMjc2OCw3IEBAIEVORAogICAgIG15IEBjb25z
dGFudHNFbmFibGVkQXRSdW50aW1lOwogICAgIGlmIChAeyRkYXRhTm9kZS0+Y29uc3RhbnRzfSkg
ewogICAgICAgICAkaGFzX2NvbnN0YW50cyA9IDE7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFudCAke2ludGVyZmFjZU5hbWV9Q29uc3RzW10g
PSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29uc3QgVjhET01D
b25maWd1cmF0aW9uOjpCYXRjaGVkQ29uc3RhbnQgJHtpbnRlcmZhY2VOYW1lfUNvbnN0c1tdID0g
e1xuIik7CiAgICAgfQogICAgIGZvcmVhY2ggbXkgJGNvbnN0YW50IChAeyRkYXRhTm9kZS0+Y29u
c3RhbnRzfSkgewogICAgICAgICBteSAkbmFtZSA9ICRjb25zdGFudC0+bmFtZTsKQEAgLTI4MjMs
NyArMjgyMyw3IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwogc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gQ29uZmlndXJlU2hhZG93T2Jq
ZWN0VGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiB0ZW1wbCkKIHsK
LSAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsIHY4OjpIYW5kbGU8djg6Ok9iamVj
dFRlbXBsYXRlPigpLCBzaGFkb3dBdHRycywgV1RGX0FSUkFZX0xFTkdUSChzaGFkb3dBdHRycykp
OworICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBs
LCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJB
WV9MRU5HVEgoc2hhZG93QXR0cnMpKTsKIAogICAgIC8vIEluc3RhbGwgYSBzZWN1cml0eSBoYW5k
bGVyIHdpdGggVjguCiAgICAgdGVtcGwtPlNldEFjY2Vzc0NoZWNrQ2FsbGJhY2tzKFY4RE9NV2lu
ZG93OjpuYW1lZFNlY3VyaXR5Q2hlY2ssIFY4RE9NV2luZG93OjppbmRleGVkU2VjdXJpdHlDaGVj
aywgdjg6OkV4dGVybmFsOjpXcmFwKCZWOERPTVdpbmRvdzo6aW5mbykpOwpAQCAtMjg0OSwxMiAr
Mjg0OSwxMiBAQCBFTkQKICAgICAgICAgbXkgJGVuYWJsZV9mdW5jdGlvbiA9IEdldFJ1bnRpbWVF
bmFibGVGdW5jdGlvbk5hbWUoJGRhdGFOb2RlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
IDw8RU5EKTsKICAgICBpZiAoISR7ZW5hYmxlX2Z1bmN0aW9ufSgpKQotICAgICAgICBkZWZhdWx0
U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCJcIiwgJHBhcmVudENsYXNzVGVt
cGxhdGUsIFY4JHtpbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50LCAwLCAwLCAwLCAw
KTsKKyAgICAgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmln
dXJlVGVtcGxhdGUoZGVzYywgXCJcIiwgJHBhcmVudENsYXNzVGVtcGxhdGUsIFY4JHtpbnRlcmZh
Y2VOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50LCAwLCAwLCAwLCAwKTsKICAgICBlbHNlCiBFTkQK
ICAgICB9CiAgICAgcHVzaChAaW1wbENvbnRlbnQsICA8PEVORCk7Ci0gICAgZGVmYXVsdFNpZ25h
dHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1c
IiwgJHBhcmVudENsYXNzVGVtcGxhdGUsIFY4JHtpbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxGaWVs
ZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsIFwiJHt2aXNpYmxlSW50ZXJmYWNlTmFtZX1cIiwgJHBhcmVudENs
YXNzVGVtcGxhdGUsIFY4JHtpbnRlcmZhY2VOYW1lfTo6aW50ZXJuYWxGaWVsZENvdW50LAogRU5E
CiAgICAgIyBTZXQgdXAgb3VyIGF0dHJpYnV0ZXMgaWYgd2UgaGF2ZSB0aGVtCiAgICAgaWYgKCRo
YXNfYXR0cmlidXRlcykgewpAQCAtMjkwNSwxMCArMjkwNSwxMCBAQCBFTkQKICAgICAgICAgbXkg
JGNvbmRpdGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxT
dHJpbmcoJHJ1bnRpbWVfYXR0ci0+c2lnbmF0dXJlKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVfZnVuY3Rpb259
KCkpIHtcbiIpOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4iKTsKKyAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNo
ZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVxcXG4iKTsKICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRj
aGVkQXR0cmlidXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZV9hdHRyLCAiOyIsICIgICAgIik7
CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIGNvbmZpZ3VyZUF0
dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgICAgICAgVjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiAg
ICAgfQogRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jZW5kaWYgLy8gJHtjb25k
aXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKQEAgLTI5MjMsOCArMjky
Myw4IEBAIEVORAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9u
YWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAiICAgIGlmICgke2VuYWJsZV9mdW5jdGlvbn0oKSkge1xuIik7CiAgICAgICAgIHB1
c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQ29u
c3RhbnQgY29uc3REYXRhID0geyIke25hbWV9Iiwgc3RhdGljX2Nhc3Q8c2lnbmVkIGludD4oJHt2
YWx1ZX0pfTsKLSAgICAgICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICZj
b25zdERhdGEsIDEpOworICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpC
YXRjaGVkQ29uc3RhbnQgY29uc3REYXRhID0geyIke25hbWV9Iiwgc3RhdGljX2Nhc3Q8c2lnbmVk
IGludD4oJHt2YWx1ZX0pfTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZp
Z3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJmNvbnN0RGF0YSwgMSk7CiBFTkQKICAgICAgICAg
cHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiXG4jZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0
cmluZzsKQEAgLTI5NTEsNyArMjk1MSw3IEBAIEVORAogCiAgICAgaWYgKCRoYXNfY29uc3RhbnRz
KSB7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgYmF0Y2hDb25maWd1
cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFtZX1Db25zdHMsIFdURl9BUlJB
WV9MRU5HVEgoJHtpbnRlcmZhY2VOYW1lfUNvbnN0cykpOworICAgIFY4RE9NQ29uZmlndXJhdGlv
bjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sICR7aW50ZXJmYWNlTmFtZX1D
b25zdHMsIFdURl9BUlJBWV9MRU5HVEgoJHtpbnRlcmZhY2VOYW1lfUNvbnN0cykpOwogRU5ECiAg
ICAgfQogCkBAIC0zMDQyLDEwICszMDQyLDEwIEBAIEVORAogICAgICAgICAgICAgICAgIG15ICRj
b25kaXRpb25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3Ry
aW5nKCRydW50aW1lQXR0ci0+c2lnbmF0dXJlKTsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxT
dHJpbmc7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7ZW5h
YmxlRnVuY3Rpb259KGltcGwtPmRvY3VtZW50KCkpKSB7XG4iKTsKLSAgICAgICAgICAgICAgICBw
dXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUg
YXR0ckRhdGEgPVxcXG4iKTsKKyAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBh
dHRyRGF0YSA9XFxcbiIpOwogICAgICAgICAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0
dHJpYnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVBdHRyLCAiOyIsICIgICAgIik7CiAgICAg
ICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgY29uZmlndXJl
QXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOworICAgICAgICBWOERPTUNvbmZp
Z3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsK
IEVORAogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIH1cbiIpOwogICAg
ICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRl
eCBjZTMwNTI1NDEyNWNlZTgwYTc5MGVlYjYyMzIzYzM1ZDdlZWI5MGIxLi45NmUyMDUzZTJjZGEy
MDc5NzEyNTg1OTI3NjA4ZTA1ZTNjOGE1OGYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoRmxvYXQ2NEFycmF5KiBpbXBs
LCB2ODo6SXNvbGF0ZSogaXNvbGF0ZSkKICAgICByZXR1cm4gd3JhcHBlcjsKIH0KIAotc3RhdGlj
IGNvbnN0IEJhdGNoZWRDYWxsYmFjayBGbG9hdDY0QXJyYXlDYWxsYmFja3NbXSA9IHsKK3N0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBGbG9hdDY0QXJyYXlD
YWxsYmFja3NbXSA9IHsKICAgICB7InNldCIsIEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6OnNldENh
bGxiYWNrfSwKIH07CiAKQEAgLTkyLDcgKzkyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOEZsb2F0NjRBcnJheVRlbXBsYXRlKHY4OjoK
ICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWdu
YXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3Vy
ZVRlbXBsYXRlKGRlc2MsICJGbG9hdDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0VGVt
cGxhdGUoKSwgVjhGbG9hdDY0QXJyYXk6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0
U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAi
RmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRlKCksIFY4RmxvYXQ2
NEFycmF5OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCiAgICAgICAgIEZsb2F0
NjRBcnJheUNhbGxiYWNrcywgV1RGX0FSUkFZX0xFTkdUSChGbG9hdDY0QXJyYXlDYWxsYmFja3Mp
KTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMs
IGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCmlu
ZGV4IGE0YWU3OGM4Y2IzYWE1MWFmNzljZGU1ODZiMTZkNDQ2MGYyMjFiNGUuLjVhMTNjMWQ4YjI1
ZjMzNzBjNDVjNDA3MWQwMGE4MDY0YWZkMTYzOGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwCkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHZvaWQgVGVzdEFjdGl2ZURPTU9i
amVjdERvbWFpblNhZmVGdW5jdGlvblNldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmEKIAog
fSAvLyBuYW1lc3BhY2UgVGVzdEFjdGl2ZURPTU9iamVjdFY4SW50ZXJuYWwKIAotc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzW10gPSB7CitzdGF0
aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RBY3RpdmVE
T01PYmplY3RBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAnZXhjaXRpbmdBdHRyJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJleGNpdGluZ0F0dHIi
LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6ZXhjaXRpbmdBdHRyQXR0ckdldHRlciwg
MCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRF
RkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAv
KiBvbiBpbnN0YW5jZSAqL30sCiB9OwpAQCAtMTIwLDcgKzEyMCw3IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0QWN0aXZlRE9NT2Jq
ZWN0VGVtcGxhCiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2Nh
bDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUg
PSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RBY3RpdmVET01PYmplY3Q6Omlu
dGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0
aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEFjdGl2ZURPTU9iamVjdCIsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RBY3RpdmVET01PYmplY3Q6
OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzLCBX
VEZfQVJSQVlfTEVOR1RIKFRlc3RBY3RpdmVET01PYmplY3RBdHRycyksCiAgICAgICAgIDAsIDAp
OwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywg
aXQgd2lsbCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3Bw
CmluZGV4IGI5NjU5NWQ3ODVmOGRiNDE2NDE1N2UwNTE4ZDUwYjk5ZWU5MjY0ZTAuLmZlY2M0MGM4
NmI3NzUyZjVjOTQ0Zjc4OTFlZDg2OGUwZjU0MjBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3Rv
bU5hbWVkR2V0dGVyLmNwcApAQCAtNTIsNyArNTIsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IGFub3RoZXJGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50ZXJuYWwKIAotc3Rh
dGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDYWxsYmFja3Nb
XSA9IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBU
ZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDYWxsYmFja3NbXSA9IHsKICAgICB7ImFub3RoZXJGdW5jdGlv
biIsIFRlc3RDdXN0b21OYW1lZEdldHRlclY4SW50ZXJuYWw6OmFub3RoZXJGdW5jdGlvbkNhbGxi
YWNrfSwKIH07CiAKQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXAKICAg
ICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1
cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRl
bXBsYXRlKGRlc2MsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmludGVybmFsRmll
bGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbnRl
cm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCiAgICAgICAgIFRlc3RDdXN0b21OYW1lZEdl
dHRlckNhbGxiYWNrcywgV1RGX0FSUkFZX0xFTkdUSChUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDYWxs
YmFja3MpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUg
Y2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggNTY1NDM2MmUzNDRmZGIyMzM2OGE5MTQ0OTY3NDJhYzljYjlmYWFjMy4uNmU3
NTVhN2NkYjRiNzQwYmE1MmEzNGM3ZGJmZjU5MDU2YzIwY2YzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3Iu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RF
dmVudENvbnN0cnVjdG9yLmNwcApAQCAtNTUsNyArNTUsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IGF0dHIyQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29u
c3QgdgogCiB9IC8vIG5hbWVzcGFjZSBUZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWwKIAot
c3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRyc1td
ID0geworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdhdHRyMScg
KFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiYXR0cjEiLCBU
ZXN0RXZlbnRDb25zdHJ1Y3RvclY4SW50ZXJuYWw6OmF0dHIxQXR0ckdldHRlciwgMCwgMCAvKiBu
byBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0
YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdhdHRyMicgKFR5cGU6ICdyZWFkb25seSBhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdJbml0aWFsaXplZEJ5RXZlbnRDb25zdHJ1Y3RvcicpCkBAIC0xMDIs
NyArMTAyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGwKICAgICBkZXNjLT5SZWFkT25seVBy
b3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0
RXZlbnRDb25zdHJ1Y3RvciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCBWOFRlc3RFdmVudENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVs
dFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywg
IlRlc3RFdmVudENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+KCksIFY4VGVzdEV2ZW50Q29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgVGVzdEV2ZW50Q29uc3RydWN0b3JBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0RXZlbnRD
b25zdHJ1Y3RvckF0dHJzKSwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1
bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5jcHAKaW5kZXggYjM5NWI5NTRjZDUzODU1NWE3NzZmOGQ3MWZhNWU2
NTdhM2YxODMwNi4uODdlZWE4YmYwZWJiY2RhOTMxYzRjZmJmODYyODEwNDYxYTYwZGMzNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXZlbnRUYXJnZXQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBkaXNwYXRjaEV2ZW50Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50
cyYgYXJncykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbAogCi1z
dGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RFdmVudFRhcmdldENhbGxiYWNrc1tdID0g
eworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFRlc3RF
dmVudFRhcmdldENhbGxiYWNrc1tdID0gewogICAgIHsiaXRlbSIsIFRlc3RFdmVudFRhcmdldFY4
SW50ZXJuYWw6Oml0ZW1DYWxsYmFja30sCiAgICAgeyJhZGRFdmVudExpc3RlbmVyIiwgVGVzdEV2
ZW50VGFyZ2V0VjhJbnRlcm5hbDo6YWRkRXZlbnRMaXN0ZW5lckNhbGxiYWNrfSwKICAgICB7InJl
bW92ZUV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpyZW1vdmVFdmVu
dExpc3RlbmVyQ2FsbGJhY2t9LApAQCAtMTE0LDcgKzExNCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1w
bGF0ZSh2CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2
ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50VGFyZ2V0Iiwgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV2ZW50VGFyZ2V0OjppbnRlcm5hbEZpZWxk
Q291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmln
dXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFdmVudFRhcmdldCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFdmVudFRhcmdldDo6aW50ZXJuYWxGaWVsZENvdW50
LAogICAgICAgICAwLCAwLAogICAgICAgICBUZXN0RXZlbnRUYXJnZXRDYWxsYmFja3MsIFdURl9B
UlJBWV9MRU5HVEgoVGVzdEV2ZW50VGFyZ2V0Q2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdEV4Y2VwdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmNwcAppbmRleCBjMDIxNmVlM2FmYjA2YzE3MDRmZTI1N2E4Mzg0
ZmFlNmU1YTYwYjVlLi45YmI5OWFjM2U3OTYzYWQ5MzZhZWVmYWQ5NmZhZjY3YTJlMGI3OWVlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0RXhjZXB0aW9uLmNwcApAQCAtNDcsNyArNDcsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG5hbWVBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBj
b25zdCB2OAogCiB9IC8vIG5hbWVzcGFjZSBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbAogCi1zdGF0
aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0RXhjZXB0aW9uQXR0cnNbXSA9IHsKK3N0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV4Y2VwdGlv
bkF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICduYW1lJyAoVHlwZTogJ3JlYWRvbmx5IGF0
dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJuYW1lIiwgVGVzdEV4Y2VwdGlvblY4SW50ZXJu
YWw6Om5hbWVBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CkBAIC01Nyw3ICs1Nyw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAg
IGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV4Y2VwdGlv
biIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFeGNlcHRp
b246OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV4Y2VwdGlvbiIsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RFeGNlcHRpb246OmludGVy
bmFsRmllbGRDb3VudCwKICAgICAgICAgVGVzdEV4Y2VwdGlvbkF0dHJzLCBXVEZfQVJSQVlfTEVO
R1RIKFRlc3RFeGNlcHRpb25BdHRycyksCiAgICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJB
TShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNl
ZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKaW5kZXggZWY2YmQ1ZDQwODE1NjQwNWExMTZmYjUwM2Ix
MjZiYzA5Yzg1YWU1NS4uNDdlNDIyODQwMmRmODRiYTcxMzUzN2U2ODVkMDIxODRkYjMwYWVjMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKQEAgLTE4OSw3ICsxODksNyBAQCBzdGF0aWMgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHN1cHBsZW1lbnRhbE1ldGhvZDRDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzJiBhcgogCiB9IC8vIG5hbWVzcGFjZSBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbAogCi1z
dGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKK3N0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdEludGVy
ZmFjZUF0dHJzW10gPSB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0
aW9uMTIpCiAgICAgLy8gQXR0cmlidXRlICdzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIn
IChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnQ29uZGl0aW9uYWwgSW1wbGVt
ZW50ZWRCeScpCiAgICAgeyJzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHIiLCBUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyQXR0ckdldHRl
ciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL30sCkBAIC0yMTYsNyArMjE2LDcgQEAgc3RhdGljIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUgVGVzdEludGVyZmFjZUF0dHJzW10gPSB7CiAjZW5kaWYgLy8gRU5BQkxF
KENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiB9OwogCi1zdGF0aWMgY29uc3Qg
QmF0Y2hlZENhbGxiYWNrIFRlc3RJbnRlcmZhY2VDYWxsYmFja3NbXSA9IHsKK3N0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBUZXN0SW50ZXJmYWNlQ2FsbGJh
Y2tzW10gPSB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIp
CiAgICAgeyJzdXBwbGVtZW50YWxNZXRob2QxIiwgVGVzdEludGVyZmFjZVY4SW50ZXJuYWw6OnN1
cHBsZW1lbnRhbE1ldGhvZDFDYWxsYmFja30sCiAjZW5kaWYKQEAgLTIyNSw3ICsyMjUsNyBAQCBz
dGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RJbnRlcmZhY2VDYWxsYmFja3NbXSA9IHsK
ICNlbmRpZgogfTsKIAotc3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFudCBUZXN0SW50ZXJmYWNl
Q29uc3RzW10gPSB7CitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ29u
c3RhbnQgVGVzdEludGVyZmFjZUNvbnN0c1tdID0gewogI2lmIEVOQUJMRShDb25kaXRpb24xMSkg
fHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHsiU1VQUExFTUVOVEFMQ09OU1RBTlQxIiwgc3Rh
dGljX2Nhc3Q8c2lnbmVkIGludD4oMSl9LAogI2VuZGlmCkBAIC0yNzksNyArMjc5LDcgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RJ
bnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVs
dFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0SW50ZXJmYWNlIiwgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEludGVyZmFjZTo6aW50
ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0SW50ZXJmYWNlIiwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEludGVyZmFjZTo6aW50ZXJuYWxGaWVs
ZENvdW50LAogICAgICAgICBUZXN0SW50ZXJmYWNlQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVz
dEludGVyZmFjZUF0dHJzKSwKICAgICAgICAgVGVzdEludGVyZmFjZUNhbGxiYWNrcywgV1RGX0FS
UkFZX0xFTkdUSChUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRl
ZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpA
QCAtMzAwLDcgKzMwMCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUodjg6CiAjaWYgRU5BQkxFKENv
bmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgZGVzYy0+U2V0KHY4OjpTdHJp
bmc6Ok5ldygic3VwcGxlbWVudGFsTWV0aG9kNCIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3
KFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxNZXRob2Q0Q2FsbGJhY2ssIHY4
VW5kZWZpbmVkKCksIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPigpKSk7CiAjZW5kaWYgLy8gRU5B
QkxFKENvbmRpdGlvbjExKSB8fCBFTkFCTEUoQ29uZGl0aW9uMTIpCi0gICAgYmF0Y2hDb25maWd1
cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RJbnRlcmZhY2VDb25zdHMsIFdURl9BUlJBWV9M
RU5HVEgoVGVzdEludGVyZmFjZUNvbnN0cykpOworICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0
Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RJbnRlcmZhY2VDb25zdHMsIFdU
Rl9BUlJBWV9MRU5HVEgoVGVzdEludGVyZmFjZUNvbnN0cykpOwogCiAgICAgLy8gQ3VzdG9tIHRv
U3RyaW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0
cmluZ1RlbXBsYXRlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCmluZGV4IGM3NDBiOTU1NjBiNzk2OTVmNjVlMDg3ZmIxNDYwOWZkMDE5YWJmYTEuLjI2
NWYzMDg3OTAwMjFkZjU2OTVjNTcwMDA2MTk5OTNkOGRiZTgyODEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgc3RhdGlj
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtZXRob2RDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50
ZXJuYWwKIAotc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lckNhbGxiYWNrc1tdID0geworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZENhbGxiYWNrIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2FsbGJhY2tzW10gPSB7
CiAgICAgeyJtZXRob2QiLCBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lclY4SW50ZXJuYWw6Om1l
dGhvZENhbGxiYWNrfSwKIH07CiAKQEAgLTYyLDcgKzYyLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmUKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNv
bmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lciIsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RNZWRpYVF1ZXJ5TGlzdExp
c3RlbmVyOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9N
Q29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RNZWRpYVF1ZXJ5TGlz
dExpc3RlbmVyIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVz
dE1lZGlhUXVlcnlMaXN0TGlzdGVuZXI6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwg
MCwKICAgICAgICAgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWxsYmFja3MsIFdURl9BUlJB
WV9MRU5HVEgoVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWxsYmFja3MpKTsKICAgICBVTlVT
RURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90
IGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOWFlNjc0
YmJiNmZkNzQyYzQ0ODVmMTBmOWViNDJlZTljYzhkYjI2Yi4uNmU3YzZlMjZiOTRhMTA4ZmJiZDRi
MGQwZmU0MmQ4MTQ2MDQ2NzljYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNw
cApAQCAtMTA3LDcgKzEwNyw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsCiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZh
dWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAor
ICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBs
YXRlKGRlc2MsICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291
bnQsCiAgICAgICAgIDAsIDAsCiAgICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
b2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
b2RlLmNwcAppbmRleCA5OTE2Y2MxNmZmNzE4NDkyM2RiYmRkY2RjZDg5N2UxZWVlMmI0NTc3Li5j
ZTczYzcxODU2M2QxOGJkYzhmZDlhYWNjZjg3MDkzOGU3MDRlZjc2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCkBA
IC02NSw3ICs2NSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiAgICAgZGVzYy0+UmVhZE9u
bHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2ln
bmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAi
VGVzdE5vZGUiLCBWOE5vZGU6OkdldFRlbXBsYXRlKCksIFY4VGVzdE5vZGU6OmludGVybmFsRmll
bGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE5vZGUiLCBWOE5vZGU6OkdldFRlbXBsYXRlKCksIFY4
VGVzdE5vZGU6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKICAgICAgICAgMCwg
MCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2Vz
LCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA1NzAwMGY0MTNiMDMzZDYwYzk2
YjFlNTViOTFjZTM0Njk1YWY4ZTdiLi5hNmE0Yjg5NDA5Njc1MWY0ODUwY2MwMzFjNTg2N2FlZjBh
ZTRiNDA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMTkxNyw3ICsxOTE3LDcgQEAgc3RhdGljIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzdHJpY3RGdW5jdGlvbkNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RPYmpWOEludGVybmFsCiAKLXN0YXRpYyBjb25z
dCBCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpBdHRyc1tdID0geworc3RhdGljIGNvbnN0IFY4RE9N
Q29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICAv
LyBBdHRyaWJ1dGUgJ3JlYWRPbmx5TG9uZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRl
JyBFeHRBdHRyOiAnJykKICAgICB7InJlYWRPbmx5TG9uZ0F0dHIiLCBUZXN0T2JqVjhJbnRlcm5h
bDo6cmVhZE9ubHlMb25nQXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGlj
X2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlBy
b3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8v
IEF0dHJpYnV0ZSAncmVhZE9ubHlTdHJpbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJycpCkBAIC0yMDQ0LDcgKzIwNDQsNyBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKICAgICB7InJlcGxhY2VhYmxlQXR0cmlidXRl
IiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlcGxhY2VhYmxlQXR0cmlidXRlQXR0ckdldHRlciwgVGVz
dE9ialY4SW50ZXJuYWw6OlRlc3RPYmpSZXBsYWNlYWJsZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0
YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2Ug
Ki99LAogfTsKIAotc3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tz
W10gPSB7CitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sg
VGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsidm9pZE1ldGhvZCIsIFRlc3RPYmpWOEludGVy
bmFsOjp2b2lkTWV0aG9kQ2FsbGJhY2t9LAogICAgIHsiTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJu
YWw6Ok1ldGhvZENhbGxiYWNrfSwKICAgICB7Im9iak1ldGhvZCIsIFRlc3RPYmpWOEludGVybmFs
OjpvYmpNZXRob2RDYWxsYmFja30sCkBAIC0yMDk0LDcgKzIwOTQsNyBAQCBzdGF0aWMgY29uc3Qg
QmF0Y2hlZENhbGxiYWNrIFRlc3RPYmpDYWxsYmFja3NbXSA9IHsKICAgICB7InN0cmljdEZ1bmN0
aW9uIiwgVGVzdE9ialY4SW50ZXJuYWw6OnN0cmljdEZ1bmN0aW9uQ2FsbGJhY2t9LAogfTsKIAot
c3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFudCBUZXN0T2JqQ29uc3RzW10gPSB7CitzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ29uc3RhbnQgVGVzdE9iakNvbnN0c1td
ID0gewogI2lmIEVOQUJMRShDb25kaXRpb24xKQogICAgIHsiQ09ORElUSU9OQUxfQ09OU1QiLCBz
dGF0aWNfY2FzdDxzaWduZWQgaW50PigwKX0sCiAjZW5kaWYKQEAgLTIxNTcsNyArMjE1Nyw3IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhU
ZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNpCiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsK
IAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRl
ZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE9iamVjdCIsIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OmludGVybmFs
RmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE9iamVjdCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RPYmo6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgVGVzdE9iakF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RPYmpBdHRycyksCiAgICAgICAg
IFRlc3RPYmpDYWxsYmFja3MsIFdURl9BUlJBWV9MRU5HVEgoVGVzdE9iakNhbGxiYWNrcykpOwog
ICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQg
d2lsbCBub3QgYmUgdXNlZC4KQEAgLTIxNjgsMTYgKzIxNjgsMTYgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKICAgICBVTlVTRURfUEFSQU0ocHJvdG8pOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3
aWxsIG5vdCBiZSB1c2VkLgogICAgIAogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpl
bmFibGVkQXRSdW50aW1lQXR0cjFFbmFibGVkKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKKyAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29u
ZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRy
aWJ1dGUgJ2VuYWJsZWRBdFJ1bnRpbWVBdHRyMScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6
ICdWOEVuYWJsZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMSIs
IFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyR2V0dGVyLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0clNldHRlciwgMCAvKiBubyBk
YXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0
aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5j
ZSAqL307Ci0gICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJE
YXRhKTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5z
dGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiAgICAgfQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZl
YXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoKSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAorICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJp
YnV0ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIyJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjog
J1Y4RW5hYmxlZEF0UnVudGltZScpCiAgICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIyIiwg
VGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJHZXR0ZXIsIFRlc3RP
YmpWOEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyU2V0dGVyLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfTsKLSAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRh
dGEpOworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0
YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKICAgICB9CiAKICAgICAvLyBDdXN0b20gU2lnbmF0dXJl
ICd2b2lkTWV0aG9kV2l0aEFyZ3MnCkBAIC0yMjQ5LDcgKzIyNDksNyBAQCBzdGF0aWMgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRl
KHY4OjpQZXJzaQogICAgIHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNvbnZlcnQ1
QXJndltjb252ZXJ0NUFyZ2NdID0geyBWOGU6OkdldFJhd1RlbXBsYXRlKCkgfTsKICAgICB2ODo6
SGFuZGxlPHY4OjpTaWduYXR1cmU+IGNvbnZlcnQ1U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6
TmV3KGRlc2MsIGNvbnZlcnQ1QXJnYywgY29udmVydDVBcmd2KTsKICAgICBwcm90by0+U2V0KHY4
OjpTdHJpbmc6Ok5ldygiY29udmVydDUiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0
T2JqVjhJbnRlcm5hbDo6Y29udmVydDVDYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgY29udmVydDVT
aWduYXR1cmUpKTsKLSAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVz
dE9iakNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChUZXN0T2JqQ29uc3RzKSk7CisgICAgVjhET01D
b25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVzdE9i
akNvbnN0cywgV1RGX0FSUkFZX0xFTkdUSChUZXN0T2JqQ29uc3RzKSk7CiAKICAgICAvLyBDdXN0
b20gdG9TdHJpbmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdl
dFRvU3RyaW5nVGVtcGxhdGUoKSk7CkBAIC0yMjk0LDE2ICsyMjk0LDE2IEBAIHZvaWQgVjhUZXN0
T2JqOjppbnN0YWxsUGVyQ29udGV4dFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBp
bnN0YW5jZSwgVGVzCiAgICAgLy8gV2hlbiBidWlsZGluZyBRdFdlYmtpdCB3aXRoIFY4IHRoaXMg
dmFyaWFibGUgaXMgdW51c2VkIHdoZW4gbm9uZSBvZiB0aGUgZmVhdHVyZXMgYXJlIGVuYWJsZWQu
CiAgICAgVU5VU0VEX1BBUkFNKHByb3RvKTsKICAgICBpZiAoQ29udGV4dEZlYXR1cmVzOjplbmFi
bGVkUGVyQ29udGV4dEF0dHIxRW5hYmxlZChpbXBsLT5kb2N1bWVudCgpKSkgewotICAgICAgICBz
dGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAorICAgICAgICBzdGF0aWMg
Y29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCiAg
ICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZFBlckNvbnRleHRBdHRyMScgKFR5cGU6ICdhdHRy
aWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRQZXJDb250ZXh0JykKICAgICAgICAgeyJlbmFibGVk
UGVyQ29udGV4dEF0dHIxIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0
cjFBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0
dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+
KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9u
ZSksIDAgLyogb24gaW5zdGFuY2UgKi99OwotICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5z
dGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29u
ZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogICAgIH0KICAgICBp
ZiAoQ29udGV4dEZlYXR1cmVzOjpmZWF0dXJlTmFtZUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkp
IHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKKyAg
ICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBh
dHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjIn
IChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCiAgICAg
ICAgIHsiZW5hYmxlZFBlckNvbnRleHRBdHRyMiIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVk
UGVyQ29udGV4dEF0dHIyQXR0ckdldHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJD
b250ZXh0QXR0cjJBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpB
Y2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfTsKLSAgICAgICAgY29uZmlndXJl
QXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOworICAgICAgICBWOERPTUNvbmZp
Z3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsK
ICAgICB9CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2
ODo6U2lnbmF0dXJlOjpOZXcoR2V0VGVtcGxhdGUoKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1
bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNl
cmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNw
cAppbmRleCAzMmJlMWQ3OTczZWQyMGZmMTA0NGQ1NzYwMzMwOTEzYTIxM2JjOGI1Li5hNjFjOGFl
Y2FhNTYyM2E4OWJjZGE4ZjRhYWExYzBiNTY1OGI4NmIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcApAQCAtMTkwLDcgKzE5
MCw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbXVsdGlUcmFuc2Zlckxpc3RDYWxs
YmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsCiAKLXN0YXRpYyBjb25zdCBCYXRj
aGVkQXR0cmlidXRlIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRyc1tdID0g
eworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1
dGUgJ3ZhbHVlJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJ2YWx1ZSIs
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1ZUF0dHJH
ZXR0ZXIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjp2YWx1
ZUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRy
b2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6
Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogICAgIC8vIEF0dHJpYnV0ZSAncmVhZG9ubHlW
YWx1ZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQpAQCAtMjAzLDcg
KzIwMyw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VBdHRyc1tdID0gewogICAgIHsiY2FjaGVkUmVhZG9ubHlWYWx1ZSIs
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpjYWNoZWRSZWFk
b25seVZhbHVlQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6
QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRy
aWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwogCi1zdGF0aWMgY29u
c3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWxs
YmFja3NbXSA9IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxs
YmFjayBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FsbGJhY2tzW10gPSB7CiAg
ICAgeyJhY2NlcHRUcmFuc2Zlckxpc3QiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJm
YWNlVjhJbnRlcm5hbDo6YWNjZXB0VHJhbnNmZXJMaXN0Q2FsbGJhY2t9LAogICAgIHsibXVsdGlU
cmFuc2Zlckxpc3QiLCBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5h
bDo6bXVsdGlUcmFuc2Zlckxpc3RDYWxsYmFja30sCiB9OwpAQCAtMjQ0LDcgKzI0NCw3IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlCiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAog
ICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1
bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdFNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZUludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigp
LCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2U6OmludGVybmFsRmllbGRDb3Vu
dCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCAiVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZSIsIHY4OjpQ
ZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2U6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RTZXJpYWxp
emVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRycyksCiAgICAgICAgIFRlc3RTZXJpYWxpemVkU2Ny
aXB0VmFsdWVJbnRlcmZhY2VDYWxsYmFja3MsIFdURl9BUlJBWV9MRU5HVEgoVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhbGxiYWNrcykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZh
dWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXggODA3MDYxZjE3MDAwYTdhMjg0
MzQxM2MyYmZjMTVlOWZlZDc5NTQzOC4uY2EzYWZiNjQ5YjY2NmRlMmE0ZWRiMTM5OTE1OTU2Njk0
MTkxNDllYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKQEAgLTM3LDcg
KzM3LDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlY4QmluZGlu
Z0hlbHBlcnMuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdNYWNyb3MuaCIKLSNpbmNsdWRlICJWOENv
bmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmgiCisjaW5jbHVkZSAiVjhET01Db25maWd1
cmF0aW9uLmgiCiAjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCiAjaW5jbHVkZSAiVjhHQ0NvbnRy
b2xsZXIuaCIKICNpbmNsdWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0
aG9kcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJp
YnV0ZXNBbmRNZXRob2RzLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZkNDJh
NzE2YTBlYTU4MjY3NjNjZWYyZGM5MjMyZDY0MWNiNTczZi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENv
bmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDg5
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoK
LSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiAgUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9m
IEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCi0gKiAgICAg
aXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHBy
aW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWQotICogRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWQotICogRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsKLSAqIExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRgotICogVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiVjhDb25maWd1cmVET01B
dHRyaWJ1dGVzQW5kTWV0aG9kcy5oIgotCi0jaW5jbHVkZSAiVjhCaW5kaW5nLmgiCi0KLW5hbWVz
cGFjZSBXZWJDb3JlIHsKLQotdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlLCAKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCAK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCkKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGF0dHJpYnV0ZUNvdW50OyArK2kpCi0gICAgICAg
IGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJpYnV0ZXNbaV0pOwotfQot
Ci12b2lkIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
djg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBCYXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50cywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnN0YW50Q291bnQpCi17Ci0gICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb25zdGFudENvdW50OyArK2kpIHsKLSAgICAgICAgY29uc3QgQmF0Y2hl
ZENvbnN0YW50KiBjb25zdGFudCA9ICZjb25zdGFudHNbaV07Ci0gICAgICAgIGZ1bmN0aW9uRGVz
Y3JpcHRvci0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhjb25zdGFudC0+bmFtZSksIHY4SW50ZWdlcihj
b25zdGFudC0+dmFsdWUpLCB2ODo6UmVhZE9ubHkpOwotICAgICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ldyhjb25zdGFudC0+bmFtZSksIHY4SW50ZWdlcihjb25zdGFudC0+dmFsdWUpLCB2
ODo6UmVhZE9ubHkpOwotICAgIH0KLX0KLQotdm9pZCBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+IHNpZ25hdHVyZSwgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGVzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxi
YWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQp
Ci17Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjYWxsYmFja0NvdW50OyArK2kpCi0gICAg
ICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KGNhbGxiYWNrc1tpXS5uYW1lKSwgdjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhjYWxsYmFja3NbaV0uY2FsbGJhY2ssIHY4VW5kZWZpbmVkKCks
IHNpZ25hdHVyZSksIGF0dHJpYnV0ZXMpOwotfQotCi12ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGRl
c2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hh
ciAqaW50ZXJmYWNlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkQ291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayogY2FsbGJhY2tzLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFj
a0NvdW50KQotewotICAgIGRlc2MtPlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXcoaW50ZXJm
YWNlTmFtZSkpOwotICAgIHY4OjpMb2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0g
ZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpOwotICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxk
Q291bnQoZmllbGRDb3VudCk7Ci0gICAgaWYgKCFwYXJlbnRDbGFzcy5Jc0VtcHR5KCkpCi0gICAg
ICAgIGRlc2MtPkluaGVyaXQocGFyZW50Q2xhc3MpOwotICAgIGlmIChhdHRyaWJ1dGVDb3VudCkK
LSAgICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGluc3RhbmNlLCBkZXNjLT5Qcm90b3R5
cGVUZW1wbGF0ZSgpLCBhdHRyaWJ1dGVzLCBhdHRyaWJ1dGVDb3VudCk7Ci0gICAgdjg6OkxvY2Fs
PHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVz
Yyk7Ci0gICAgaWYgKGNhbGxiYWNrQ291bnQpCi0gICAgICAgIGJhdGNoQ29uZmlndXJlQ2FsbGJh
Y2tzKGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCksIGRlZmF1bHRTaWduYXR1cmUsIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpLCBjYWxsYmFja3MsIGNh
bGxiYWNrQ291bnQpOwotICAgIHJldHVybiBkZWZhdWx0U2lnbmF0dXJlOwotfQotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmgKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDc0NmZlODI0NDA4ODRjM2YxNmZkZjZiOWY4M2U3ODA1NDQ5Njlj
ZTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5o
CisrKyAvZGV2L251bGwKQEAgLTEsMTA4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqCi0gKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAq
IDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBu
b3IgdGhlIG5hbWVzIG9mCi0gKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAotICogICAgIGZyb20gdGhpcyBzb2Z0
d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJB
UyBJUyIgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAotICogV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQotICog
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWQotICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKLSAqIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsKLSAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAotICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRgotICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFY4Q29uZmlndXJlRE9N
QXR0cmlidXRlc0FuZE1ldGhvZHNfaAotI2RlZmluZSBWOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNB
bmRNZXRob2RzX2gKLQotI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgotI2luY2x1ZGUgPHY4Lmg+
Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gVGhlIGZvbGxvd2luZyBCYXRjaCBzdHJ1Y3Rz
IGFuZCBtZXRob2RzIGFyZSB1c2VkIGZvciBzZXR0aW5nIG11bHRpcGxlCi0vLyBwcm9wZXJ0aWVz
IG9uIGFuIE9iamVjdFRlbXBsYXRlLCB1c2VkIGZyb20gdGhlIGdlbmVyYXRlZCBiaW5kaW5ncwot
Ly8gaW5pdGlhbGl6YXRpb24gKENvbmZpZ3VyZVhYWFRlbXBsYXRlKS4gVGhpcyBncmVhdGx5IHJl
ZHVjZXMgdGhlIGJpbmFyeQotLy8gc2l6ZSBieSBtb3ZpbmcgZnJvbSBjb2RlIGRyaXZlbiBzZXR1
cCB0byBkYXRhIHRhYmxlIGRyaXZlbiBzZXR1cC4KLQotLy8gQmF0Y2hlZEF0dHJpYnV0ZSB0cmFu
c2xhdGVzIGludG8gY2FsbHMgdG8gU2V0QWNjZXNzb3IoKSBvbiBlaXRoZXIgdGhlCi0vLyBpbnN0
YW5jZSBvciB0aGUgcHJvdG90eXBlIE9iamVjdFRlbXBsYXRlLCBiYXNlZCBvbiB8b25Qcm90b3wu
Ci1zdHJ1Y3QgQmF0Y2hlZEF0dHJpYnV0ZSB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsK
LSAgICB2ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVyOwotICAgIHY4OjpBY2Nlc3NvclNldHRlciBz
ZXR0ZXI7Ci0gICAgV3JhcHBlclR5cGVJbmZvKiBkYXRhOwotICAgIHY4OjpBY2Nlc3NDb250cm9s
IHNldHRpbmdzOwotICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGU7Ci0gICAgYm9v
bCBvblByb3RvOwotfTsKLQotdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRs
ZTx2ODo6T2JqZWN0VGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzaXplX3QgYXR0cmlidXRlQ291bnQpOwotCi10ZW1wbGF0ZTxjbGFzcyBPYmplY3RPclRlbXBs
YXRlPgotaW5saW5lIHZvaWQgY29uZmlndXJlQXR0cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JU
ZW1wbGF0ZT4gaW5zdGFuY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okhh
bmRsZTxPYmplY3RPclRlbXBsYXRlPiBwcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBCYXRjaGVkQXR0cmlidXRlJiBhdHRyaWJ1dGUpCi17Ci0gICAgKGF0dHJpYnV0
ZS5vblByb3RvID8gcHJvdG8gOiBpbnN0YW5jZSktPlNldEFjY2Vzc29yKHY4OjpTdHJpbmc6Ok5l
dyhhdHRyaWJ1dGUubmFtZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5nZXR0ZXIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0ZXIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpFeHRlcm5hbDo6V3JhcChhdHRyaWJ1dGUuZGF0YSksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0aW5ncywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0
cmlidXRlLmF0dHJpYnV0ZSk7Ci19Ci0KLS8vIEJhdGNoZWRDb25zdGFudCB0cmFuc2xhdGVzIGlu
dG8gY2FsbHMgdG8gU2V0KCkgZm9yIHNldHRpbmcgdXAgYW4gb2JqZWN0J3MKLS8vIGNvbnN0YW50
cy4gSXQgc2V0cyB0aGUgY29uc3RhbnQgb24gYm90aCB0aGUgRnVuY3Rpb25UZW1wbGF0ZSBhbmQg
dGhlCi0vLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1dGVzIGlzIGFsd2F5cyBSZWFk
T25seS4KLXN0cnVjdCBCYXRjaGVkQ29uc3RhbnQgewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5h
bWU7Ci0gICAgaW50IHZhbHVlOwotfTsKLQotdm9pZCBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2
ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBCYXRjaGVkQ29uc3RhbnQqLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgY29uc3RhbnRDb3VudCk7Ci0KLS8vIEJhdGNoZWRDYWxsYmFjayB0cmFu
c2xhdGVzIGludG8gY2FsbHMgdG8gU2V0KCkgb24gdGhlIHByb3RvdHlwZSBPYmplY3RUZW1wbGF0
ZS4KLXN0cnVjdCBCYXRjaGVkQ2FsbGJhY2sgewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7
Ci0gICAgdjg6Okludm9jYXRpb25DYWxsYmFjayBjYWxsYmFjazsKLX07Ci0KLXZvaWQgYmF0Y2hD
b25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LCAKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQpOwotCi12ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNoYXIqIGludGVyZmFjZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENs
YXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVs
ZENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJhdGNoZWRBdHRyaWJ1dGUqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYgLy8gVjhDb25maWd1cmVET01BdHRyaWJ1dGVz
QW5kTWV0aG9kc19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TUNvbmZpZ3VyYXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMWMyMWQ2OWY4ZmIzNDI4OGY3YmQxZjFkYjQyNjY0
NDgzYjZiZDMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhET01Db25maWd1cmF0aW9uLmNwcApAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFw
cGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJV
VE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorI2luY2x1ZGUgIlY4RE9NQ29uZmlndXJhdGlvbi5oIgorCisjaW5jbHVkZSAiVjhCaW5k
aW5nLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKwordm9pZCBWOERPTUNvbmZpZ3VyYXRpb246
OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4g
aW5zdGFuY2UsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0cmli
dXRlKiBhdHRyaWJ1dGVzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2l6ZV90IGF0dHJpYnV0ZUNvdW50KQoreworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkKKyAgICAgICAgY29uZmlndXJlQXR0cmlidXRl
KGluc3RhbmNlLCBwcm90bywgYXR0cmlidXRlc1tpXSk7Cit9CisKK3ZvaWQgVjhET01Db25maWd1
cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3Rv
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJhdGNoZWRDb25zdGFudCogY29uc3RhbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb25zdGFudENvdW50KQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY29uc3RhbnRDb3VudDsgKytpKSB7CisgICAgICAgIGNvbnN0IEJh
dGNoZWRDb25zdGFudCogY29uc3RhbnQgPSAmY29uc3RhbnRzW2ldOworICAgICAgICBmdW5jdGlv
bkRlc2NyaXB0b3ItPlNldCh2ODo6U3RyaW5nOjpOZXcoY29uc3RhbnQtPm5hbWUpLCB2OEludGVn
ZXIoY29uc3RhbnQtPnZhbHVlKSwgdjg6OlJlYWRPbmx5KTsKKyAgICAgICAgcHJvdG8tPlNldCh2
ODo6U3RyaW5nOjpOZXcoY29uc3RhbnQtPm5hbWUpLCB2OEludGVnZXIoY29uc3RhbnQtPnZhbHVl
KSwgdjg6OlJlYWRPbmx5KTsKKyAgICB9Cit9CisKK3ZvaWQgVjhET01Db25maWd1cmF0aW9uOjpi
YXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJv
dG8sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCAKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmli
dXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCkKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxiYWNrQ291bnQ7ICsraSkKKyAgICAgICAgcHJvdG8t
PlNldCh2ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLCB2ODo6RnVuY3Rpb25UZW1w
bGF0ZTo6TmV3KGNhbGxiYWNrc1tpXS5jYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc2lnbmF0dXJl
KSwgYXR0cmlidXRlcyk7Cit9CisKK3Y4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBWOERPTUNvbmZp
Z3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqaW50ZXJmYWNlTmFtZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRDbGFzcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlu
dCBmaWVsZENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJh
Y2sqIGNhbGxiYWNrcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KQoreworICAgIGRlc2Mt
PlNldENsYXNzTmFtZSh2ODo6U3RyaW5nOjpOZXcoaW50ZXJmYWNlTmFtZSkpOworICAgIHY4OjpM
b2NhbDx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNlID0gZGVzYy0+SW5zdGFuY2VUZW1wbGF0
ZSgpOworICAgIGluc3RhbmNlLT5TZXRJbnRlcm5hbEZpZWxkQ291bnQoZmllbGRDb3VudCk7Cisg
ICAgaWYgKCFwYXJlbnRDbGFzcy5Jc0VtcHR5KCkpCisgICAgICAgIGRlc2MtPkluaGVyaXQocGFy
ZW50Q2xhc3MpOworICAgIGlmIChhdHRyaWJ1dGVDb3VudCkKKyAgICAgICAgYmF0Y2hDb25maWd1
cmVBdHRyaWJ1dGVzKGluc3RhbmNlLCBkZXNjLT5Qcm90b3R5cGVUZW1wbGF0ZSgpLCBhdHRyaWJ1
dGVzLCBhdHRyaWJ1dGVDb3VudCk7CisgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1
bHRTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXcoZGVzYyk7CisgICAgaWYgKGNhbGxiYWNr
Q291bnQpCisgICAgICAgIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKGRlc2MtPlByb3RvdHlwZVRl
bXBsYXRlKCksIGRlZmF1bHRTaWduYXR1cmUsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJp
YnV0ZT4odjg6OkRvbnREZWxldGUpLCBjYWxsYmFja3MsIGNhbGxiYWNrQ291bnQpOworICAgIHJl
dHVybiBkZWZhdWx0U2lnbmF0dXJlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBjMDZkNmZkNzJhMWZhYmMwM2Q0OWFkNTBkZDVlMTczZWY3YjBjMDMKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uaApA
QCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIgdGhl
IG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YK
KyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
CisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCisg
KiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhET01Db25maWd1cmF0aW9uX2gKKyNkZWZpbmUg
VjhET01Db25maWd1cmF0aW9uX2gKKworI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2luY2x1
ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhET01Db25maWd1cmF0
aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgZm9sbG93aW5nIEJhdGNoIHN0cnVjdHMgYW5kIG1l
dGhvZHMgYXJlIHVzZWQgZm9yIHNldHRpbmcgbXVsdGlwbGUKKyAgICAvLyBwcm9wZXJ0aWVzIG9u
IGFuIE9iamVjdFRlbXBsYXRlLCB1c2VkIGZyb20gdGhlIGdlbmVyYXRlZCBiaW5kaW5ncworICAg
IC8vIGluaXRpYWxpemF0aW9uIChDb25maWd1cmVYWFhUZW1wbGF0ZSkuIFRoaXMgZ3JlYXRseSBy
ZWR1Y2VzIHRoZSBiaW5hcnkKKyAgICAvLyBzaXplIGJ5IG1vdmluZyBmcm9tIGNvZGUgZHJpdmVu
IHNldHVwIHRvIGRhdGEgdGFibGUgZHJpdmVuIHNldHVwLgorCisgICAgLy8gQmF0Y2hlZEF0dHJp
YnV0ZSB0cmFuc2xhdGVzIGludG8gY2FsbHMgdG8gU2V0QWNjZXNzb3IoKSBvbiBlaXRoZXIgdGhl
CisgICAgLy8gaW5zdGFuY2Ugb3IgdGhlIHByb3RvdHlwZSBPYmplY3RUZW1wbGF0ZSwgYmFzZWQg
b24gfG9uUHJvdG98LgorICAgIHN0cnVjdCBCYXRjaGVkQXR0cmlidXRlIHsKKyAgICAgICAgY29u
c3QgY2hhciogY29uc3QgbmFtZTsKKyAgICAgICAgdjg6OkFjY2Vzc29yR2V0dGVyIGdldHRlcjsK
KyAgICAgICAgdjg6OkFjY2Vzc29yU2V0dGVyIHNldHRlcjsKKyAgICAgICAgV3JhcHBlclR5cGVJ
bmZvKiBkYXRhOworICAgICAgICB2ODo6QWNjZXNzQ29udHJvbCBzZXR0aW5nczsKKyAgICAgICAg
djg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZTsKKyAgICAgICAgYm9vbCBvblByb3RvOwor
ICAgIH07CisKKyAgICBzdGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModjg6Okhh
bmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291
bnQpOworCisgICAgdGVtcGxhdGU8Y2xhc3MgT2JqZWN0T3JUZW1wbGF0ZT4KKyAgICBzdGF0aWMg
aW5saW5lIHZvaWQgY29uZmlndXJlQXR0cmlidXRlKHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0
ZT4gaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+IHByb3RvLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSYgYXR0cmlidXRlKQor
ICAgICAgICB7CisgICAgICAgICAgICAoYXR0cmlidXRlLm9uUHJvdG8gPyBwcm90byA6IGluc3Rh
bmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KGF0dHJpYnV0ZS5uYW1lKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBhdHRyaWJ1dGUuZ2V0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0ZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OkV4dGVybmFsOjpXcmFwKGF0dHJpYnV0ZS5kYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGlu
Z3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYXR0cmlidXRlLmF0dHJpYnV0ZSk7CisgICAgICAgIH0KKworICAgIC8vIEJh
dGNoZWRDb25zdGFudCB0cmFuc2xhdGVzIGludG8gY2FsbHMgdG8gU2V0KCkgZm9yIHNldHRpbmcg
dXAgYW4gb2JqZWN0J3MKKyAgICAvLyBjb25zdGFudHMuIEl0IHNldHMgdGhlIGNvbnN0YW50IG9u
IGJvdGggdGhlIEZ1bmN0aW9uVGVtcGxhdGUgYW5kIHRoZQorICAgIC8vIE9iamVjdFRlbXBsYXRl
LiBQcm9wZXJ0eUF0dHJpYnV0ZXMgaXMgYWx3YXlzIFJlYWRPbmx5LgorICAgIHN0cnVjdCBCYXRj
aGVkQ29uc3RhbnQgeworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOworICAgICAgICBp
bnQgdmFsdWU7CisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQ29uc3Rh
bnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ29uc3Rh
bnQqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjb25z
dGFudENvdW50KTsKKworICAgIC8vIEJhdGNoZWRDYWxsYmFjayB0cmFuc2xhdGVzIGludG8gY2Fs
bHMgdG8gU2V0KCkgb24gdGhlIHByb3RvdHlwZSBPYmplY3RUZW1wbGF0ZS4KKyAgICBzdHJ1Y3Qg
QmF0Y2hlZENhbGxiYWNrIHsKKyAgICAgICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsKKyAgICAg
ICAgdjg6Okludm9jYXRpb25DYWxsYmFjayBjYWxsYmFjazsKKyAgICB9OworCisgICAgc3RhdGlj
IHZvaWQgYmF0Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxh
dGU+LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFuZGxl
PHY4OjpTaWduYXR1cmU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqLCAKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCk7CisKKyAgICBzdGF0aWMgdjg6
OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIGludGVyZmFjZU5hbWUsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3MsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmllbGRDb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNr
KiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNpemVfdCBjYWxsYmFja0NvdW50KTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFY4RE9NQ29uZmlndXJhdGlvbl9oCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157622</attachid>
            <date>2012-08-09 20:20:33 -0700</date>
            <delta_ts>2012-08-10 16:18:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93615-20120810122005.patch</filename>
            <type>text/plain</type>
            <size>59136</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZDdlM2Q3YTRlYzU4
YTYwOGYxOWI5YWM4Y2VjY2M2OWY4NDgyZS4uMDJmM2IwMGJhZWFiOGNhYWFlMGEzM2JmZTZiYjg2
NmU1ZGVjZGY4NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIEludHJvZHVj
ZSBWOERPTUNvbmZpZ3VyYXRpb24gY2xhc3MgYW5kIG1ha2UgYmF0Y2hDb25maWd1cmVYWFgoKSBt
ZXRob2RzIHN0YXRpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBQZXIgdGhlIGRpc2N1c3Npb24gaW4gYnVnIDkzMjM5LAorCisgICAgICAgICgxKSBSZW5h
bWUgVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcyB0byBWOERPTUNvbmZpZ3VyYXRp
b24uCisgICAgICAgICgyKSBJbnRyb2R1Y2UgVjhET01Db25maWd1cmF0aW9uIGNsYXNzIGFuZCBt
YWtlIGJhdGNoQ29uZmlndXJlWFhYKCkgbWV0aG9kcyBzdGF0aWMuCisKKyAgICAgICAgTm8gdGVz
dHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIFVzZVY4LmNtYWtlOgorICAg
ICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5l
cmF0b3JWOC5wbToKKyAgICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAq
IGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHA6CisgICAgICAgIChX
ZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01P
YmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJU
ZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRl
c3RFeGNlcHRpb25UZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdEludGVyZmFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE1lZGlhUXVl
cnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmln
dXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1
cmVWOFRlc3ROb2RlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpWOFRlc3RPYmo6
Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9W
OEJpbmRpbmcuaDoKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0
ZXNBbmRNZXRob2RzLmg6IFJlbW92ZWQuCisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01Db25m
aWd1cmF0aW9uLmNwcDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwLgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQXR0
cmlidXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6
YmF0Y2hDb25maWd1cmVDYWxsYmFja3MpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1
cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhET01D
b25maWd1cmF0aW9uLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChWOERP
TUNvbmZpZ3VyYXRpb24pOgorICAgICAgICAoQmF0Y2hlZEF0dHJpYnV0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZSk6CisgICAgICAg
IChCYXRjaGVkQ29uc3RhbnQpOgorICAgICAgICAoQmF0Y2hlZENhbGxiYWNrKToKKworMjAxMi0w
OC0wOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKICAgICAgICAgW1Y4
XSBSZW5hbWUgVjhCaW5kaW5nUGVyQ29udGV4dERhdGEgdG8gVjhQZXJDb250ZXh0RGF0YQogICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTM1OTUKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvVXNlVjguY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VW
OC5jbWFrZQppbmRleCBlYWU5NjQzYzc2M2E0MDA0YzJjNWZjZjE0NmJlM2NkZGY1ZjBmZWQ3Li42
Mzg5MGFmZWJlNmQwNDhkYzRmMGIzN2QwZjM3Y2EzMDBhM2RiMWMzIDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZQpA
QCAtNDcsOSArNDcsOCBAQCBMSVNUKEFQUEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5n
cy92OC9WOEFic3RyYWN0RXZlbnRMaXN0ZW5lci5jcHAKICAgICBiaW5kaW5ncy92OC9WOEJpbmRp
bmcuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhCaW5kaW5nSGVscGVycy5jcHAKLSAgICBiaW5kaW5n
cy92OC9WOFBlcklzb2xhdGVEYXRhLmNwcAotICAgIGJpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9N
QXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwLAogICAgIGJpbmRpbmdzL3Y4L1Y4Q29sbGVjdGlvbi5j
cHAKKyAgICBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24uY3BwLAogICAgIGJpbmRpbmdz
L3Y4L1Y4RE9NTWFwLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwCiAg
ICAgYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtNjIsNiArNjEsNyBAQCBMSVNUKEFQ
UEVORCBXZWJDb3JlX1NPVVJDRVMKICAgICBiaW5kaW5ncy92OC9WOExhenlFdmVudExpc3RlbmVy
LmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4Tm9kZUZpbHRlckNvbmRpdGlvbi5jcHAKICAgICBiaW5k
aW5ncy92OC9WOFBlckNvbnRleHREYXRhLmNwcAorICAgIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0
ZURhdGEuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKICAgICBiaW5kaW5ncy92OC9W
OFJlY3Vyc2lvblNjb3BlLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4VXRpbGl0aWVzLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS5neXBpCmluZGV4IDZmMjZmNTUyZWI3ZDg2ZGFmNmU3N2ZlZTNmOGZhNzgzMWE0MDY1NDAu
LjZkNjI5OTk2NjZkNWRlZWVkYzk5M2I1ODU4OTVlMDIxMzkyMGJhNjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkKQEAgLTIyNDUsMTAgKzIyNDUsMTAgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJp
bmRpbmdIZWxwZXJzLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhCaW5kaW5nSGVs
cGVycy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdNYWNyb3MuaCcsCi0g
ICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9k
cy5jcHAnLAotICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRl
c0FuZE1ldGhvZHMuaCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNw
cCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmgnLAorICAgICAgICAg
ICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAnLAorICAgICAgICAgICAgJ2Jp
bmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92
OC9WOERPTU1hcC5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NTWFwLmgnLAog
ICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4RE9NV2luZG93U2hlbGwuY3BwJywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KaW5kZXgg
ZDJlOGIxMzQ0MmQxODEwM2RhNGQ4MWQ1NmRjN2Y4ZWY5MjM2NTRlYy4uNWYxMmMwNzM0YTY5MGJj
NzAxNDUzZmVlMzM4OWJjODJkOGE0ZDU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI3MjYsNyArMjcyNiw3IEBAIEVO
RAogICAgICRhdHRyaWJ1dGVzID0gXEBub3JtYWxBdHRyaWJ1dGVzOwogICAgICMgUHV0IHRoZSBh
dHRyaWJ1dGVzIHRoYXQgZGlzYWxsb3cgc2hhZG93aW5nIG9uIHRoZSBzaGFkb3cgb2JqZWN0Lgog
ICAgIGlmIChAZGlzYWxsb3dzU2hhZG93aW5nKSB7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgc2hhZG93QXR0cnNbXSA9IHtcbiIpOwor
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRBdHRyaWJ1dGUgc2hhZG93QXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5l
cmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRhKCRkYXRhTm9kZSwgXEBkaXNhbGxvd3NTaGFkb3dpbmcp
OwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07XG5cbiIpOwogICAgIH0KQEAgLTI3MzQs
NyArMjczNCw3IEBAIEVORAogICAgIG15ICRoYXNfYXR0cmlidXRlcyA9IDA7CiAgICAgaWYgKEAk
YXR0cmlidXRlcykgewogICAgICAgICAkaGFzX2F0dHJpYnV0ZXMgPSAxOwotICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNl
TmFtZX1BdHRyc1tdID0ge1xuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGlj
IGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSAke2ludGVyZmFjZU5h
bWV9QXR0cnNbXSA9IHtcbiIpOwogICAgICAgICBHZW5lcmF0ZUJhdGNoZWRBdHRyaWJ1dGVEYXRh
KCRkYXRhTm9kZSwgJGF0dHJpYnV0ZXMpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIn07
XG5cbiIpOwogICAgIH0KQEAgLTI3NDksNyArMjc0OSw3IEBAIEVORAogICAgICAgICBuZXh0IGlm
ICFJc1N0YW5kYXJkRnVuY3Rpb24oJGRhdGFOb2RlLCAkZnVuY3Rpb24pOwogICAgICAgICBpZiAo
ISRoYXNfY2FsbGJhY2tzKSB7CiAgICAgICAgICAgICAkaGFzX2NhbGxiYWNrcyA9IDE7Ci0gICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sg
JHtpbnRlcmZhY2VOYW1lfUNhbGxiYWNrc1tdID0ge1xuIik7CisgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxs
YmFjayAke2ludGVyZmFjZU5hbWV9Q2FsbGJhY2tzW10gPSB7XG4iKTsKICAgICAgICAgfQogICAg
ICAgICBteSAkbmFtZSA9ICRmdW5jdGlvbi0+c2lnbmF0dXJlLT5uYW1lOwogICAgICAgICBteSAk
Y2FsbGJhY2sgPSBHZXRGdW5jdGlvblRlbXBsYXRlQ2FsbGJhY2tOYW1lKCRmdW5jdGlvbiwgJGlu
dGVyZmFjZU5hbWUpOwpAQCAtMjc2OCw3ICsyNzY4LDcgQEAgRU5ECiAgICAgbXkgQGNvbnN0YW50
c0VuYWJsZWRBdFJ1bnRpbWU7CiAgICAgaWYgKEB7JGRhdGFOb2RlLT5jb25zdGFudHN9KSB7CiAg
ICAgICAgICRoYXNfY29uc3RhbnRzID0gMTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJz
dGF0aWMgY29uc3QgQmF0Y2hlZENvbnN0YW50ICR7aW50ZXJmYWNlTmFtZX1Db25zdHNbXSA9IHtc
biIpOworICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRpYyBjb25zdCBWOERPTUNvbmZp
Z3VyYXRpb246OkJhdGNoZWRDb25zdGFudCAke2ludGVyZmFjZU5hbWV9Q29uc3RzW10gPSB7XG4i
KTsKICAgICB9CiAgICAgZm9yZWFjaCBteSAkY29uc3RhbnQgKEB7JGRhdGFOb2RlLT5jb25zdGFu
dHN9KSB7CiAgICAgICAgIG15ICRuYW1lID0gJGNvbnN0YW50LT5uYW1lOwpAQCAtMjgyMyw3ICsy
ODIzLDcgQEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7CiBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdFRlbXBsYXRlPiBDb25maWd1cmVTaGFkb3dPYmplY3RU
ZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IHRlbXBsKQogewotICAg
IGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVt
cGxhdGU+KCksIHNoYWRvd0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKHNoYWRvd0F0dHJzKSk7Cisg
ICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXModGVtcGwsIHY4
OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPigpLCBzaGFkb3dBdHRycywgV1RGX0FSUkFZX0xF
TkdUSChzaGFkb3dBdHRycykpOwogCiAgICAgLy8gSW5zdGFsbCBhIHNlY3VyaXR5IGhhbmRsZXIg
d2l0aCBWOC4KICAgICB0ZW1wbC0+U2V0QWNjZXNzQ2hlY2tDYWxsYmFja3MoVjhET01XaW5kb3c6
Om5hbWVkU2VjdXJpdHlDaGVjaywgVjhET01XaW5kb3c6OmluZGV4ZWRTZWN1cml0eUNoZWNrLCB2
ODo6RXh0ZXJuYWw6OldyYXAoJlY4RE9NV2luZG93OjppbmZvKSk7CkBAIC0yODQ5LDEyICsyODQ5
LDEyIEBAIEVORAogICAgICAgICBteSAkZW5hYmxlX2Z1bmN0aW9uID0gR2V0UnVudGltZUVuYWJs
ZUZ1bmN0aW9uTmFtZSgkZGF0YU5vZGUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxF
TkQpOwogICAgIGlmICghJHtlbmFibGVfZnVuY3Rpb259KCkpCi0gICAgICAgIGRlZmF1bHRTaWdu
YXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0
ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDApOwor
ICAgICAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCBcIlwiLCAkcGFyZW50Q2xhc3NUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5h
bWV9OjppbnRlcm5hbEZpZWxkQ291bnQsIDAsIDAsIDAsIDApOwogICAgIGVsc2UKIEVORAogICAg
IH0KICAgICBwdXNoKEBpbXBsQ29udGVudCwgIDw8RU5EKTsKLSAgICBkZWZhdWx0U2lnbmF0dXJl
ID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiLCAk
cGFyZW50Q2xhc3NUZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291
bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
VGVtcGxhdGUoZGVzYywgXCIke3Zpc2libGVJbnRlcmZhY2VOYW1lfVwiLCAkcGFyZW50Q2xhc3NU
ZW1wbGF0ZSwgVjgke2ludGVyZmFjZU5hbWV9OjppbnRlcm5hbEZpZWxkQ291bnQsCiBFTkQKICAg
ICAjIFNldCB1cCBvdXIgYXR0cmlidXRlcyBpZiB3ZSBoYXZlIHRoZW0KICAgICBpZiAoJGhhc19h
dHRyaWJ1dGVzKSB7CkBAIC0yOTA1LDEwICsyOTA1LDEwIEBAIEVORAogICAgICAgICBteSAkY29u
ZGl0aW9uYWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmlu
ZygkcnVudGltZV9hdHRyLT5zaWduYXR1cmUpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IlxuI2lmICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZV9mdW5jdGlvbn0oKSkg
e1xuIik7Ci0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29uc3Qg
QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XFxcbiIpOworICAgICAgICBwdXNoKEBpbXBsQ29u
dGVudCwgIiAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0
dHJpYnV0ZSBhdHRyRGF0YSA9XFxcbiIpOwogICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRB
dHRyaWJ1dGUoJGludGVyZmFjZU5hbWUsICRydW50aW1lX2F0dHIsICI7IiwgIiAgICAiKTsKICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgY29uZmlndXJlQXR0cmli
dXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOworICAgICAgICBWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKICAgICB9
CiBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNlbmRpZiAvLyAke2NvbmRpdGlv
bmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpAQCAtMjkyMyw4ICsyOTIzLDgg
QEAgRU5ECiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0
cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAgICAgcHVzaChAaW1wbENvbnRl
bnQsICIgICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4iKTsKICAgICAgICAgcHVzaChA
aW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRDb25zdGFu
dCBjb25zdERhdGEgPSB7IiR7bmFtZX0iLCBzdGF0aWNfY2FzdDxzaWduZWQgaW50Pigke3ZhbHVl
fSl9OwotICAgICAgICBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJmNvbnN0
RGF0YSwgMSk7CisgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNo
ZWRDb25zdGFudCBjb25zdERhdGEgPSB7IiR7bmFtZX0iLCBzdGF0aWNfY2FzdDxzaWduZWQgaW50
Pigke3ZhbHVlfSl9OworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJl
Q29uc3RhbnRzKGRlc2MsIHByb3RvLCAmY29uc3REYXRhLCAxKTsKIEVORAogICAgICAgICBwdXNo
KEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJc
biNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5n
OwpAQCAtMjk1MSw3ICsyOTUxLDcgQEAgRU5ECiAKICAgICBpZiAoJGhhc19jb25zdGFudHMpIHsK
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKLSAgICBiYXRjaENvbmZpZ3VyZUNv
bnN0YW50cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfUNvbnN0cywgV1RGX0FSUkFZX0xF
TkdUSCgke2ludGVyZmFjZU5hbWV9Q29uc3RzKSk7CisgICAgVjhET01Db25maWd1cmF0aW9uOjpi
YXRjaENvbmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgJHtpbnRlcmZhY2VOYW1lfUNvbnN0
cywgV1RGX0FSUkFZX0xFTkdUSCgke2ludGVyZmFjZU5hbWV9Q29uc3RzKSk7CiBFTkQKICAgICB9
CiAKQEAgLTMwNDIsMTAgKzMwNDIsMTAgQEAgRU5ECiAgICAgICAgICAgICAgICAgbXkgJGNvbmRp
dGlvbmFsU3RyaW5nID0gJGNvZGVHZW5lcmF0b3ItPkdlbmVyYXRlQ29uZGl0aW9uYWxTdHJpbmco
JHJ1bnRpbWVBdHRyLT5zaWduYXR1cmUpOwogICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiXG4jaWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmlu
ZzsKICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICBpZiAoJHtlbmFibGVG
dW5jdGlvbn0oaW1wbC0+ZG9jdW1lbnQoKSkpIHtcbiIpOwotICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgICAgICBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBhdHRy
RGF0YSA9XFxcbiIpOworICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAg
ICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJE
YXRhID1cXFxuIik7CiAgICAgICAgICAgICAgICAgR2VuZXJhdGVTaW5nbGVCYXRjaGVkQXR0cmli
dXRlKCRpbnRlcmZhY2VOYW1lLCAkcnVudGltZUF0dHIsICI7IiwgIiAgICAiKTsKICAgICAgICAg
ICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBjb25maWd1cmVBdHRy
aWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgICAgICAgIFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogRU5E
CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgfVxuIik7CiAgICAgICAg
ICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWYgLy8gJHtjb25kaXRpb25hbFN0cmlu
Z31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IGNl
MzA1MjU0MTI1Y2VlODBhNzkwZWViNjIzMjNjMzVkN2VlYjkwYjEuLjk2ZTIwNTNlMmNkYTIwNzk3
MTI1ODU5Mjc2MDhlMDVlM2M4YTU4ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtNzcsNyAr
NzcsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOChGbG9hdDY0QXJyYXkqIGltcGwsIHY4
OjpJc29sYXRlKiBpc29sYXRlKQogICAgIHJldHVybiB3cmFwcGVyOwogfQogCi1zdGF0aWMgY29u
c3QgQmF0Y2hlZENhbGxiYWNrIEZsb2F0NjRBcnJheUNhbGxiYWNrc1tdID0geworc3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIEZsb2F0NjRBcnJheUNhbGxi
YWNrc1tdID0gewogICAgIHsic2V0IiwgRmxvYXQ2NEFycmF5VjhJbnRlcm5hbDo6c2V0Q2FsbGJh
Y2t9LAogfTsKIApAQCAtOTIsNyArOTIsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogICAg
IGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVy
ZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVt
cGxhdGUoZGVzYywgIkZsb2F0NjRBcnJheSIsIFY4QXJyYXlCdWZmZXJWaWV3OjpHZXRUZW1wbGF0
ZSgpLCBWOEZsb2F0NjRBcnJheTo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWdu
YXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJGbG9h
dDY0QXJyYXkiLCBWOEFycmF5QnVmZmVyVmlldzo6R2V0VGVtcGxhdGUoKSwgVjhGbG9hdDY0QXJy
YXk6OmludGVybmFsRmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKICAgICAgICAgRmxvYXQ2NEFy
cmF5Q2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RIKEZsb2F0NjRBcnJheUNhbGxiYWNrcykpOwog
ICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQg
d2lsbCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKaW5kZXgg
YTRhZTc4YzhjYjNhYTUxYWY3OWNkZTU4NmIxNmQ0NDYwZjIyMWI0ZS4uNWExM2MxZDhiMjVmMzM3
MGM0NWM0MDcxZDAwYTgwNjRhZmQxNjM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKQEAgLTExMCw3ICsxMTAsNyBAQCBzdGF0aWMgdm9pZCBUZXN0QWN0aXZlRE9NT2JqZWN0
RG9tYWluU2FmZUZ1bmN0aW9uU2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbAogCi1zdGF0aWMgY29uc3Qg
QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnNbXSA9IHsKK3N0YXRpYyBj
b25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdEFjdGl2ZURPTU9i
amVjdEF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICdleGNpdGluZ0F0dHInIChUeXBlOiAn
cmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7ImV4Y2l0aW5nQXR0ciIsIFRl
c3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpleGNpdGluZ0F0dHJBdHRyR2V0dGVyLCAwLCAw
IC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVM
VCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9u
IGluc3RhbmNlICovfSwKIH07CkBAIC0xMjAsNyArMTIwLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RU
ZW1wbGEKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4
OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNv
bmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0QWN0aXZlRE9NT2JqZWN0Iiwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW50ZXJu
YWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246
OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0QWN0aXZlRE9NT2JqZWN0Iiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEFjdGl2ZURPTU9iamVjdDo6aW50
ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnMsIFdURl9B
UlJBWV9MRU5HVEgoVGVzdEFjdGl2ZURPTU9iamVjdEF0dHJzKSwKICAgICAgICAgMCwgMCk7CiAg
ICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3
aWxsIG5vdCBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKaW5k
ZXggYjk2NTk1ZDc4NWY4ZGI0MTY0MTU3ZTA1MThkNTBiOTllZTkyNjRlMC4uZmVjYzQwYzg2Yjc3
NTJmNWM5NDRmNzg5MWVkODY4ZTBmNTQyMGU1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFt
ZWRHZXR0ZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gYW5vdGhlckZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKIAog
fSAvLyBuYW1lc3BhY2UgVGVzdEN1c3RvbU5hbWVkR2V0dGVyVjhJbnRlcm5hbAogCi1zdGF0aWMg
Y29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RDdXN0b21OYW1lZEdldHRlckNhbGxiYWNrc1tdID0g
eworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFRlc3RD
dXN0b21OYW1lZEdldHRlckNhbGxiYWNrc1tdID0gewogICAgIHsiYW5vdGhlckZ1bmN0aW9uIiwg
VGVzdEN1c3RvbU5hbWVkR2V0dGVyVjhJbnRlcm5hbDo6YW5vdGhlckZ1bmN0aW9uQ2FsbGJhY2t9
LAogfTsKIApAQCAtNjEsNyArNjEsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyVGVtcAogICAgIGRl
c2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4g
ZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxh
dGUoZGVzYywgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW50ZXJuYWxGaWVsZENv
dW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZVRlbXBsYXRlKGRlc2MsICJUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIiLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXI6OmludGVybmFs
RmllbGRDb3VudCwKICAgICAgICAgMCwgMCwKICAgICAgICAgVGVzdEN1c3RvbU5hbWVkR2V0dGVy
Q2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RDdXN0b21OYW1lZEdldHRlckNhbGxiYWNr
cykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNl
cywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNw
cAppbmRleCA1NjU0MzYyZTM0NGZkYjIzMzY4YTkxNDQ5Njc0MmFjOWNiOWZhYWMzLi42ZTc1NWE3
Y2RiNGI3NDBiYTUyYTM0YzdkYmZmNTkwNTZjMjBjZjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
Q29uc3RydWN0b3IuY3BwCkBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gYXR0cjJBdHRyR2V0dGVyKHY4OjpMb2NhbDx2ODo6U3RyaW5nPiBuYW1lLCBjb25zdCB2
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RFdmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbAogCi1zdGF0
aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzW10gPSB7
CitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RF
dmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHIxJyAoVHlw
ZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCiAgICAgeyJhdHRyMSIsIFRlc3RF
dmVudENvbnN0cnVjdG9yVjhJbnRlcm5hbDo6YXR0cjFBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRh
dGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRp
Y19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNl
ICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ2F0dHIyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0
ZScgRXh0QXR0cjogJ0luaXRpYWxpemVkQnlFdmVudENvbnN0cnVjdG9yJykKQEAgLTEwMiw3ICsx
MDIsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbAogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
LSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFdmVu
dENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
VGVzdEV2ZW50Q29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2ln
bmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVz
dEV2ZW50Q29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4o
KSwgVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBU
ZXN0RXZlbnRDb25zdHJ1Y3RvckF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RFdmVudENvbnN0
cnVjdG9yQXR0cnMpLAogICAgICAgICAwLCAwKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNp
Z25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmNwcAppbmRleCBiMzk1Yjk1NGNkNTM4NTU1YTc3NmY4ZDcxZmE1ZTY1N2Ez
ZjE4MzA2Li44N2VlYThiZjBlYmJjZGE5MzFjNGNmYmY4NjI4MTA0NjFhNjBkYzM0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRU
YXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFdmVudFRhcmdldC5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBzdGF0aWMgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IGRpc3BhdGNoRXZlbnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBh
cmdzKQogCiB9IC8vIG5hbWVzcGFjZSBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsCiAKLXN0YXRp
YyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdEV2ZW50VGFyZ2V0Q2FsbGJhY2tzW10gPSB7Citz
dGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgVGVzdEV2ZW50
VGFyZ2V0Q2FsbGJhY2tzW10gPSB7CiAgICAgeyJpdGVtIiwgVGVzdEV2ZW50VGFyZ2V0VjhJbnRl
cm5hbDo6aXRlbUNhbGxiYWNrfSwKICAgICB7ImFkZEV2ZW50TGlzdGVuZXIiLCBUZXN0RXZlbnRU
YXJnZXRWOEludGVybmFsOjphZGRFdmVudExpc3RlbmVyQ2FsbGJhY2t9LAogICAgIHsicmVtb3Zl
RXZlbnRMaXN0ZW5lciIsIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWw6OnJlbW92ZUV2ZW50TGlz
dGVuZXJDYWxsYmFja30sCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRl
KHYKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpT
aWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXZlbnRUYXJnZXQiLCB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXZlbnRUYXJnZXQ6OmludGVybmFsRmllbGRDb3Vu
dCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50VGFyZ2V0Iiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV2ZW50VGFyZ2V0OjppbnRlcm5hbEZpZWxkQ291bnQsCiAg
ICAgICAgIDAsIDAsCiAgICAgICAgIFRlc3RFdmVudFRhcmdldENhbGxiYWNrcywgV1RGX0FSUkFZ
X0xFTkdUSChUZXN0RXZlbnRUYXJnZXRDYWxsYmFja3MpKTsKICAgICBVTlVTRURfUEFSQU0oZGVm
YXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uY3BwCmluZGV4IGMwMjE2ZWUzYWZiMDZjMTcwNGZlMjU3YTgzODRmYWU2
ZTVhNjBiNWUuLjliYjk5YWMzZTc5NjNhZDkzNmFlZWZhZDk2ZmFmNjdhMmUwYjc5ZWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RFeGNlcHRpb24uY3BwCkBAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gbmFtZUF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0
IHY4CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RFeGNlcHRpb25WOEludGVybmFsCiAKLXN0YXRpYyBj
b25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RFeGNlcHRpb25BdHRyc1tdID0geworc3RhdGljIGNv
bnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0RXhjZXB0aW9uQXR0
cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ25hbWUnIChUeXBlOiAncmVhZG9ubHkgYXR0cmli
dXRlJyBFeHRBdHRyOiAnJykKICAgICB7Im5hbWUiLCBUZXN0RXhjZXB0aW9uVjhJbnRlcm5hbDo6
bmFtZUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKQEAgLTU3LDcgKzU3LDcgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RFeGNlcHRpb25UZW1wbGF0ZSh2ODoKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwog
CiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVm
YXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXhjZXB0aW9uIiwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV4Y2VwdGlvbjo6
aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3Vy
YXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXhjZXB0aW9uIiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdEV4Y2VwdGlvbjo6aW50ZXJuYWxG
aWVsZENvdW50LAogICAgICAgICBUZXN0RXhjZXB0aW9uQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgo
VGVzdEV4Y2VwdGlvbkF0dHJzKSwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRl
ZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcAppbmRleCBlZjZiZDVkNDA4MTU2NDA1YTExNmZiNTAzYjEyNmJj
MDljODVhZTU1Li40N2U0MjI4NDAyZGY4NGJhNzEzNTM3ZTY4NWQwMjE4NGRiMzBhZWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0SW50ZXJmYWNlLmNwcApAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gc3VwcGxlbWVudGFsTWV0aG9kNENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVu
dHMmIGFyCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RJbnRlcmZhY2VWOEludGVybmFsCiAKLXN0YXRp
YyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RJbnRlcmZhY2VBdHRyc1tdID0geworc3RhdGlj
IGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0SW50ZXJmYWNl
QXR0cnNbXSA9IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24x
MikKICAgICAvLyBBdHRyaWJ1dGUgJ3N1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0cicgKFR5
cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICdDb25kaXRpb25hbCBJbXBsZW1lbnRl
ZEJ5JykKICAgICB7InN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ciIsIFRlc3RJbnRlcmZh
Y2VWOEludGVybmFsOjpzdXBwbGVtZW50YWxTdGF0aWNSZWFkT25seUF0dHJBdHRyR2V0dGVyLCAw
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfSwKQEAgLTIxNiw3ICsyMTYsNyBAQCBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0SW50ZXJmYWNlQXR0cnNbXSA9IHsKICNlbmRpZiAvLyBFTkFCTEUoQ29u
ZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKIH07CiAKLXN0YXRpYyBjb25zdCBCYXRj
aGVkQ2FsbGJhY2sgVGVzdEludGVyZmFjZUNhbGxiYWNrc1tdID0geworc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFRlc3RJbnRlcmZhY2VDYWxsYmFja3Nb
XSA9IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAg
ICB7InN1cHBsZW1lbnRhbE1ldGhvZDEiLCBUZXN0SW50ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxl
bWVudGFsTWV0aG9kMUNhbGxiYWNrfSwKICNlbmRpZgpAQCAtMjI1LDcgKzIyNSw3IEBAIHN0YXRp
YyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdEludGVyZmFjZUNhbGxiYWNrc1tdID0gewogI2Vu
ZGlmCiB9OwogCi1zdGF0aWMgY29uc3QgQmF0Y2hlZENvbnN0YW50IFRlc3RJbnRlcmZhY2VDb25z
dHNbXSA9IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDb25zdGFu
dCBUZXN0SW50ZXJmYWNlQ29uc3RzW10gPSB7CiAjaWYgRU5BQkxFKENvbmRpdGlvbjExKSB8fCBF
TkFCTEUoQ29uZGl0aW9uMTIpCiAgICAgeyJTVVBQTEVNRU5UQUxDT05TVEFOVDEiLCBzdGF0aWNf
Y2FzdDxzaWduZWQgaW50PigxKX0sCiAjZW5kaWYKQEAgLTI3OSw3ICsyNzksNyBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVy
ZmFjZVRlbXBsYXRlKHY4OgogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2
ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2ln
bmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RJbnRlcmZhY2UiLCB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0SW50ZXJmYWNlOjppbnRlcm5h
bEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6
Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RJbnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0SW50ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291
bnQsCiAgICAgICAgIFRlc3RJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0SW50
ZXJmYWNlQXR0cnMpLAogICAgICAgICBUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzLCBXVEZfQVJSQVlf
TEVOR1RIKFRlc3RJbnRlcmZhY2VDYWxsYmFja3MpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCkBAIC0z
MDAsNyArMzAwLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiBDb25maWd1cmVWOFRlc3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICNpZiBFTkFCTEUoQ29uZGl0
aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKICAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6
TmV3KCJzdXBwbGVtZW50YWxNZXRob2Q0IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVz
dEludGVyZmFjZVY4SW50ZXJuYWw6OnN1cHBsZW1lbnRhbE1ldGhvZDRDYWxsYmFjaywgdjhVbmRl
ZmluZWQoKSwgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+KCkpKTsKICNlbmRpZiAvLyBFTkFCTEUo
Q29uZGl0aW9uMTEpIHx8IEVOQUJMRShDb25kaXRpb24xMikKLSAgICBiYXRjaENvbmZpZ3VyZUNv
bnN0YW50cyhkZXNjLCBwcm90bywgVGVzdEludGVyZmFjZUNvbnN0cywgV1RGX0FSUkFZX0xFTkdU
SChUZXN0SW50ZXJmYWNlQ29uc3RzKSk7CisgICAgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENv
bmZpZ3VyZUNvbnN0YW50cyhkZXNjLCBwcm90bywgVGVzdEludGVyZmFjZUNvbnN0cywgV1RGX0FS
UkFZX0xFTkdUSChUZXN0SW50ZXJmYWNlQ29uc3RzKSk7CiAKICAgICAvLyBDdXN0b20gdG9TdHJp
bmcgdGVtcGxhdGUKICAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5n
VGVtcGxhdGUoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKaW5kZXggYzc0MGI5NTU2MGI3OTY5NWY2NWUwODdmYjE0NjA5ZmQwMTlhYmZhMS4uMjY1ZjMw
ODc5MDAyMWRmNTY5NWM1NzAwMDYxOTk5M2Q4ZGJlODI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IG1ldGhvZENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFy
Z3MpCiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVjhJbnRlcm5h
bAogCi1zdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyQ2FsbGJhY2tzW10gPSB7CitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRj
aGVkQ2FsbGJhY2sgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJDYWxsYmFja3NbXSA9IHsKICAg
ICB7Im1ldGhvZCIsIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyVjhJbnRlcm5hbDo6bWV0aG9k
Q2FsbGJhY2t9LAogfTsKIApAQCAtNjIsNyArNjIsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZQogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmln
dXJlVGVtcGxhdGUoZGVzYywgIlRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyIiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVu
ZXI6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25m
aWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlz
dGVuZXIiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0TWVk
aWFRdWVyeUxpc3RMaXN0ZW5lcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAog
ICAgICAgICBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNhbGxiYWNrcywgV1RGX0FSUkFZX0xF
TkdUSChUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNhbGxiYWNrcykpOwogICAgIFVOVVNFRF9Q
QVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUg
dXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAppbmRleCA5YWU2NzRiYmI2
ZmQ3NDJjNDQ4NWYxMGY5ZWI0MmVlOWNjOGRiMjZiLi42ZTdjNmUyNmI5NGExMDhmYmJkNGIwZDBm
ZTQyZDgxNDYwNDY3OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBA
IC0xMDcsNyArMTA3LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPiBDb25maWd1cmVWOFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGwKICAgICBkZXNjLT5SZWFk
T25seVByb3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRT
aWduYXR1cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2Ms
ICJUZXN0TmFtZWRDb25zdHJ1Y3RvciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBs
YXRlPigpLCBWOFRlc3ROYW1lZENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3ROYW1lZENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwK
ICAgICAgICAgMCwgMCwKICAgICAgICAgMCwgMCk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUu
Y3BwCmluZGV4IDk5MTZjYzE2ZmY3MTg0OTIzZGJiZGRjZGNkODk3ZTFlZWUyYjQ1NzcuLmNlNzNj
NzE4NTYzZDE4YmRjOGZkOWFhY2NmODcwOTM4ZTcwNGVmNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAKQEAgLTY1
LDcgKzY1LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBD
b25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUodjg6OlBlcnMKICAgICBkZXNjLT5SZWFkT25seVBy
b3RvdHlwZSgpOwogCiAgICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1
cmU7Ci0gICAgZGVmYXVsdFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0
Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoKSwgVjhUZXN0Tm9kZTo6aW50ZXJuYWxGaWVsZENv
dW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3Vy
ZVRlbXBsYXRlKGRlc2MsICJUZXN0Tm9kZSIsIFY4Tm9kZTo6R2V0VGVtcGxhdGUoKSwgVjhUZXN0
Tm9kZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAogICAgICAgICAwLCAwKTsK
ICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0
IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCmluZGV4IDU3MDAwZjQxM2IwMzNkNjBjOTZiMWU1
NWI5MWNlMzQ2OTVhZjhlN2IuLmE2YTRiODk0MDk2NzUxZjQ4NTBjYzAzMWM1ODY3YWVmMGFlNGI0
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RPYmouY3BwCkBAIC0xOTE3LDcgKzE5MTcsNyBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IHN0cmljdEZ1bmN0aW9uQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJn
cykKIAogfSAvLyBuYW1lc3BhY2UgVGVzdE9ialY4SW50ZXJuYWwKIAotc3RhdGljIGNvbnN0IEJh
dGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CitzdGF0aWMgY29uc3QgVjhET01Db25m
aWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RPYmpBdHRyc1tdID0gewogICAgIC8vIEF0
dHJpYnV0ZSAncmVhZE9ubHlMb25nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4
dEF0dHI6ICcnKQogICAgIHsicmVhZE9ubHlMb25nQXR0ciIsIFRlc3RPYmpWOEludGVybmFsOjpy
ZWFkT25seUxvbmdBdHRyQXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2Fz
dDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVy
dHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0
cmlidXRlICdyZWFkT25seVN0cmluZ0F0dHInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnJykKQEAgLTIwNDQsNyArMjA0NCw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0
cmlidXRlIFRlc3RPYmpBdHRyc1tdID0gewogICAgIHsicmVwbGFjZWFibGVBdHRyaWJ1dGUiLCBU
ZXN0T2JqVjhJbnRlcm5hbDo6cmVwbGFjZWFibGVBdHRyaWJ1dGVBdHRyR2V0dGVyLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6VGVzdE9ialJlcGxhY2VhYmxlQXR0clNldHRlciwgMCAvKiBubyBkYXRhICov
LCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2Fz
dDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30s
CiB9OwogCi1zdGF0aWMgY29uc3QgQmF0Y2hlZENhbGxiYWNrIFRlc3RPYmpDYWxsYmFja3NbXSA9
IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBUZXN0
T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJ2b2lkTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6
OnZvaWRNZXRob2RDYWxsYmFja30sCiAgICAgeyJNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6
TWV0aG9kQ2FsbGJhY2t9LAogICAgIHsib2JqTWV0aG9kIiwgVGVzdE9ialY4SW50ZXJuYWw6Om9i
ak1ldGhvZENhbGxiYWNrfSwKQEAgLTIwOTQsNyArMjA5NCw3IEBAIHN0YXRpYyBjb25zdCBCYXRj
aGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNrc1tdID0gewogICAgIHsic3RyaWN0RnVuY3Rpb24i
LCBUZXN0T2JqVjhJbnRlcm5hbDo6c3RyaWN0RnVuY3Rpb25DYWxsYmFja30sCiB9OwogCi1zdGF0
aWMgY29uc3QgQmF0Y2hlZENvbnN0YW50IFRlc3RPYmpDb25zdHNbXSA9IHsKK3N0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDb25zdGFudCBUZXN0T2JqQ29uc3RzW10gPSB7
CiAjaWYgRU5BQkxFKENvbmRpdGlvbjEpCiAgICAgeyJDT05ESVRJT05BTF9DT05TVCIsIHN0YXRp
Y19jYXN0PHNpZ25lZCBpbnQ+KDApfSwKICNlbmRpZgpAQCAtMjE1Nyw3ICsyMTU3LDcgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RP
YmpUZW1wbGF0ZSh2ODo6UGVyc2kKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAg
ICAgdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVs
dFNpZ25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0T2JqZWN0Iiwgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6aW50ZXJuYWxGaWVs
ZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZp
Z3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0T2JqZWN0Iiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0
aW9uVGVtcGxhdGU+KCksIFY4VGVzdE9iajo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBU
ZXN0T2JqQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdE9iakF0dHJzKSwKICAgICAgICAgVGVz
dE9iakNhbGxiYWNrcywgV1RGX0FSUkFZX0xFTkdUSChUZXN0T2JqQ2FsbGJhY2tzKSk7CiAgICAg
VU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxs
IG5vdCBiZSB1c2VkLgpAQCAtMjE2OCwxNiArMjE2OCwxNiBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQ
ZXJzaQogICAgIFVOVVNFRF9QQVJBTShwcm90byk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCiAgICAgCiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OmVuYWJs
ZWRBdFJ1bnRpbWVBdHRyMUVuYWJsZWQoKSkgewotICAgICAgICBzdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAorICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1
cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0
ZSAnZW5hYmxlZEF0UnVudGltZUF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4
RW5hYmxlZEF0UnVudGltZScpCiAgICAgICAgIHsiZW5hYmxlZEF0UnVudGltZUF0dHIxIiwgVGVz
dE9ialY4SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJHZXR0ZXIsIFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjFBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEg
Ki8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19j
YXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICov
fTsKLSAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEp
OworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5j
ZSwgcHJvdG8sIGF0dHJEYXRhKTsKICAgICB9CiAgICAgaWYgKFJ1bnRpbWVFbmFibGVkRmVhdHVy
ZXM6OmZlYXR1cmVOYW1lRW5hYmxlZCgpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVk
QXR0cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3Vy
YXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRl
ICdlbmFibGVkQXRSdW50aW1lQXR0cjInIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhF
bmFibGVkQXRSdW50aW1lJykKICAgICAgICAgeyJlbmFibGVkQXRSdW50aW1lQXR0cjIiLCBUZXN0
T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0ckdldHRlciwgVGVzdE9ialY4
SW50ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
OwotICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7
CisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNl
LCBwcm90bywgYXR0ckRhdGEpOwogICAgIH0KIAogICAgIC8vIEN1c3RvbSBTaWduYXR1cmUgJ3Zv
aWRNZXRob2RXaXRoQXJncycKQEAgLTIyNDksNyArMjI0OSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6
OlBlcnNpCiAgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY29udmVydDVBcmd2
W2NvbnZlcnQ1QXJnY10gPSB7IFY4ZTo6R2V0UmF3VGVtcGxhdGUoKSB9OwogICAgIHY4OjpIYW5k
bGU8djg6OlNpZ25hdHVyZT4gY29udmVydDVTaWduYXR1cmUgPSB2ODo6U2lnbmF0dXJlOjpOZXco
ZGVzYywgY29udmVydDVBcmdjLCBjb252ZXJ0NUFyZ3YpOwogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3KCJjb252ZXJ0NSIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KFRlc3RPYmpW
OEludGVybmFsOjpjb252ZXJ0NUNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBjb252ZXJ0NVNpZ25h
dHVyZSkpOwotICAgIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBUZXN0T2Jq
Q29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RPYmpDb25zdHMpKTsKKyAgICBWOERPTUNvbmZp
Z3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBUZXN0T2JqQ29u
c3RzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RPYmpDb25zdHMpKTsKIAogICAgIC8vIEN1c3RvbSB0
b1N0cmluZyB0ZW1wbGF0ZQogICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9T
dHJpbmdUZW1wbGF0ZSgpKTsKQEAgLTIyOTQsMTYgKzIyOTQsMTYgQEAgdm9pZCBWOFRlc3RPYmo6
Omluc3RhbGxQZXJDb250ZXh0UHJvcGVydGllcyh2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGluc3Rh
bmNlLCBUZXMKICAgICAvLyBXaGVuIGJ1aWxkaW5nIFF0V2Via2l0IHdpdGggVjggdGhpcyB2YXJp
YWJsZSBpcyB1bnVzZWQgd2hlbiBub25lIG9mIHRoZSBmZWF0dXJlcyBhcmUgZW5hYmxlZC4KICAg
ICBVTlVTRURfUEFSQU0ocHJvdG8pOwogICAgIGlmIChDb250ZXh0RmVhdHVyZXM6OmVuYWJsZWRQ
ZXJDb250ZXh0QXR0cjFFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7Ci0gICAgICAgIHN0YXRp
YyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAgIHN0YXRpYyBjb25z
dCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAg
ICAgLy8gQXR0cmlidXRlICdlbmFibGVkUGVyQ29udGV4dEF0dHIxJyAoVHlwZTogJ2F0dHJpYnV0
ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRleHQnKQogICAgICAgICB7ImVuYWJsZWRQZXJD
b250ZXh0QXR0cjEiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRleHRBdHRyMUF0
dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0clNl
dHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6
OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwg
MCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5j
ZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1
cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiAgICAgfQogICAgIGlmIChD
b250ZXh0RmVhdHVyZXM6OmZlYXR1cmVOYW1lRW5hYmxlZChpbXBsLT5kb2N1bWVudCgpKSkgewot
ICAgICAgICBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAorICAgICAg
ICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIGF0dHJE
YXRhID1cCiAgICAgICAgIC8vIEF0dHJpYnV0ZSAnZW5hYmxlZFBlckNvbnRleHRBdHRyMicgKFR5
cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJsZWRQZXJDb250ZXh0JykKICAgICAgICAg
eyJlbmFibGVkUGVyQ29udGV4dEF0dHIyIiwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJD
b250ZXh0QXR0cjJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRl
eHRBdHRyMkF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vz
c0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99OwotICAgICAgICBjb25maWd1cmVBdHRy
aWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgICAgICAgIFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogICAg
IH0KICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpT
aWduYXR1cmU6Ok5ldyhHZXRUZW1wbGF0ZSgpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNp
Z25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFs
aXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCmlu
ZGV4IDMyYmUxZDc5NzNlZDIwZmYxMDQ0ZDU3NjAzMzA5MTNhMjEzYmM4YjUuLmE2MWM4YWVjYWE1
NjIzYTg5YmNkYThmNGFhYTFjMGI1NjU4Yjg2YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRl
cmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwCkBAIC0xOTAsNyArMTkwLDcg
QEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBtdWx0aVRyYW5zZmVyTGlzdENhbGxiYWNr
KGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3MKIAogfSAvLyBuYW1lc3BhY2UgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWwKIAotc3RhdGljIGNvbnN0IEJhdGNoZWRB
dHRyaWJ1dGUgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzW10gPSB7Citz
dGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAn
dmFsdWUnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7InZhbHVlIiwgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0ckdldHRl
ciwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OnZhbHVlQXR0
clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4o
djg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25l
KSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiAgICAgLy8gQXR0cmlidXRlICdyZWFkb25seVZhbHVl
JyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJycpCkBAIC0yMDMsNyArMjAz
LDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUF0dHJzW10gPSB7CiAgICAgeyJjYWNoZWRSZWFkb25seVZhbHVlIiwgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6OmNhY2hlZFJlYWRvbmx5
VmFsdWVBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nl
c3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0
ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07CiAKLXN0YXRpYyBjb25zdCBC
YXRjaGVkQ2FsbGJhY2sgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhbGxiYWNr
c1tdID0geworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
IFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VDYWxsYmFja3NbXSA9IHsKICAgICB7
ImFjY2VwdFRyYW5zZmVyTGlzdCIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VW
OEludGVybmFsOjphY2NlcHRUcmFuc2Zlckxpc3RDYWxsYmFja30sCiAgICAgeyJtdWx0aVRyYW5z
ZmVyTGlzdCIsIFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2VWOEludGVybmFsOjpt
dWx0aVRyYW5zZmVyTGlzdENhbGxiYWNrfSwKIH07CkBAIC0yNDQsNyArMjQ0LDcgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RTZXJp
YWxpemVkU2NyaXB0VmFsdWUKICAgICBkZXNjLT5SZWFkT25seVByb3RvdHlwZSgpOwogCiAgICAg
djg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGRlZmF1bHRTaWduYXR1cmU7Ci0gICAgZGVmYXVsdFNp
Z25hdHVyZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4
VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAor
ICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBs
YXRlKGRlc2MsICJUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlIiwgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+KCksIFY4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZUludGVyZmFjZTo6aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzKSwKICAgICAgICAgVGVzdFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZUludGVyZmFjZUNhbGxiYWNrcywgV1RGX0FSUkFZX0xFTkdUSChUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlQ2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRT
aWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCA4MDcwNjFmMTcwMDBhN2EyODQzNDEz
YzJiZmMxNWU5ZmVkNzk1NDM4Li5jYTNhZmI2NDliNjY2ZGUyYTRlZGIxMzk5MTU5NTY2OTQxOTE0
OWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzcsNyArMzcs
NyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nSGVs
cGVycy5oIgogI2luY2x1ZGUgIlY4QmluZGluZ01hY3Jvcy5oIgotI2luY2x1ZGUgIlY4Q29uZmln
dXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaCIKKyNpbmNsdWRlICJWOERPTUNvbmZpZ3VyYXRp
b24uaCIKICNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKICNpbmNsdWRlICJWOEdDQ29udHJvbGxl
ci5oIgogI2luY2x1ZGUgIlY4SGlkZGVuUHJvcGVydHlOYW1lLmgiCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2Rz
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRl
c0FuZE1ldGhvZHMuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmQ0MmE3MTZh
MGVhNTgyNjc2M2NlZjJkYzkyMzJkNjQxY2I1NzNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmln
dXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICoK
LSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBw
bGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMgb2YKLSAqICAgICBpdHMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOwotICogTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
Ci0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GCi0gKiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgot
ICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJWOENvbmZpZ3VyZURPTUF0dHJp
YnV0ZXNBbmRNZXRob2RzLmgiCi0KLSNpbmNsdWRlICJWOEJpbmRpbmcuaCIKLQotbmFtZXNwYWNl
IFdlYkNvcmUgewotCi12b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCAKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUqIGF0dHJpYnV0ZXMsIAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGF0dHJpYnV0ZUNvdW50KQotewotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgYXR0cmlidXRlQ291bnQ7ICsraSkKLSAgICAgICAgY29u
ZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0cmlidXRlc1tpXSk7Ci19Ci0KLXZv
aWQgYmF0Y2hDb25maWd1cmVDb25zdGFudHModjg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0
ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEJhdGNoZWRDb25zdGFudCogY29uc3RhbnRzLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY29uc3RhbnRDb3VudCkKLXsKLSAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IGNvbnN0YW50Q291bnQ7ICsraSkgewotICAgICAgICBjb25zdCBCYXRjaGVkQ29u
c3RhbnQqIGNvbnN0YW50ID0gJmNvbnN0YW50c1tpXTsKLSAgICAgICAgZnVuY3Rpb25EZXNjcmlw
dG9yLT5TZXQodjg6OlN0cmluZzo6TmV3KGNvbnN0YW50LT5uYW1lKSwgdjhJbnRlZ2VyKGNvbnN0
YW50LT52YWx1ZSksIHY4OjpSZWFkT25seSk7Ci0gICAgICAgIHByb3RvLT5TZXQodjg6OlN0cmlu
Zzo6TmV3KGNvbnN0YW50LT5uYW1lKSwgdjhJbnRlZ2VyKGNvbnN0YW50LT52YWx1ZSksIHY4OjpS
ZWFkT25seSk7Ci0gICAgfQotfQotCi12b2lkIGJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpI
YW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCAKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZXMsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayogY2FsbGJhY2tz
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCkKLXsK
LSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxiYWNrQ291bnQ7ICsraSkKLSAgICAgICAg
cHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoY2FsbGJhY2tzW2ldLm5hbWUpLCB2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KGNhbGxiYWNrc1tpXS5jYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgc2ln
bmF0dXJlKSwgYXR0cmlidXRlcyk7Ci19Ci0KLXY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBjb25m
aWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZGVzYywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpp
bnRlcmZhY2VOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRDbGFzcywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmllbGRDb3VudCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0
cmlidXRlKiBhdHRyaWJ1dGVzLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNrKiBjYWxsYmFja3MsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291
bnQpCi17Ci0gICAgZGVzYy0+U2V0Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldyhpbnRlcmZhY2VO
YW1lKSk7Ci0gICAgdjg6OkxvY2FsPHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNj
LT5JbnN0YW5jZVRlbXBsYXRlKCk7Ci0gICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3Vu
dChmaWVsZENvdW50KTsKLSAgICBpZiAoIXBhcmVudENsYXNzLklzRW1wdHkoKSkKLSAgICAgICAg
ZGVzYy0+SW5oZXJpdChwYXJlbnRDbGFzcyk7Ci0gICAgaWYgKGF0dHJpYnV0ZUNvdW50KQotICAg
ICAgICBiYXRjaENvbmZpZ3VyZUF0dHJpYnV0ZXMoaW5zdGFuY2UsIGRlc2MtPlByb3RvdHlwZVRl
bXBsYXRlKCksIGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50KTsKLSAgICB2ODo6TG9jYWw8djg6
OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjKTsK
LSAgICBpZiAoY2FsbGJhY2tDb3VudCkKLSAgICAgICAgYmF0Y2hDb25maWd1cmVDYWxsYmFja3Mo
ZGVzYy0+UHJvdG90eXBlVGVtcGxhdGUoKSwgZGVmYXVsdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSksIGNhbGxiYWNrcywgY2FsbGJh
Y2tDb3VudCk7Ci0gICAgcmV0dXJuIGRlZmF1bHRTaWduYXR1cmU7Ci19Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29u
ZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNzQ2ZmU4MjQ0MDg4NGMzZjE2ZmRmNmI5ZjgzZTc4MDU0NDk2OWNlMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmgKKysr
IC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMiBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICoKLSAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIu
ICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAotICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogMy4g
IE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0
aGUgbmFtZXMgb2YKLSAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCi0gKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElT
IiBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECi0gKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCi0gKiBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZCi0gKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUwotICogKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OwotICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECi0gKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GCi0gKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpZm5kZWYgVjhDb25maWd1cmVET01BdHRy
aWJ1dGVzQW5kTWV0aG9kc19oCi0jZGVmaW5lIFY4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1l
dGhvZHNfaAotCi0jaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCi0jaW5jbHVkZSA8djguaD4KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBUaGUgZm9sbG93aW5nIEJhdGNoIHN0cnVjdHMgYW5k
IG1ldGhvZHMgYXJlIHVzZWQgZm9yIHNldHRpbmcgbXVsdGlwbGUKLS8vIHByb3BlcnRpZXMgb24g
YW4gT2JqZWN0VGVtcGxhdGUsIHVzZWQgZnJvbSB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCi0vLyBp
bml0aWFsaXphdGlvbiAoQ29uZmlndXJlWFhYVGVtcGxhdGUpLiBUaGlzIGdyZWF0bHkgcmVkdWNl
cyB0aGUgYmluYXJ5Ci0vLyBzaXplIGJ5IG1vdmluZyBmcm9tIGNvZGUgZHJpdmVuIHNldHVwIHRv
IGRhdGEgdGFibGUgZHJpdmVuIHNldHVwLgotCi0vLyBCYXRjaGVkQXR0cmlidXRlIHRyYW5zbGF0
ZXMgaW50byBjYWxscyB0byBTZXRBY2Nlc3NvcigpIG9uIGVpdGhlciB0aGUKLS8vIGluc3RhbmNl
IG9yIHRoZSBwcm90b3R5cGUgT2JqZWN0VGVtcGxhdGUsIGJhc2VkIG9uIHxvblByb3RvfC4KLXN0
cnVjdCBCYXRjaGVkQXR0cmlidXRlIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOwotICAg
IHY4OjpBY2Nlc3NvckdldHRlciBnZXR0ZXI7Ci0gICAgdjg6OkFjY2Vzc29yU2V0dGVyIHNldHRl
cjsKLSAgICBXcmFwcGVyVHlwZUluZm8qIGRhdGE7Ci0gICAgdjg6OkFjY2Vzc0NvbnRyb2wgc2V0
dGluZ3M7Ci0gICAgdjg6OlByb3BlcnR5QXR0cmlidXRlIGF0dHJpYnV0ZTsKLSAgICBib29sIG9u
UHJvdG87Ci19OwotCi12b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxlPHY4
OjpPYmplY3RUZW1wbGF0ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBCYXRjaGVkQXR0cmlidXRlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBhdHRyaWJ1dGVDb3VudCk7Ci0KLXRlbXBsYXRlPGNsYXNzIE9iamVjdE9yVGVtcGxhdGU+
Ci1pbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6OkhhbmRsZTxPYmplY3RPclRlbXBs
YXRlPiBpbnN0YW5jZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6SGFuZGxl
PE9iamVjdE9yVGVtcGxhdGU+IHByb3RvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUmIGF0dHJpYnV0ZSkKLXsKLSAgICAoYXR0cmlidXRlLm9u
UHJvdG8gPyBwcm90byA6IGluc3RhbmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KGF0
dHJpYnV0ZS5uYW1lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlLmdldHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLnNldHRlciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkV4
dGVybmFsOjpXcmFwKGF0dHJpYnV0ZS5kYXRhKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1
dGUuYXR0cmlidXRlKTsKLX0KLQotLy8gQmF0Y2hlZENvbnN0YW50IHRyYW5zbGF0ZXMgaW50byBj
YWxscyB0byBTZXQoKSBmb3Igc2V0dGluZyB1cCBhbiBvYmplY3QncwotLy8gY29uc3RhbnRzLiBJ
dCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlvblRlbXBsYXRlIGFuZCB0aGUK
LS8vIE9iamVjdFRlbXBsYXRlLiBQcm9wZXJ0eUF0dHJpYnV0ZXMgaXMgYWx3YXlzIFJlYWRPbmx5
Lgotc3RydWN0IEJhdGNoZWRDb25zdGFudCB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsK
LSAgICBpbnQgdmFsdWU7Ci19OwotCi12b2lkIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKHY4OjpI
YW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxhdGU+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IEJhdGNoZWRDb25zdGFudCosCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBjb25zdGFudENvdW50KTsKLQotLy8gQmF0Y2hlZENhbGxiYWNrIHRyYW5zbGF0
ZXMgaW50byBjYWxscyB0byBTZXQoKSBvbiB0aGUgcHJvdG90eXBlIE9iamVjdFRlbXBsYXRlLgot
c3RydWN0IEJhdGNoZWRDYWxsYmFjayB7Ci0gICAgY29uc3QgY2hhciogY29uc3QgbmFtZTsKLSAg
ICB2ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNrOwotfTsKLQotdm9pZCBiYXRjaENvbmZp
Z3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sIAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpTaWduYXR1cmU+LAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayosIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCk7Ci0KLXY4OjpMb2NhbDx2ODo6U2ln
bmF0dXJlPiBjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gcGFyZW50Q2xhc3Ms
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZpZWxkQ291
bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0
Y2hlZEF0dHJpYnV0ZSosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2l6ZV90IGF0dHJpYnV0ZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayosCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQpOwotCi19IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBWOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRN
ZXRob2RzX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29u
ZmlndXJhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3Vy
YXRpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUxYzIxZDY5ZjhmYjM0Mjg4ZjdiZDFmMWRiNDI2NjQ0ODNi
NmJkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TUNvbmZpZ3VyYXRpb24uY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiAgUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqIDMuICBOZWl0aGVyIHRoZSBuYW1lIG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUi
KSBub3IgdGhlIG5hbWVzIG9mCisgKiAgICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JT
ICJBUyBJUyIgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQor
ICogRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsKKyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVjhET01Db25maWd1cmF0aW9uLmgiCisKKyNpbmNsdWRlICJWOEJpbmRpbmcu
aCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0
Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0
YW5jZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUq
IGF0dHJpYnV0ZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKQorICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5z
dGFuY2UsIHByb3RvLCBhdHRyaWJ1dGVzW2ldKTsKK30KKwordm9pZCBWOERPTUNvbmZpZ3VyYXRp
b246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGZ1bmN0aW9uRGVzY3JpcHRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0
Y2hlZENvbnN0YW50KiBjb25zdGFudHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnN0YW50Q291bnQpCit7CisgICAgZm9yIChzaXpl
X3QgaSA9IDA7IGkgPCBjb25zdGFudENvdW50OyArK2kpIHsKKyAgICAgICAgY29uc3QgQmF0Y2hl
ZENvbnN0YW50KiBjb25zdGFudCA9ICZjb25zdGFudHNbaV07CisgICAgICAgIGZ1bmN0aW9uRGVz
Y3JpcHRvci0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhjb25zdGFudC0+bmFtZSksIHY4SW50ZWdlcihj
b25zdGFudC0+dmFsdWUpLCB2ODo6UmVhZE9ubHkpOworICAgICAgICBwcm90by0+U2V0KHY4OjpT
dHJpbmc6Ok5ldyhjb25zdGFudC0+bmFtZSksIHY4SW50ZWdlcihjb25zdGFudC0+dmFsdWUpLCB2
ODo6UmVhZE9ubHkpOworICAgIH0KK30KKwordm9pZCBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNo
Q29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywg
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6Okhh
bmRsZTx2ODo6U2lnbmF0dXJlPiBzaWduYXR1cmUsIAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGVz
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJhdGNoZWRDYWxsYmFjayogY2FsbGJhY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KQoreworICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgY2FsbGJhY2tDb3VudDsgKytpKQorICAgICAgICBwcm90by0+U2V0
KHY4OjpTdHJpbmc6Ok5ldyhjYWxsYmFja3NbaV0ubmFtZSksIHY4OjpGdW5jdGlvblRlbXBsYXRl
OjpOZXcoY2FsbGJhY2tzW2ldLmNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzaWduYXR1cmUpLCBh
dHRyaWJ1dGVzKTsKK30KKwordjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IFY4RE9NQ29uZmlndXJh
dGlvbjo6Y29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxh
dGU+IGRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICppbnRlcmZhY2VOYW1lLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6OlBl
cnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZp
ZWxkQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiBhdHRyaWJ1dGVzLCAKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayog
Y2FsbGJhY2tzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2l6ZV90IGNhbGxiYWNrQ291bnQpCit7CisgICAgZGVzYy0+U2V0
Q2xhc3NOYW1lKHY4OjpTdHJpbmc6Ok5ldyhpbnRlcmZhY2VOYW1lKSk7CisgICAgdjg6OkxvY2Fs
PHY4OjpPYmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCk7
CisgICAgaW5zdGFuY2UtPlNldEludGVybmFsRmllbGRDb3VudChmaWVsZENvdW50KTsKKyAgICBp
ZiAoIXBhcmVudENsYXNzLklzRW1wdHkoKSkKKyAgICAgICAgZGVzYy0+SW5oZXJpdChwYXJlbnRD
bGFzcyk7CisgICAgaWYgKGF0dHJpYnV0ZUNvdW50KQorICAgICAgICBiYXRjaENvbmZpZ3VyZUF0
dHJpYnV0ZXMoaW5zdGFuY2UsIGRlc2MtPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJpYnV0ZXMs
IGF0dHJpYnV0ZUNvdW50KTsKKyAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNp
Z25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNjKTsKKyAgICBpZiAoY2FsbGJhY2tDb3Vu
dCkKKyAgICAgICAgYmF0Y2hDb25maWd1cmVDYWxsYmFja3MoZGVzYy0+UHJvdG90eXBlVGVtcGxh
dGUoKSwgZGVmYXVsdFNpZ25hdHVyZSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRl
Pih2ODo6RG9udERlbGV0ZSksIGNhbGxiYWNrcywgY2FsbGJhY2tDb3VudCk7CisgICAgcmV0dXJu
IGRlZmF1bHRTaWduYXR1cmU7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MGMwNmQ2ZmQ3MmExZmFiYzAzZDQ5YWQ1MGRkNWUxNzNlZjdiMGMwMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCkBAIC0w
LDAgKzEsMTExIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKiAzLiAgTmVpdGhlciB0aGUgbmFt
ZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgorICog
ICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2lmbmRlZiBWOERPTUNvbmZpZ3VyYXRpb25faAorI2RlZmluZSBWOERP
TUNvbmZpZ3VyYXRpb25faAorCisjaW5jbHVkZSAiVjhET01XcmFwcGVyLmgiCisjaW5jbHVkZSA8
djguaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBWOERPTUNvbmZpZ3VyYXRpb24g
eworcHVibGljOgorICAgIC8vIFRoZSBmb2xsb3dpbmcgQmF0Y2ggc3RydWN0cyBhbmQgbWV0aG9k
cyBhcmUgdXNlZCBmb3Igc2V0dGluZyBtdWx0aXBsZQorICAgIC8vIHByb3BlcnRpZXMgb24gYW4g
T2JqZWN0VGVtcGxhdGUsIHVzZWQgZnJvbSB0aGUgZ2VuZXJhdGVkIGJpbmRpbmdzCisgICAgLy8g
aW5pdGlhbGl6YXRpb24gKENvbmZpZ3VyZVhYWFRlbXBsYXRlKS4gVGhpcyBncmVhdGx5IHJlZHVj
ZXMgdGhlIGJpbmFyeQorICAgIC8vIHNpemUgYnkgbW92aW5nIGZyb20gY29kZSBkcml2ZW4gc2V0
dXAgdG8gZGF0YSB0YWJsZSBkcml2ZW4gc2V0dXAuCisKKyAgICAvLyBCYXRjaGVkQXR0cmlidXRl
IHRyYW5zbGF0ZXMgaW50byBjYWxscyB0byBTZXRBY2Nlc3NvcigpIG9uIGVpdGhlciB0aGUKKyAg
ICAvLyBpbnN0YW5jZSBvciB0aGUgcHJvdG90eXBlIE9iamVjdFRlbXBsYXRlLCBiYXNlZCBvbiB8
b25Qcm90b3wuCisgICAgc3RydWN0IEJhdGNoZWRBdHRyaWJ1dGUgeworICAgICAgICBjb25zdCBj
aGFyKiBjb25zdCBuYW1lOworICAgICAgICB2ODo6QWNjZXNzb3JHZXR0ZXIgZ2V0dGVyOworICAg
ICAgICB2ODo6QWNjZXNzb3JTZXR0ZXIgc2V0dGVyOworICAgICAgICBXcmFwcGVyVHlwZUluZm8q
IGRhdGE7CisgICAgICAgIHY4OjpBY2Nlc3NDb250cm9sIHNldHRpbmdzOworICAgICAgICB2ODo6
UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlOworICAgICAgICBib29sIG9uUHJvdG87CisgICAg
fTsKKworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh2ODo6SGFuZGxl
PHY4OjpPYmplY3RUZW1wbGF0ZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSosCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCk7
CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBPYmplY3RPclRlbXBsYXRlPgorICAgIHN0YXRpYyBpbmxp
bmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6OkhhbmRsZTxPYmplY3RPclRlbXBsYXRlPiBp
bnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpI
YW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG8sCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0cmlidXRlJiBhdHRyaWJ1dGUpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIChhdHRyaWJ1dGUub25Qcm90byA/IHByb3RvIDogaW5zdGFuY2Up
LT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoYXR0cmlidXRlLm5hbWUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0
dHJpYnV0ZS5nZXR0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLnNldHRlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6RXh0
ZXJuYWw6OldyYXAoYXR0cmlidXRlLmRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5zZXR0aW5ncywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhdHRyaWJ1dGUuYXR0cmlidXRlKTsKKyAgICAgICAgfQorCisgICAgLy8gQmF0Y2hl
ZENvbnN0YW50IHRyYW5zbGF0ZXMgaW50byBjYWxscyB0byBTZXQoKSBmb3Igc2V0dGluZyB1cCBh
biBvYmplY3QncworICAgIC8vIGNvbnN0YW50cy4gSXQgc2V0cyB0aGUgY29uc3RhbnQgb24gYm90
aCB0aGUgRnVuY3Rpb25UZW1wbGF0ZSBhbmQgdGhlCisgICAgLy8gT2JqZWN0VGVtcGxhdGUuIFBy
b3BlcnR5QXR0cmlidXRlcyBpcyBhbHdheXMgUmVhZE9ubHkuCisgICAgc3RydWN0IEJhdGNoZWRD
b25zdGFudCB7CisgICAgICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CisgICAgICAgIGludCB2
YWx1ZTsKKyAgICB9OworCisgICAgc3RhdGljIHZvaWQgYmF0Y2hDb25maWd1cmVDb25zdGFudHMo
djg6OkhhbmRsZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+LAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDb25zdGFudCos
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNvbnN0YW50
Q291bnQpOworCisgICAgLy8gQmF0Y2hlZENhbGxiYWNrIHRyYW5zbGF0ZXMgaW50byBjYWxscyB0
byBTZXQoKSBvbiB0aGUgcHJvdG90eXBlIE9iamVjdFRlbXBsYXRlLgorICAgIHN0cnVjdCBCYXRj
aGVkQ2FsbGJhY2sgeworICAgICAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOworICAgICAgICB2
ODo6SW52b2NhdGlvbkNhbGxiYWNrIGNhbGxiYWNrOworICAgIH07CisKKyAgICBzdGF0aWMgdm9p
ZCBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4s
IAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6
OlNpZ25hdHVyZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OlByb3BlcnR5QXR0cmlidXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayosIAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KTsKKworICAgIHN0YXRpYyB2ODo6TG9j
YWw8djg6OlNpZ25hdHVyZT4gY29uZmlndXJlVGVtcGxhdGUodjg6OlBlcnNpc3RlbnQ8djg6OkZ1
bmN0aW9uVGVtcGxhdGU+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgY2hhciogaW50ZXJmYWNlTmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZENvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6
ZV90IGNhbGxiYWNrQ291bnQpOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gVjhET01Db25maWd1cmF0aW9uX2gK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157726</attachid>
            <date>2012-08-10 06:24:24 -0700</date>
            <delta_ts>2012-08-10 10:03:31 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-93615-20120810222355.patch</filename>
            <type>text/plain</type>
            <size>59288</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MjQyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYmY4ZDdlM2Q3YTRlYzU4
YTYwOGYxOWI5YWM4Y2VjY2M2OWY4NDgyZS4uMTUzMTMxZTE2OWIxOGVmYTRjYmZlMmI1MzljODQw
OWVmMTIwODY4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDc0IEBACiAyMDEyLTA4LTA5ICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KIAorICAgICAgICBbVjhdIEludHJvZHVj
ZSBWOERPTUNvbmZpZ3VyYXRpb24gY2xhc3MgYW5kIG1ha2UgYmF0Y2hDb25maWd1cmVYWFgoKSBt
ZXRob2RzIHN0YXRpYworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTM2MTUKKworICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgorCisgICAgICAg
IFBlciB0aGUgZGlzY3Vzc2lvbiBpbiBidWcgOTMyMzksCisKKyAgICAgICAgKDEpIFJlbmFtZSBW
OENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzIHRvIFY4RE9NQ29uZmlndXJhdGlvbi4K
KyAgICAgICAgKDIpIEludHJvZHVjZSBWOERPTUNvbmZpZ3VyYXRpb24gY2xhc3MgYW5kIG1ha2Ug
YmF0Y2hDb25maWd1cmVYWFgoKSBtZXRob2RzIHN0YXRpYy4KKworICAgICAgICBObyB0ZXN0cy4g
Tm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogVXNlVjguY21ha2U6CisgICAgICAg
ICogV2ViQ29yZS5neXBpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRv
clY4LnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4
VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBs
YXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSk6
CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEV4
Y2VwdGlvblRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
Q29uZmlndXJlVjhUZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Nj
cmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxp
c3RMaXN0ZW5lclRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgv
VjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVW
OFRlc3ROYW1lZENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4
VGVzdE5vZGVUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZp
Z3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlY4VGVzdE9iajo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Qmlu
ZGluZy5oOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0Fu
ZE1ldGhvZHMuaDogUmVtb3ZlZC4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZpZ3Vy
YXRpb24uY3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25m
aWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5jcHAuCisgICAgICAgIChXZWJDb3JlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVBdHRyaWJ1
dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1
cmVDb25zdGFudHMpOgorICAgICAgICAoV2ViQ29yZTo6VjhET01Db25maWd1cmF0aW9uOjpiYXRj
aENvbmZpZ3VyZUNhbGxiYWNrcyk6CisgICAgICAgIChXZWJDb3JlOjpWOERPTUNvbmZpZ3VyYXRp
b246OmNvbmZpZ3VyZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTUNvbmZp
Z3VyYXRpb24uaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFY4RE9NQ29u
ZmlndXJhdGlvbik6CisgICAgICAgIChCYXRjaGVkQXR0cmlidXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OlY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKToKKyAgICAgICAgKEJh
dGNoZWRDb25zdGFudCk6CisgICAgICAgIChCYXRjaGVkQ2FsbGJhY2spOgorCisyMDEyLTA4LTA5
ICBLZW50YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKwogICAgICAgICBbVjhdIFJl
bmFtZSBWOEJpbmRpbmdQZXJDb250ZXh0RGF0YSB0byBWOFBlckNvbnRleHREYXRhCiAgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05MzU5NQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Vc2VWOC5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNt
YWtlCmluZGV4IGVhZTk2NDNjNzYzYTQwMDRjMmM1ZmNmMTQ2YmUzY2RkZjVmMGZlZDcuLjYzODkw
YWZlYmU2ZDA0OGRjNGYwYjM3ZDBmMzdjYTMwMGEzZGIxYzMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1VzZVY4LmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL1VzZVY4LmNtYWtlCkBAIC00
Nyw5ICs0Nyw4IEBAIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4
L1Y4QWJzdHJhY3RFdmVudExpc3RlbmVyLmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4QmluZGluZy5j
cHAKICAgICBiaW5kaW5ncy92OC9WOEJpbmRpbmdIZWxwZXJzLmNwcAotICAgIGJpbmRpbmdzL3Y4
L1Y4UGVySXNvbGF0ZURhdGEuY3BwCi0gICAgYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRy
aWJ1dGVzQW5kTWV0aG9kcy5jcHAsCiAgICAgYmluZGluZ3MvdjgvVjhDb2xsZWN0aW9uLmNwcAor
ICAgIGJpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5jcHAsCiAgICAgYmluZGluZ3Mvdjgv
VjhET01NYXAuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAKICAgICBi
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC02Miw2ICs2MSw3IEBAIExJU1QoQVBQRU5E
IFdlYkNvcmVfU09VUkNFUwogICAgIGJpbmRpbmdzL3Y4L1Y4TGF6eUV2ZW50TGlzdGVuZXIuY3Bw
CiAgICAgYmluZGluZ3MvdjgvVjhOb2RlRmlsdGVyQ29uZGl0aW9uLmNwcAogICAgIGJpbmRpbmdz
L3Y4L1Y4UGVyQ29udGV4dERhdGEuY3BwCisgICAgYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0
YS5jcHAKICAgICBiaW5kaW5ncy92OC9WOFByb3h5LmNwcAogICAgIGJpbmRpbmdzL3Y4L1Y4UmVj
dXJzaW9uU2NvcGUuY3BwCiAgICAgYmluZGluZ3MvdjgvVjhVdGlsaXRpZXMuY3BwCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cGkKaW5kZXggNmYyNmY1NTJlYjdkODZkYWY2ZTc3ZmVlM2Y4ZmE3ODMxYTQwNjU0MC4uNmQ2
Mjk5OTY2NmQ1ZGVlZWRjOTkzYjU4NTg5NWUwMjEzOTIwYmE2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpA
QCAtMjI0NSwxMCArMjI0NSwxMCBAQAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Z0hlbHBlcnMuY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOEJpbmRpbmdIZWxwZXJz
LmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4QmluZGluZ01hY3Jvcy5oJywKLSAgICAg
ICAgICAgICdiaW5kaW5ncy92OC9WOENvbmZpZ3VyZURPTUF0dHJpYnV0ZXNBbmRNZXRob2RzLmNw
cCcsCi0gICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5k
TWV0aG9kcy5oJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uY3BwJywK
ICAgICAgICAgICAgICdiaW5kaW5ncy92OC9WOENvbGxlY3Rpb24uaCcsCisgICAgICAgICAgICAn
YmluZGluZ3MvdjgvVjhET01Db25maWd1cmF0aW9uLmNwcCcsCisgICAgICAgICAgICAnYmluZGlu
Z3MvdjgvVjhET01Db25maWd1cmF0aW9uLmgnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvVjhET01NYXAuaCcsCiAgICAg
ICAgICAgICAnYmluZGluZ3MvdjgvVjhET01XaW5kb3dTaGVsbC5jcHAnLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBkMmU4
YjEzNDQyZDE4MTAzZGE0ZDgxZDU2ZGM3ZjhlZjkyMzY1NGVjLi41ZjEyYzA3MzRhNjkwYmM3MDE0
NTNmZWUzMzg5YmM4MmQ4YTRkNTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjcyNiw3ICsyNzI2LDcgQEAgRU5ECiAg
ICAgJGF0dHJpYnV0ZXMgPSBcQG5vcm1hbEF0dHJpYnV0ZXM7CiAgICAgIyBQdXQgdGhlIGF0dHJp
YnV0ZXMgdGhhdCBkaXNhbGxvdyBzaGFkb3dpbmcgb24gdGhlIHNoYWRvdyBvYmplY3QuCiAgICAg
aWYgKEBkaXNhbGxvd3NTaGFkb3dpbmcpIHsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJz
dGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3dBdHRyc1tdID0ge1xuIik7CisgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6
QmF0Y2hlZEF0dHJpYnV0ZSBzaGFkb3dBdHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRl
QmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRhdGFOb2RlLCBcQGRpc2FsbG93c1NoYWRvd2luZyk7CiAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxuIik7CiAgICAgfQpAQCAtMjczNCw3ICsy
NzM0LDcgQEAgRU5ECiAgICAgbXkgJGhhc19hdHRyaWJ1dGVzID0gMDsKICAgICBpZiAoQCRhdHRy
aWJ1dGVzKSB7CiAgICAgICAgICRoYXNfYXR0cmlidXRlcyA9IDE7Ci0gICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUgJHtpbnRlcmZhY2VOYW1l
fUF0dHJzW10gPSB7XG4iKTsKKyAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlICR7aW50ZXJmYWNlTmFtZX1B
dHRyc1tdID0ge1xuIik7CiAgICAgICAgIEdlbmVyYXRlQmF0Y2hlZEF0dHJpYnV0ZURhdGEoJGRh
dGFOb2RlLCAkYXR0cmlidXRlcyk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAifTtcblxu
Iik7CiAgICAgfQpAQCAtMjc0OSw3ICsyNzQ5LDcgQEAgRU5ECiAgICAgICAgIG5leHQgaWYgIUlz
U3RhbmRhcmRGdW5jdGlvbigkZGF0YU5vZGUsICRmdW5jdGlvbik7CiAgICAgICAgIGlmICghJGhh
c19jYWxsYmFja3MpIHsKICAgICAgICAgICAgICRoYXNfY2FsbGJhY2tzID0gMTsKLSAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IEJhdGNoZWRDYWxsYmFjayAke2lu
dGVyZmFjZU5hbWV9Q2FsbGJhY2tzW10gPSB7XG4iKTsKKyAgICAgICAgICAgIHB1c2goQGltcGxD
b250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNr
ICR7aW50ZXJmYWNlTmFtZX1DYWxsYmFja3NbXSA9IHtcbiIpOwogICAgICAgICB9CiAgICAgICAg
IG15ICRuYW1lID0gJGZ1bmN0aW9uLT5zaWduYXR1cmUtPm5hbWU7CiAgICAgICAgIG15ICRjYWxs
YmFjayA9IEdldEZ1bmN0aW9uVGVtcGxhdGVDYWxsYmFja05hbWUoJGZ1bmN0aW9uLCAkaW50ZXJm
YWNlTmFtZSk7CkBAIC0yNzY4LDcgKzI3NjgsNyBAQCBFTkQKICAgICBteSBAY29uc3RhbnRzRW5h
YmxlZEF0UnVudGltZTsKICAgICBpZiAoQHskZGF0YU5vZGUtPmNvbnN0YW50c30pIHsKICAgICAg
ICAgJGhhc19jb25zdGFudHMgPSAxOwotICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgInN0YXRp
YyBjb25zdCBCYXRjaGVkQ29uc3RhbnQgJHtpbnRlcmZhY2VOYW1lfUNvbnN0c1tdID0ge1xuIik7
CisgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAic3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJh
dGlvbjo6QmF0Y2hlZENvbnN0YW50ICR7aW50ZXJmYWNlTmFtZX1Db25zdHNbXSA9IHtcbiIpOwog
ICAgIH0KICAgICBmb3JlYWNoIG15ICRjb25zdGFudCAoQHskZGF0YU5vZGUtPmNvbnN0YW50c30p
IHsKICAgICAgICAgbXkgJG5hbWUgPSAkY29uc3RhbnQtPm5hbWU7CkBAIC0yODIzLDcgKzI4MjMs
NyBAQCBFTkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6T2JqZWN0VGVtcGxhdGU+IENvbmZpZ3VyZVNoYWRvd09iamVjdFRlbXBs
YXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpPYmplY3RUZW1wbGF0ZT4gdGVtcGwpCiB7Ci0gICAgYmF0
Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHRlbXBsLCB2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0
ZT4oKSwgc2hhZG93QXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoc2hhZG93QXR0cnMpKTsKKyAgICBW
OERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyh0ZW1wbCwgdjg6Okhh
bmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+KCksIHNoYWRvd0F0dHJzLCBXVEZfQVJSQVlfTEVOR1RI
KHNoYWRvd0F0dHJzKSk7CiAKICAgICAvLyBJbnN0YWxsIGEgc2VjdXJpdHkgaGFuZGxlciB3aXRo
IFY4LgogICAgIHRlbXBsLT5TZXRBY2Nlc3NDaGVja0NhbGxiYWNrcyhWOERPTVdpbmRvdzo6bmFt
ZWRTZWN1cml0eUNoZWNrLCBWOERPTVdpbmRvdzo6aW5kZXhlZFNlY3VyaXR5Q2hlY2ssIHY4OjpF
eHRlcm5hbDo6V3JhcCgmVjhET01XaW5kb3c6OmluZm8pKTsKQEAgLTI4NDksMTIgKzI4NDksMTIg
QEAgRU5ECiAgICAgICAgIG15ICRlbmFibGVfZnVuY3Rpb24gPSBHZXRSdW50aW1lRW5hYmxlRnVu
Y3Rpb25OYW1lKCRkYXRhTm9kZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CiAgICAgaWYgKCEke2VuYWJsZV9mdW5jdGlvbn0oKSkKLSAgICAgICAgZGVmYXVsdFNpZ25hdHVy
ZSA9IGNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsIFwiXCIsICRwYXJlbnRDbGFzc1RlbXBsYXRlLCBW
OCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRDb3VudCwgMCwgMCwgMCwgMCk7CisgICAg
ICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBs
YXRlKGRlc2MsIFwiXCIsICRwYXJlbnRDbGFzc1RlbXBsYXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06
OmludGVybmFsRmllbGRDb3VudCwgMCwgMCwgMCwgMCk7CiAgICAgZWxzZQogRU5ECiAgICAgfQog
ICAgIHB1c2goQGltcGxDb250ZW50LCAgPDxFTkQpOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBj
b25maWd1cmVUZW1wbGF0ZShkZXNjLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICRwYXJl
bnRDbGFzc1RlbXBsYXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRDb3VudCwK
KyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1w
bGF0ZShkZXNjLCBcIiR7dmlzaWJsZUludGVyZmFjZU5hbWV9XCIsICRwYXJlbnRDbGFzc1RlbXBs
YXRlLCBWOCR7aW50ZXJmYWNlTmFtZX06OmludGVybmFsRmllbGRDb3VudCwKIEVORAogICAgICMg
U2V0IHVwIG91ciBhdHRyaWJ1dGVzIGlmIHdlIGhhdmUgdGhlbQogICAgIGlmICgkaGFzX2F0dHJp
YnV0ZXMpIHsKQEAgLTI5MDUsMTAgKzI5MDUsMTAgQEAgRU5ECiAgICAgICAgIG15ICRjb25kaXRp
b25hbFN0cmluZyA9ICRjb2RlR2VuZXJhdG9yLT5HZW5lcmF0ZUNvbmRpdGlvbmFsU3RyaW5nKCRy
dW50aW1lX2F0dHItPnNpZ25hdHVyZSk7CiAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiXG4j
aWYgJHtjb25kaXRpb25hbFN0cmluZ31cbiIpIGlmICRjb25kaXRpb25hbFN0cmluZzsKICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgaWYgKCR7ZW5hYmxlX2Z1bmN0aW9ufSgpKSB7XG4i
KTsKLSAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBCYXRj
aGVkQXR0cmlidXRlIGF0dHJEYXRhID1cXFxuIik7CisgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgICAgICBzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmli
dXRlIGF0dHJEYXRhID1cXFxuIik7CiAgICAgICAgIEdlbmVyYXRlU2luZ2xlQmF0Y2hlZEF0dHJp
YnV0ZSgkaW50ZXJmYWNlTmFtZSwgJHJ1bnRpbWVfYXR0ciwgIjsiLCAiICAgICIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUo
aW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6
Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBwcm90bywgYXR0ckRhdGEpOwogICAgIH0KIEVO
RAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2VuZGlmIC8vICR7Y29uZGl0aW9uYWxT
dHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBAIC0yOTIzLDggKzI5MjMsOCBAQCBF
TkQKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5n
fVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBpZiAoJHtlbmFibGVfZnVuY3Rpb259KCkpIHtcbiIpOwogICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgPDxFTkQpOwotICAgICAgICBzdGF0aWMgY29uc3QgQmF0Y2hlZENvbnN0YW50IGNv
bnN0RGF0YSA9IHsiJHtuYW1lfSIsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KCR7dmFsdWV9KX07
Ci0gICAgICAgIGJhdGNoQ29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCAmY29uc3REYXRh
LCAxKTsKKyAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENv
bnN0YW50IGNvbnN0RGF0YSA9IHsiJHtuYW1lfSIsIHN0YXRpY19jYXN0PHNpZ25lZCBpbnQ+KCR7
dmFsdWV9KX07CisgICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25z
dGFudHMoZGVzYywgcHJvdG8sICZjb25zdERhdGEsIDEpOwogRU5ECiAgICAgICAgIHB1c2goQGlt
cGxDb250ZW50LCAiICAgIH1cbiIpOwogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIlxuI2Vu
ZGlmIC8vICR7Y29uZGl0aW9uYWxTdHJpbmd9XG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CkBA
IC0yOTUxLDcgKzI5NTEsNyBAQCBFTkQKIAogICAgIGlmICgkaGFzX2NvbnN0YW50cykgewogICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgPDxFTkQpOwotICAgIGJhdGNoQ29uZmlndXJlQ29uc3Rh
bnRzKGRlc2MsIHByb3RvLCAke2ludGVyZmFjZU5hbWV9Q29uc3RzLCBXVEZfQVJSQVlfTEVOR1RI
KCR7aW50ZXJmYWNlTmFtZX1Db25zdHMpKTsKKyAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNo
Q29uZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCAke2ludGVyZmFjZU5hbWV9Q29uc3RzLCBX
VEZfQVJSQVlfTEVOR1RIKCR7aW50ZXJmYWNlTmFtZX1Db25zdHMpKTsKIEVORAogICAgIH0KIApA
QCAtMzA0MiwxMCArMzA0MiwxMCBAQCBFTkQKICAgICAgICAgICAgICAgICBteSAkY29uZGl0aW9u
YWxTdHJpbmcgPSAkY29kZUdlbmVyYXRvci0+R2VuZXJhdGVDb25kaXRpb25hbFN0cmluZygkcnVu
dGltZUF0dHItPnNpZ25hdHVyZSk7CiAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQs
ICJcbiNpZiAke2NvbmRpdGlvbmFsU3RyaW5nfVxuIikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwog
ICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIGlmICgke2VuYWJsZUZ1bmN0
aW9ufShpbXBsLT5kb2N1bWVudCgpKSkge1xuIik7Ci0gICAgICAgICAgICAgICAgcHVzaChAaW1w
bENvbnRlbnQsICIgICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRh
ID1cXFxuIik7CisgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgICAgIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEg
PVxcXG4iKTsKICAgICAgICAgICAgICAgICBHZW5lcmF0ZVNpbmdsZUJhdGNoZWRBdHRyaWJ1dGUo
JGludGVyZmFjZU5hbWUsICRydW50aW1lQXR0ciwgIjsiLCAiICAgICIpOwogICAgICAgICAgICAg
ICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7Ci0gICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0
ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9u
Ojpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiBFTkQKICAg
ICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICB9XG4iKTsKICAgICAgICAgICAg
ICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiNlbmRpZiAvLyAke2NvbmRpdGlvbmFsU3RyaW5nfVxu
IikgaWYgJGNvbmRpdGlvbmFsU3RyaW5nOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKaW5kZXggY2UzMDUy
NTQxMjVjZWU4MGE3OTBlZWI2MjMyM2MzNWQ3ZWViOTBiMS4uOTZlMjA1M2UyY2RhMjA3OTcxMjU4
NTkyNzYwOGUwNWUzYzhhNThmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCkBAIC03Nyw3ICs3Nyw3
IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB0b1Y4KEZsb2F0NjRBcnJheSogaW1wbCwgdjg6Oklz
b2xhdGUqIGlzb2xhdGUpCiAgICAgcmV0dXJuIHdyYXBwZXI7CiB9CiAKLXN0YXRpYyBjb25zdCBC
YXRjaGVkQ2FsbGJhY2sgRmxvYXQ2NEFycmF5Q2FsbGJhY2tzW10gPSB7CitzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgRmxvYXQ2NEFycmF5Q2FsbGJhY2tz
W10gPSB7CiAgICAgeyJzZXQiLCBGbG9hdDY0QXJyYXlWOEludGVybmFsOjpzZXRDYWxsYmFja30s
CiB9OwogCkBAIC05Miw3ICs5Miw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rp
b25UZW1wbGF0ZT4gQ29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgZGVz
Yy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBk
ZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0
ZShkZXNjLCAiRmxvYXQ2NEFycmF5IiwgVjhBcnJheUJ1ZmZlclZpZXc6OkdldFRlbXBsYXRlKCks
IFY4RmxvYXQ2NEFycmF5OjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVy
ZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIkZsb2F0NjRB
cnJheSIsIFY4QXJyYXlCdWZmZXJWaWV3OjpHZXRUZW1wbGF0ZSgpLCBWOEZsb2F0NjRBcnJheTo6
aW50ZXJuYWxGaWVsZENvdW50LAogICAgICAgICAwLCAwLAogICAgICAgICBGbG9hdDY0QXJyYXlD
YWxsYmFja3MsIFdURl9BUlJBWV9MRU5HVEgoRmxvYXQ2NEFycmF5Q2FsbGJhY2tzKSk7CiAgICAg
VU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxs
IG5vdCBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAppbmRleCBhNGFl
NzhjOGNiM2FhNTFhZjc5Y2RlNTg2YjE2ZDQ0NjBmMjIxYjRlLi41YTEzYzFkOGIyNWYzMzcwYzQ1
YzQwNzFkMDBhODA2NGFmZDE2MzhlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNw
cApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB2b2lkIFRlc3RBY3RpdmVET01PYmplY3REb21h
aW5TYWZlRnVuY3Rpb25TZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hCiAKIH0gLy8gbmFt
ZXNwYWNlIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsCiAKLXN0YXRpYyBjb25zdCBCYXRj
aGVkQXR0cmlidXRlIFRlc3RBY3RpdmVET01PYmplY3RBdHRyc1tdID0geworc3RhdGljIGNvbnN0
IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBUZXN0QWN0aXZlRE9NT2JqZWN0
QXR0cnNbXSA9IHsKICAgICAvLyBBdHRyaWJ1dGUgJ2V4Y2l0aW5nQXR0cicgKFR5cGU6ICdyZWFk
b25seSBhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsiZXhjaXRpbmdBdHRyIiwgVGVzdEFj
dGl2ZURPTU9iamVjdFY4SW50ZXJuYWw6OmV4Y2l0aW5nQXR0ckF0dHJHZXR0ZXIsIDAsIDAgLyog
bm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwg
c3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5z
dGFuY2UgKi99LAogfTsKQEAgLTEyMCw3ICsxMjAsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVjdFRlbXBs
YQogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNp
Z25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmln
dXJlVGVtcGxhdGUoZGVzYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbnRlcm5hbEZp
ZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29u
ZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RBY3RpdmVET01PYmplY3QiLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0QWN0aXZlRE9NT2JqZWN0OjppbnRlcm5h
bEZpZWxkQ291bnQsCiAgICAgICAgIFRlc3RBY3RpdmVET01PYmplY3RBdHRycywgV1RGX0FSUkFZ
X0xFTkdUSChUZXN0QWN0aXZlRE9NT2JqZWN0QXR0cnMpLAogICAgICAgICAwLCAwKTsKICAgICBV
TlVTRURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwg
bm90IGJlIHVzZWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCBi
OTY1OTVkNzg1ZjhkYjQxNjQxNTdlMDUxOGQ1MGI5OWVlOTI2NGUwLi5mZWNjNDBjODZiNzc1MmY1
Yzk0NGY3ODkxZWQ4NjhlMGY1NDIwZTU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdl
dHRlci5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
bm90aGVyRnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQogCiB9IC8v
IG5hbWVzcGFjZSBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJWOEludGVybmFsCiAKLXN0YXRpYyBjb25z
dCBCYXRjaGVkQ2FsbGJhY2sgVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ2FsbGJhY2tzW10gPSB7Citz
dGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgVGVzdEN1c3Rv
bU5hbWVkR2V0dGVyQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJhbm90aGVyRnVuY3Rpb24iLCBUZXN0
Q3VzdG9tTmFtZWRHZXR0ZXJWOEludGVybmFsOjphbm90aGVyRnVuY3Rpb25DYWxsYmFja30sCiB9
OwogCkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1wCiAgICAgZGVzYy0+
UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZh
dWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShk
ZXNjLCAiVGVzdEN1c3RvbU5hbWVkR2V0dGVyIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+KCksIFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjppbnRlcm5hbEZpZWxkQ291bnQs
CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVt
cGxhdGUoZGVzYywgIlRlc3RDdXN0b21OYW1lZEdldHRlciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RDdXN0b21OYW1lZEdldHRlcjo6aW50ZXJuYWxGaWVs
ZENvdW50LAogICAgICAgICAwLCAwLAogICAgICAgICBUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJDYWxs
YmFja3MsIFdURl9BUlJBWV9MRU5HVEgoVGVzdEN1c3RvbU5hbWVkR2V0dGVyQ2FsbGJhY2tzKSk7
CiAgICAgVU5VU0VEX1BBUkFNKGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBp
dCB3aWxsIG5vdCBiZSB1c2VkLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3BwCmlu
ZGV4IDU2NTQzNjJlMzQ0ZmRiMjMzNjhhOTE0NDk2NzQyYWM5Y2I5ZmFhYzMuLjZlNzU1YTdjZGI0
Yjc0MGJhNTJhMzRjN2RiZmY1OTA1NmMyMGNmM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25z
dHJ1Y3Rvci5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBhdHRyMkF0dHJHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHYKIAog
fSAvLyBuYW1lc3BhY2UgVGVzdEV2ZW50Q29uc3RydWN0b3JWOEludGVybmFsCiAKLXN0YXRpYyBj
b25zdCBCYXRjaGVkQXR0cmlidXRlIFRlc3RFdmVudENvbnN0cnVjdG9yQXR0cnNbXSA9IHsKK3N0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV2ZW50
Q29uc3RydWN0b3JBdHRyc1tdID0gewogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cjEnIChUeXBlOiAn
cmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKICAgICB7ImF0dHIxIiwgVGVzdEV2ZW50
Q29uc3RydWN0b3JWOEludGVybmFsOjphdHRyMUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAq
Lywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nh
c3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99
LAogICAgIC8vIEF0dHJpYnV0ZSAnYXR0cjInIChUeXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBF
eHRBdHRyOiAnSW5pdGlhbGl6ZWRCeUV2ZW50Q29uc3RydWN0b3InKQpAQCAtMTAyLDcgKzEwMiw3
IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJl
VjhUZXN0RXZlbnRDb25zdHJ1Y3RvclRlbXBsCiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUo
KTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAg
IGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEV2ZW50Q29u
c3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0
RXZlbnRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1
cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0RXZl
bnRDb25zdHJ1Y3RvciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBW
OFRlc3RFdmVudENvbnN0cnVjdG9yOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFRlc3RF
dmVudENvbnN0cnVjdG9yQXR0cnMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdEV2ZW50Q29uc3RydWN0
b3JBdHRycyksCiAgICAgICAgIDAsIDApOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0
dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZl
bnRUYXJnZXQuY3BwCmluZGV4IGIzOTViOTU0Y2Q1Mzg1NTVhNzc2ZjhkNzFmYTVlNjU3YTNmMTgz
MDYuLjg3ZWVhOGJmMGViYmNkYTkzMWM0Y2ZiZjg2MjgxMDQ2MWE2MGRjMzQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdl
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV2ZW50VGFyZ2V0LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZGlzcGF0Y2hFdmVudENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMmIGFyZ3Mp
CiAKIH0gLy8gbmFtZXNwYWNlIFRlc3RFdmVudFRhcmdldFY4SW50ZXJuYWwKIAotc3RhdGljIGNv
bnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0RXZlbnRUYXJnZXRDYWxsYmFja3NbXSA9IHsKK3N0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRDYWxsYmFjayBUZXN0RXZlbnRUYXJn
ZXRDYWxsYmFja3NbXSA9IHsKICAgICB7Iml0ZW0iLCBUZXN0RXZlbnRUYXJnZXRWOEludGVybmFs
OjppdGVtQ2FsbGJhY2t9LAogICAgIHsiYWRkRXZlbnRMaXN0ZW5lciIsIFRlc3RFdmVudFRhcmdl
dFY4SW50ZXJuYWw6OmFkZEV2ZW50TGlzdGVuZXJDYWxsYmFja30sCiAgICAgeyJyZW1vdmVFdmVu
dExpc3RlbmVyIiwgVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6cmVtb3ZlRXZlbnRMaXN0ZW5l
ckNhbGxiYWNrfSwKQEAgLTExNCw3ICsxMTQsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6
OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUodgog
ICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25h
dHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJl
VGVtcGxhdGUoZGVzYywgIlRlc3RFdmVudFRhcmdldCIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5j
dGlvblRlbXBsYXRlPigpLCBWOFRlc3RFdmVudFRhcmdldDo6aW50ZXJuYWxGaWVsZENvdW50LAor
ICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZVRlbXBs
YXRlKGRlc2MsICJUZXN0RXZlbnRUYXJnZXQiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0RXZlbnRUYXJnZXQ6OmludGVybmFsRmllbGRDb3VudCwKICAgICAg
ICAgMCwgMCwKICAgICAgICAgVGVzdEV2ZW50VGFyZ2V0Q2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVO
R1RIKFRlc3RFdmVudFRhcmdldENhbGxiYWNrcykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0
U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNl
cHRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV4Y2VwdGlvbi5jcHAKaW5kZXggYzAyMTZlZTNhZmIwNmMxNzA0ZmUyNTdhODM4NGZhZTZlNWE2
MGI1ZS4uOWJiOTlhYzNlNzk2M2FkOTM2YWVlZmFkOTZmYWY2N2EyZTBiNzllZSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEV4Y2VwdGlvbi5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBuYW1lQXR0ckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3QgdjgK
IAogfSAvLyBuYW1lc3BhY2UgVGVzdEV4Y2VwdGlvblY4SW50ZXJuYWwKIAotc3RhdGljIGNvbnN0
IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEV4Y2VwdGlvbkF0dHJzW10gPSB7CitzdGF0aWMgY29uc3Qg
VjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RFeGNlcHRpb25BdHRyc1td
ID0gewogICAgIC8vIEF0dHJpYnV0ZSAnbmFtZScgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUn
IEV4dEF0dHI6ICcnKQogICAgIHsibmFtZSIsIFRlc3RFeGNlcHRpb25WOEludGVybmFsOjpuYW1l
QXR0ckdldHRlciwgMCwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL30sCiB9OwpAQCAtNTcsNyArNTcsNyBAQCBzdGF0
aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV4
Y2VwdGlvblRlbXBsYXRlKHY4OgogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0
U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFeGNlcHRpb24iLCB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXhjZXB0aW9uOjppbnRl
cm5hbEZpZWxkQ291bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlv
bjo6Y29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RFeGNlcHRpb24iLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0RXhjZXB0aW9uOjppbnRlcm5hbEZpZWxk
Q291bnQsCiAgICAgICAgIFRlc3RFeGNlcHRpb25BdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0
RXhjZXB0aW9uQXR0cnMpLAogICAgICAgICAwLCAwKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVs
dFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50
ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuY3BwCmluZGV4IGVmNmJkNWQ0MDgxNTY0MDVhMTE2ZmI1MDNiMTI2YmMwOWM4
NWFlNTUuLjQ3ZTQyMjg0MDJkZjg0YmE3MTM1MzdlNjg1ZDAyMTg0ZGIzMGFlYzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZh
Y2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RJbnRlcmZhY2UuY3BwCkBAIC0xODksNyArMTg5LDcgQEAgc3RhdGljIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBzdXBwbGVtZW50YWxNZXRob2Q0Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXIKIAogfSAvLyBuYW1lc3BhY2UgVGVzdEludGVyZmFjZVY4SW50ZXJuYWwKIAotc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgVGVzdEludGVyZmFjZUF0dHJzW10gPSB7CitzdGF0aWMgY29u
c3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQXR0cmlidXRlIFRlc3RJbnRlcmZhY2VBdHRy
c1tdID0gewogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQog
ICAgIC8vIEF0dHJpYnV0ZSAnc3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyJyAoVHlwZTog
J3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0cjogJ0NvbmRpdGlvbmFsIEltcGxlbWVudGVkQnkn
KQogICAgIHsic3VwcGxlbWVudGFsU3RhdGljUmVhZE9ubHlBdHRyIiwgVGVzdEludGVyZmFjZVY4
SW50ZXJuYWw6OnN1cHBsZW1lbnRhbFN0YXRpY1JlYWRPbmx5QXR0ckF0dHJHZXR0ZXIsIDAsIDAg
Lyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxU
KSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24g
aW5zdGFuY2UgKi99LApAQCAtMjE2LDcgKzIxNiw3IEBAIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0
cmlidXRlIFRlc3RJbnRlcmZhY2VBdHRyc1tdID0gewogI2VuZGlmIC8vIEVOQUJMRShDb25kaXRp
b24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogfTsKIAotc3RhdGljIGNvbnN0IEJhdGNoZWRD
YWxsYmFjayBUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzW10gPSB7CitzdGF0aWMgY29uc3QgVjhET01D
b25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgVGVzdEludGVyZmFjZUNhbGxiYWNrc1tdID0g
ewogI2lmIEVOQUJMRShDb25kaXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIHsi
c3VwcGxlbWVudGFsTWV0aG9kMSIsIFRlc3RJbnRlcmZhY2VWOEludGVybmFsOjpzdXBwbGVtZW50
YWxNZXRob2QxQ2FsbGJhY2t9LAogI2VuZGlmCkBAIC0yMjUsNyArMjI1LDcgQEAgc3RhdGljIGNv
bnN0IEJhdGNoZWRDYWxsYmFjayBUZXN0SW50ZXJmYWNlQ2FsbGJhY2tzW10gPSB7CiAjZW5kaWYK
IH07CiAKLXN0YXRpYyBjb25zdCBCYXRjaGVkQ29uc3RhbnQgVGVzdEludGVyZmFjZUNvbnN0c1td
ID0geworc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENvbnN0YW50IFRl
c3RJbnRlcmZhY2VDb25zdHNbXSA9IHsKICNpZiBFTkFCTEUoQ29uZGl0aW9uMTEpIHx8IEVOQUJM
RShDb25kaXRpb24xMikKICAgICB7IlNVUFBMRU1FTlRBTENPTlNUQU5UMSIsIHN0YXRpY19jYXN0
PHNpZ25lZCBpbnQ+KDEpfSwKICNlbmRpZgpAQCAtMjc5LDcgKzI3OSw3IEBAIHN0YXRpYyB2ODo6
UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0SW50ZXJmYWNl
VGVtcGxhdGUodjg6CiAgICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpM
b2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1
cmUgPSBjb25maWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFjZSIsIHY4OjpQZXJzaXN0
ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZhY2U6OmludGVybmFsRmll
bGRDb3VudCwKKyAgICBkZWZhdWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25m
aWd1cmVUZW1wbGF0ZShkZXNjLCAiVGVzdEludGVyZmFjZSIsIHY4OjpQZXJzaXN0ZW50PHY4OjpG
dW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RJbnRlcmZhY2U6OmludGVybmFsRmllbGRDb3VudCwK
ICAgICAgICAgVGVzdEludGVyZmFjZUF0dHJzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RJbnRlcmZh
Y2VBdHRycyksCiAgICAgICAgIFRlc3RJbnRlcmZhY2VDYWxsYmFja3MsIFdURl9BUlJBWV9MRU5H
VEgoVGVzdEludGVyZmFjZUNhbGxiYWNrcykpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2ln
bmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KQEAgLTMwMCw3
ICszMDAsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OgogI2lmIEVOQUJMRShDb25kaXRpb24x
MSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQogICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXco
InN1cHBsZW1lbnRhbE1ldGhvZDQiKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhUZXN0SW50
ZXJmYWNlVjhJbnRlcm5hbDo6c3VwcGxlbWVudGFsTWV0aG9kNENhbGxiYWNrLCB2OFVuZGVmaW5l
ZCgpLCB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4oKSkpOwogI2VuZGlmIC8vIEVOQUJMRShDb25k
aXRpb24xMSkgfHwgRU5BQkxFKENvbmRpdGlvbjEyKQotICAgIGJhdGNoQ29uZmlndXJlQ29uc3Rh
bnRzKGRlc2MsIHByb3RvLCBUZXN0SW50ZXJmYWNlQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFRl
c3RJbnRlcmZhY2VDb25zdHMpKTsKKyAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmln
dXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBUZXN0SW50ZXJmYWNlQ29uc3RzLCBXVEZfQVJSQVlf
TEVOR1RIKFRlc3RJbnRlcmZhY2VDb25zdHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0
ZW1wbGF0ZQogICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1w
bGF0ZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcApp
bmRleCBjNzQwYjk1NTYwYjc5Njk1ZjY1ZTA4N2ZiMTQ2MDlmZDAxOWFiZmExLi4yNjVmMzA4Nzkw
MDIxZGY1Njk1YzU3MDAwNjE5OTkzZDhkYmU4MjgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1l
ZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHN0YXRpYyB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gbWV0aG9kQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykK
IAogfSAvLyBuYW1lc3BhY2UgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFsCiAK
LXN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJD
YWxsYmFja3NbXSA9IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRD
YWxsYmFjayBUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lckNhbGxiYWNrc1tdID0gewogICAgIHsi
bWV0aG9kIiwgVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJWOEludGVybmFsOjptZXRob2RDYWxs
YmFja30sCiB9OwogCkBAIC02Miw3ICs2Miw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lCiAg
ICAgZGVzYy0+UmVhZE9ubHlQcm90b3R5cGUoKTsKIAogICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0
dXJlPiBkZWZhdWx0U2lnbmF0dXJlOwotICAgIGRlZmF1bHRTaWduYXR1cmUgPSBjb25maWd1cmVU
ZW1wbGF0ZShkZXNjLCAiVGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIiLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lcjo6
aW50ZXJuYWxGaWVsZENvdW50LAorICAgIGRlZmF1bHRTaWduYXR1cmUgPSBWOERPTUNvbmZpZ3Vy
YXRpb246OmNvbmZpZ3VyZVRlbXBsYXRlKGRlc2MsICJUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5l
ciIsIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPigpLCBWOFRlc3RNZWRpYVF1
ZXJ5TGlzdExpc3RlbmVyOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCiAgICAg
ICAgIFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RI
KFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyQ2FsbGJhY2tzKSk7CiAgICAgVU5VU0VEX1BBUkFN
KGRlZmF1bHRTaWduYXR1cmUpOyAvLyBJbiBzb21lIGNhc2VzLCBpdCB3aWxsIG5vdCBiZSB1c2Vk
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCmluZGV4IDlhZTY3NGJiYjZmZDc0
MmM0NDg1ZjEwZjllYjQyZWU5Y2M4ZGIyNmIuLjZlN2M2ZTI2Yjk0YTEwOGZiYmQ0YjBkMGZlNDJk
ODE0NjA0Njc5Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvci5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
IENvbmZpZ3VyZVY4VGVzdE5hbWVkQ29uc3RydWN0b3JUZW1wbAogICAgIGRlc2MtPlJlYWRPbmx5
UHJvdG90eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25h
dHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRl
c3ROYW1lZENvbnN0cnVjdG9yIiwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+
KCksIFY4VGVzdE5hbWVkQ29uc3RydWN0b3I6OmludGVybmFsRmllbGRDb3VudCwKKyAgICBkZWZh
dWx0U2lnbmF0dXJlID0gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZShkZXNj
LCAiVGVzdE5hbWVkQ29uc3RydWN0b3IiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1w
bGF0ZT4oKSwgVjhUZXN0TmFtZWRDb25zdHJ1Y3Rvcjo6aW50ZXJuYWxGaWVsZENvdW50LAogICAg
ICAgICAwLCAwLAogICAgICAgICAwLCAwKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25h
dHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHAK
aW5kZXggOTkxNmNjMTZmZjcxODQ5MjNkYmJkZGNkY2Q4OTdlMWVlZTJiNDU3Ny4uY2U3M2M3MTg1
NjNkMThiZGM4ZmQ5YWFjY2Y4NzA5MzhlNzA0ZWY3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNwcApAQCAtNjUsNyAr
NjUsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZp
Z3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90
eXBlKCk7CiAKICAgICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsK
LSAgICBkZWZhdWx0U2lnbmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3ROb2Rl
IiwgVjhOb2RlOjpHZXRUZW1wbGF0ZSgpLCBWOFRlc3ROb2RlOjppbnRlcm5hbEZpZWxkQ291bnQs
CisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVt
cGxhdGUoZGVzYywgIlRlc3ROb2RlIiwgVjhOb2RlOjpHZXRUZW1wbGF0ZSgpLCBWOFRlc3ROb2Rl
OjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIDAsIDAsCiAgICAgICAgIDAsIDApOwogICAg
IFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2ls
bCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAKaW5kZXggNTcwMDBmNDEzYjAzM2Q2MGM5NmIxZTU1Yjkx
Y2UzNDY5NWFmOGU3Yi4uYTZhNGI4OTQwOTY3NTFmNDg1MGNjMDMxYzU4NjdhZWYwYWU0YjQwNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dE9iai5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE9iai5jcHAKQEAgLTE5MTcsNyArMTkxNyw3IEBAIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gc3RyaWN0RnVuY3Rpb25DYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQog
CiB9IC8vIG5hbWVzcGFjZSBUZXN0T2JqVjhJbnRlcm5hbAogCi1zdGF0aWMgY29uc3QgQmF0Y2hl
ZEF0dHJpYnV0ZSBUZXN0T2JqQXR0cnNbXSA9IHsKK3N0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3Vy
YXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdE9iakF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmli
dXRlICdyZWFkT25seUxvbmdBdHRyJyAoVHlwZTogJ3JlYWRvbmx5IGF0dHJpYnV0ZScgRXh0QXR0
cjogJycpCiAgICAgeyJyZWFkT25seUxvbmdBdHRyIiwgVGVzdE9ialY4SW50ZXJuYWw6OnJlYWRP
bmx5TG9uZ0F0dHJBdHRyR2V0dGVyLCAwLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4
OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1
dGUgJ3JlYWRPbmx5U3RyaW5nQXR0cicgKFR5cGU6ICdyZWFkb25seSBhdHRyaWJ1dGUnIEV4dEF0
dHI6ICcnKQpAQCAtMjA0NCw3ICsyMDQ0LDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUgVGVzdE9iakF0dHJzW10gPSB7CiAgICAgeyJyZXBsYWNlYWJsZUF0dHJpYnV0ZSIsIFRlc3RP
YmpWOEludGVybmFsOjpyZXBsYWNlYWJsZUF0dHJpYnV0ZUF0dHJHZXR0ZXIsIFRlc3RPYmpWOElu
dGVybmFsOjpUZXN0T2JqUmVwbGFjZWFibGVBdHRyU2V0dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0
YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVGQVVMVCksIHN0YXRpY19jYXN0PHY4
OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8qIG9uIGluc3RhbmNlICovfSwKIH07
CiAKLXN0YXRpYyBjb25zdCBCYXRjaGVkQ2FsbGJhY2sgVGVzdE9iakNhbGxiYWNrc1tdID0gewor
c3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENhbGxiYWNrIFRlc3RPYmpD
YWxsYmFja3NbXSA9IHsKICAgICB7InZvaWRNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6dm9p
ZE1ldGhvZENhbGxiYWNrfSwKICAgICB7Ik1ldGhvZCIsIFRlc3RPYmpWOEludGVybmFsOjpNZXRo
b2RDYWxsYmFja30sCiAgICAgeyJvYmpNZXRob2QiLCBUZXN0T2JqVjhJbnRlcm5hbDo6b2JqTWV0
aG9kQ2FsbGJhY2t9LApAQCAtMjA5NCw3ICsyMDk0LDcgQEAgc3RhdGljIGNvbnN0IEJhdGNoZWRD
YWxsYmFjayBUZXN0T2JqQ2FsbGJhY2tzW10gPSB7CiAgICAgeyJzdHJpY3RGdW5jdGlvbiIsIFRl
c3RPYmpWOEludGVybmFsOjpzdHJpY3RGdW5jdGlvbkNhbGxiYWNrfSwKIH07CiAKLXN0YXRpYyBj
b25zdCBCYXRjaGVkQ29uc3RhbnQgVGVzdE9iakNvbnN0c1tdID0geworc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZENvbnN0YW50IFRlc3RPYmpDb25zdHNbXSA9IHsKICNp
ZiBFTkFCTEUoQ29uZGl0aW9uMSkKICAgICB7IkNPTkRJVElPTkFMX0NPTlNUIiwgc3RhdGljX2Nh
c3Q8c2lnbmVkIGludD4oMCl9LAogI2VuZGlmCkBAIC0yMTU3LDcgKzIxNTcsNyBAQCBzdGF0aWMg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdE9ialRl
bXBsYXRlKHY4OjpQZXJzaQogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2
ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2ln
bmF0dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RPYmplY3QiLCB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjppbnRlcm5hbEZpZWxkQ291
bnQsCisgICAgZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJl
VGVtcGxhdGUoZGVzYywgIlRlc3RPYmplY3QiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25U
ZW1wbGF0ZT4oKSwgVjhUZXN0T2JqOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFRlc3RP
YmpBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0T2JqQXR0cnMpLAogICAgICAgICBUZXN0T2Jq
Q2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RPYmpDYWxsYmFja3MpKTsKICAgICBVTlVT
RURfUEFSQU0oZGVmYXVsdFNpZ25hdHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90
IGJlIHVzZWQuCkBAIC0yMTY4LDE2ICsyMTY4LDE2IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUodjg6OlBlcnNp
CiAgICAgVU5VU0VEX1BBUkFNKHByb3RvKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3Qg
YmUgdXNlZC4KICAgICAKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6ZW5hYmxlZEF0
UnVudGltZUF0dHIxRW5hYmxlZCgpKSB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0
cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAgIHN0YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRp
b246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKICAgICAgICAgLy8gQXR0cmlidXRlICdl
bmFibGVkQXRSdW50aW1lQXR0cjEnIChUeXBlOiAnYXR0cmlidXRlJyBFeHRBdHRyOiAnVjhFbmFi
bGVkQXRSdW50aW1lJykKICAgICAgICAgeyJlbmFibGVkQXRSdW50aW1lQXR0cjEiLCBUZXN0T2Jq
VjhJbnRlcm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIxQXR0ckdldHRlciwgVGVzdE9ialY4SW50
ZXJuYWw6OmVuYWJsZWRBdFJ1bnRpbWVBdHRyMUF0dHJTZXR0ZXIsIDAgLyogbm8gZGF0YSAqLywg
c3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0NvbnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8
djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99Owot
ICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7Cisg
ICAgICAgIFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBw
cm90bywgYXR0ckRhdGEpOwogICAgIH0KICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6
ZmVhdHVyZU5hbWVFbmFibGVkKCkpIHsKLSAgICAgICAgc3RhdGljIGNvbnN0IEJhdGNoZWRBdHRy
aWJ1dGUgYXR0ckRhdGEgPVwKKyAgICAgICAgc3RhdGljIGNvbnN0IFY4RE9NQ29uZmlndXJhdGlv
bjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAvLyBBdHRyaWJ1dGUgJ2Vu
YWJsZWRBdFJ1bnRpbWVBdHRyMicgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICdWOEVuYWJs
ZWRBdFJ1bnRpbWUnKQogICAgICAgICB7ImVuYWJsZWRBdFJ1bnRpbWVBdHRyMiIsIFRlc3RPYmpW
OEludGVybmFsOjplbmFibGVkQXRSdW50aW1lQXR0cjJBdHRyR2V0dGVyLCBUZXN0T2JqVjhJbnRl
cm5hbDo6ZW5hYmxlZEF0UnVudGltZUF0dHIyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBz
dGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29udHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2
ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Ci0g
ICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAg
ICAgICAgVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHBy
b3RvLCBhdHRyRGF0YSk7CiAgICAgfQogCiAgICAgLy8gQ3VzdG9tIFNpZ25hdHVyZSAndm9pZE1l
dGhvZFdpdGhBcmdzJwpAQCAtMjI0OSw3ICsyMjQ5LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2ODo6UGVy
c2kKICAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjb252ZXJ0NUFyZ3ZbY29u
dmVydDVBcmdjXSA9IHsgVjhlOjpHZXRSYXdUZW1wbGF0ZSgpIH07CiAgICAgdjg6OkhhbmRsZTx2
ODo6U2lnbmF0dXJlPiBjb252ZXJ0NVNpZ25hdHVyZSA9IHY4OjpTaWduYXR1cmU6Ok5ldyhkZXNj
LCBjb252ZXJ0NUFyZ2MsIGNvbnZlcnQ1QXJndik7CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5n
OjpOZXcoImNvbnZlcnQ1IiksIHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdE9ialY4SW50
ZXJuYWw6OmNvbnZlcnQ1Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGNvbnZlcnQ1U2lnbmF0dXJl
KSk7Ci0gICAgYmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RPYmpDb25z
dHMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdE9iakNvbnN0cykpOworICAgIFY4RE9NQ29uZmlndXJh
dGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RPYmpDb25zdHMs
IFdURl9BUlJBWV9MRU5HVEgoVGVzdE9iakNvbnN0cykpOwogCiAgICAgLy8gQ3VzdG9tIHRvU3Ry
aW5nIHRlbXBsYXRlCiAgICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmlu
Z1RlbXBsYXRlKCkpOwpAQCAtMjI5NCwxNiArMjI5NCwxNiBAQCB2b2lkIFY4VGVzdE9iajo6aW5z
dGFsbFBlckNvbnRleHRQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gaW5zdGFuY2Us
IFRlcwogICAgIC8vIFdoZW4gYnVpbGRpbmcgUXRXZWJraXQgd2l0aCBWOCB0aGlzIHZhcmlhYmxl
IGlzIHVudXNlZCB3aGVuIG5vbmUgb2YgdGhlIGZlYXR1cmVzIGFyZSBlbmFibGVkLgogICAgIFVO
VVNFRF9QQVJBTShwcm90byk7CiAgICAgaWYgKENvbnRleHRGZWF0dXJlczo6ZW5hYmxlZFBlckNv
bnRleHRBdHRyMUVuYWJsZWQoaW1wbC0+ZG9jdW1lbnQoKSkpIHsKLSAgICAgICAgc3RhdGljIGNv
bnN0IEJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEgPVwKKyAgICAgICAgc3RhdGljIGNvbnN0IFY4
RE9NQ29uZmlndXJhdGlvbjo6QmF0Y2hlZEF0dHJpYnV0ZSBhdHRyRGF0YSA9XAogICAgICAgICAv
LyBBdHRyaWJ1dGUgJ2VuYWJsZWRQZXJDb250ZXh0QXR0cjEnIChUeXBlOiAnYXR0cmlidXRlJyBF
eHRBdHRyOiAnVjhFbmFibGVkUGVyQ29udGV4dCcpCiAgICAgICAgIHsiZW5hYmxlZFBlckNvbnRl
eHRBdHRyMSIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0dHIxQXR0ckdl
dHRlciwgVGVzdE9ialY4SW50ZXJuYWw6OmVuYWJsZWRQZXJDb250ZXh0QXR0cjFBdHRyU2V0dGVy
LCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6REVG
QVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAwIC8q
IG9uIGluc3RhbmNlICovfTsKLSAgICAgICAgY29uZmlndXJlQXR0cmlidXRlKGluc3RhbmNlLCBw
cm90bywgYXR0ckRhdGEpOworICAgICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmNvbmZpZ3VyZUF0
dHJpYnV0ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKICAgICB9CiAgICAgaWYgKENvbnRl
eHRGZWF0dXJlczo6ZmVhdHVyZU5hbWVFbmFibGVkKGltcGwtPmRvY3VtZW50KCkpKSB7Ci0gICAg
ICAgIHN0YXRpYyBjb25zdCBCYXRjaGVkQXR0cmlidXRlIGF0dHJEYXRhID1cCisgICAgICAgIHN0
YXRpYyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgYXR0ckRhdGEg
PVwKICAgICAgICAgLy8gQXR0cmlidXRlICdlbmFibGVkUGVyQ29udGV4dEF0dHIyJyAoVHlwZTog
J2F0dHJpYnV0ZScgRXh0QXR0cjogJ1Y4RW5hYmxlZFBlckNvbnRleHQnKQogICAgICAgICB7ImVu
YWJsZWRQZXJDb250ZXh0QXR0cjIiLCBUZXN0T2JqVjhJbnRlcm5hbDo6ZW5hYmxlZFBlckNvbnRl
eHRBdHRyMkF0dHJHZXR0ZXIsIFRlc3RPYmpWOEludGVybmFsOjplbmFibGVkUGVyQ29udGV4dEF0
dHIyQXR0clNldHRlciwgMCAvKiBubyBkYXRhICovLCBzdGF0aWNfY2FzdDx2ODo6QWNjZXNzQ29u
dHJvbD4odjg6OkRFRkFVTFQpLCBzdGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4
OjpOb25lKSwgMCAvKiBvbiBpbnN0YW5jZSAqL307Ci0gICAgICAgIGNvbmZpZ3VyZUF0dHJpYnV0
ZShpbnN0YW5jZSwgcHJvdG8sIGF0dHJEYXRhKTsKKyAgICAgICAgVjhET01Db25maWd1cmF0aW9u
Ojpjb25maWd1cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyRGF0YSk7CiAgICAgfQog
ICAgIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25h
dHVyZTo6TmV3KEdldFRlbXBsYXRlKCkpOwogICAgIFVOVVNFRF9QQVJBTShkZWZhdWx0U2lnbmF0
dXJlKTsgLy8gSW4gc29tZSBjYXNlcywgaXQgd2lsbCBub3QgYmUgdXNlZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVk
U2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0
cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXgg
MzJiZTFkNzk3M2VkMjBmZjEwNDRkNTc2MDMzMDkxM2EyMTNiYzhiNS4uYTYxYzhhZWNhYTU2MjNh
ODliY2RhOGY0YWFhMWMwYjU2NThiODZiMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFj
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTE5MCw3ICsxOTAsNyBAQCBz
dGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG11bHRpVHJhbnNmZXJMaXN0Q2FsbGJhY2soY29u
c3Qgdjg6OkFyZ3VtZW50cyYgYXJncwogCiB9IC8vIG5hbWVzcGFjZSBUZXN0U2VyaWFsaXplZFNj
cmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbAogCi1zdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQXR0cnNbXSA9IHsKK3N0YXRp
YyBjb25zdCBWOERPTUNvbmZpZ3VyYXRpb246OkJhdGNoZWRBdHRyaWJ1dGUgVGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUF0dHJzW10gPSB7CiAgICAgLy8gQXR0cmlidXRlICd2YWx1
ZScgKFR5cGU6ICdhdHRyaWJ1dGUnIEV4dEF0dHI6ICcnKQogICAgIHsidmFsdWUiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyR2V0dGVyLCBU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6dmFsdWVBdHRyU2V0
dGVyLCAwIC8qIG5vIGRhdGEgKi8sIHN0YXRpY19jYXN0PHY4OjpBY2Nlc3NDb250cm9sPih2ODo6
REVGQVVMVCksIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZT4odjg6Ok5vbmUpLCAw
IC8qIG9uIGluc3RhbmNlICovfSwKICAgICAvLyBBdHRyaWJ1dGUgJ3JlYWRvbmx5VmFsdWUnIChU
eXBlOiAncmVhZG9ubHkgYXR0cmlidXRlJyBFeHRBdHRyOiAnJykKQEAgLTIwMyw3ICsyMDMsNyBA
QCBzdGF0aWMgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQXR0cnNbXSA9IHsKICAgICB7ImNhY2hlZFJlYWRvbmx5VmFsdWUiLCBUZXN0U2Vy
aWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlVjhJbnRlcm5hbDo6Y2FjaGVkUmVhZG9ubHlWYWx1
ZUF0dHJHZXR0ZXIsIDAsIDAgLyogbm8gZGF0YSAqLywgc3RhdGljX2Nhc3Q8djg6OkFjY2Vzc0Nv
bnRyb2w+KHY4OjpERUZBVUxUKSwgc3RhdGljX2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2
ODo6Tm9uZSksIDAgLyogb24gaW5zdGFuY2UgKi99LAogfTsKIAotc3RhdGljIGNvbnN0IEJhdGNo
ZWRDYWxsYmFjayBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlQ2FsbGJhY2tzW10g
PSB7CitzdGF0aWMgY29uc3QgVjhET01Db25maWd1cmF0aW9uOjpCYXRjaGVkQ2FsbGJhY2sgVGVz
dFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZUNhbGxiYWNrc1tdID0gewogICAgIHsiYWNj
ZXB0VHJhbnNmZXJMaXN0IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50
ZXJuYWw6OmFjY2VwdFRyYW5zZmVyTGlzdENhbGxiYWNrfSwKICAgICB7Im11bHRpVHJhbnNmZXJM
aXN0IiwgVGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVY4SW50ZXJuYWw6Om11bHRp
VHJhbnNmZXJMaXN0Q2FsbGJhY2t9LAogfTsKQEAgLTI0NCw3ICsyNDQsNyBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZQogICAgIGRlc2MtPlJlYWRPbmx5UHJvdG90eXBlKCk7CiAKICAgICB2ODo6
TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZTsKLSAgICBkZWZhdWx0U2lnbmF0
dXJlID0gY29uZmlndXJlVGVtcGxhdGUoZGVzYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJ
bnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0
U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCisgICAg
ZGVmYXVsdFNpZ25hdHVyZSA9IFY4RE9NQ29uZmlndXJhdGlvbjo6Y29uZmlndXJlVGVtcGxhdGUo
ZGVzYywgIlRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UiLCB2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4oKSwgVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlOjppbnRlcm5hbEZpZWxkQ291bnQsCiAgICAgICAgIFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VBdHRycywgV1RGX0FSUkFZX0xFTkdUSChUZXN0U2VyaWFsaXplZFNjcmlw
dFZhbHVlSW50ZXJmYWNlQXR0cnMpLAogICAgICAgICBUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVl
SW50ZXJmYWNlQ2FsbGJhY2tzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RTZXJpYWxpemVkU2NyaXB0
VmFsdWVJbnRlcmZhY2VDYWxsYmFja3MpKTsKICAgICBVTlVTRURfUEFSQU0oZGVmYXVsdFNpZ25h
dHVyZSk7IC8vIEluIHNvbWUgY2FzZXMsIGl0IHdpbGwgbm90IGJlIHVzZWQuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDgwNzA2MWYxNzAwMGE3YTI4NDM0MTNjMmJm
YzE1ZTlmZWQ3OTU0MzguLmNhM2FmYjY0OWI2NjZkZTJhNGVkYjEzOTkxNTk1NjY5NDE5MTQ5ZWMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNyw3ICszNyw3IEBA
CiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJWOEJpbmRpbmdIZWxwZXJz
LmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nTWFjcm9zLmgiCi0jaW5jbHVkZSAiVjhDb25maWd1cmVE
T01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5oIgorI2luY2x1ZGUgIlY4RE9NQ29uZmlndXJhdGlvbi5o
IgogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogI2luY2x1ZGUgIlY4R0NDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5k
TWV0aG9kcy5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZDQyYTcxNmEwZWE1
ODI2NzYzY2VmMmRjOTIzMmQ2NDFjYjU3M2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25maWd1cmVE
T01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4OSArMCwwIEBA
Ci0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKgotICog
MS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVpdGhlciB0aGUgbmFtZSBvZiBBcHBsZSBD
b21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBuYW1lcyBvZgotICogICAgIGl0cyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJ
RUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKLSAqIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0gKiBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKLSAq
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKLSAqIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8K
LQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlY4Q29uZmlndXJlRE9NQXR0cmlidXRl
c0FuZE1ldGhvZHMuaCIKLQotI2luY2x1ZGUgIlY4QmluZGluZy5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdFRlbXBsYXRlPiBpbnN0YW5jZSwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2
ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4gcHJvdG8sIAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQpCi17Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKQotICAgICAgICBjb25maWd1
cmVBdHRyaWJ1dGUoaW5zdGFuY2UsIHByb3RvLCBhdHRyaWJ1dGVzW2ldKTsKLX0KLQotdm9pZCBi
YXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRlbXBsYXRlPiBm
dW5jdGlvbkRlc2NyaXB0b3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5k
bGU8djg6Ok9iamVjdFRlbXBsYXRlPiBwcm90bywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQmF0Y2hlZENvbnN0YW50KiBjb25zdGFudHMsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBjb25zdGFudENvdW50KQotewotICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgY29uc3RhbnRDb3VudDsgKytpKSB7Ci0gICAgICAgIGNvbnN0IEJhdGNoZWRDb25zdGFu
dCogY29uc3RhbnQgPSAmY29uc3RhbnRzW2ldOwotICAgICAgICBmdW5jdGlvbkRlc2NyaXB0b3It
PlNldCh2ODo6U3RyaW5nOjpOZXcoY29uc3RhbnQtPm5hbWUpLCB2OEludGVnZXIoY29uc3RhbnQt
PnZhbHVlKSwgdjg6OlJlYWRPbmx5KTsKLSAgICAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpO
ZXcoY29uc3RhbnQtPm5hbWUpLCB2OEludGVnZXIoY29uc3RhbnQtPnZhbHVlKSwgdjg6OlJlYWRP
bmx5KTsKLSAgICB9Ci19Ci0KLXZvaWQgYmF0Y2hDb25maWd1cmVDYWxsYmFja3Modjg6OkhhbmRs
ZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiBzaWduYXR1cmUsIAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNrKiBjYWxsYmFja3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KQotewotICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY2FsbGJhY2tDb3VudDsgKytpKQotICAgICAgICBwcm90
by0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhjYWxsYmFja3NbaV0ubmFtZSksIHY4OjpGdW5jdGlvblRl
bXBsYXRlOjpOZXcoY2FsbGJhY2tzW2ldLmNhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBzaWduYXR1
cmUpLCBhdHRyaWJ1dGVzKTsKLX0KLQotdjg6OkxvY2FsPHY4OjpTaWduYXR1cmU+IGNvbmZpZ3Vy
ZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBkZXNjLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmludGVy
ZmFjZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBhcmVudENsYXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmaWVsZENvdW50LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1
dGUqIGF0dHJpYnV0ZXMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNpemVfdCBhdHRyaWJ1dGVDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxiYWNrcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCkK
LXsKLSAgICBkZXNjLT5TZXRDbGFzc05hbWUodjg6OlN0cmluZzo6TmV3KGludGVyZmFjZU5hbWUp
KTsKLSAgICB2ODo6TG9jYWw8djg6Ok9iamVjdFRlbXBsYXRlPiBpbnN0YW5jZSA9IGRlc2MtPklu
c3RhbmNlVGVtcGxhdGUoKTsKLSAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KGZp
ZWxkQ291bnQpOwotICAgIGlmICghcGFyZW50Q2xhc3MuSXNFbXB0eSgpKQotICAgICAgICBkZXNj
LT5Jbmhlcml0KHBhcmVudENsYXNzKTsKLSAgICBpZiAoYXR0cmlidXRlQ291bnQpCi0gICAgICAg
IGJhdGNoQ29uZmlndXJlQXR0cmlidXRlcyhpbnN0YW5jZSwgZGVzYy0+UHJvdG90eXBlVGVtcGxh
dGUoKSwgYXR0cmlidXRlcywgYXR0cmlidXRlQ291bnQpOwotICAgIHY4OjpMb2NhbDx2ODo6U2ln
bmF0dXJlPiBkZWZhdWx0U2lnbmF0dXJlID0gdjg6OlNpZ25hdHVyZTo6TmV3KGRlc2MpOwotICAg
IGlmIChjYWxsYmFja0NvdW50KQotICAgICAgICBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyhkZXNj
LT5Qcm90b3R5cGVUZW1wbGF0ZSgpLCBkZWZhdWx0U2lnbmF0dXJlLCBzdGF0aWNfY2FzdDx2ODo6
UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSwgY2FsbGJhY2tzLCBjYWxsYmFja0Nv
dW50KTsKLSAgICByZXR1cm4gZGVmYXVsdFNpZ25hdHVyZTsKLX0KLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhDb25maWd1
cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9kcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3NDZmZTgyNDQwODg0YzNmMTZmZGY2YjlmODNlNzgwNTQ0OTY5Y2UzLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1Y4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhvZHMuaAorKysgL2Rl
di9udWxsCkBAIC0xLDEwOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKgotICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAzLiAgTmVp
dGhlciB0aGUgbmFtZSBvZiBBcHBsZSBDb21wdXRlciwgSW5jLiAoIkFwcGxlIikgbm9yIHRoZSBu
YW1lcyBvZgotICogICAgIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQKLSAqICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFO
RCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQKLSAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKLSAqIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkKLSAqIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTCi0gKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7Ci0g
KiBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQKLSAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UgT0YKLSAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBWOENvbmZpZ3VyZURPTUF0dHJpYnV0
ZXNBbmRNZXRob2RzX2gKLSNkZWZpbmUgVjhDb25maWd1cmVET01BdHRyaWJ1dGVzQW5kTWV0aG9k
c19oCi0KLSNpbmNsdWRlICJWOERPTVdyYXBwZXIuaCIKLSNpbmNsdWRlIDx2OC5oPgotCi1uYW1l
c3BhY2UgV2ViQ29yZSB7Ci0KLS8vIFRoZSBmb2xsb3dpbmcgQmF0Y2ggc3RydWN0cyBhbmQgbWV0
aG9kcyBhcmUgdXNlZCBmb3Igc2V0dGluZyBtdWx0aXBsZQotLy8gcHJvcGVydGllcyBvbiBhbiBP
YmplY3RUZW1wbGF0ZSwgdXNlZCBmcm9tIHRoZSBnZW5lcmF0ZWQgYmluZGluZ3MKLS8vIGluaXRp
YWxpemF0aW9uIChDb25maWd1cmVYWFhUZW1wbGF0ZSkuIFRoaXMgZ3JlYXRseSByZWR1Y2VzIHRo
ZSBiaW5hcnkKLS8vIHNpemUgYnkgbW92aW5nIGZyb20gY29kZSBkcml2ZW4gc2V0dXAgdG8gZGF0
YSB0YWJsZSBkcml2ZW4gc2V0dXAuCi0KLS8vIEJhdGNoZWRBdHRyaWJ1dGUgdHJhbnNsYXRlcyBp
bnRvIGNhbGxzIHRvIFNldEFjY2Vzc29yKCkgb24gZWl0aGVyIHRoZQotLy8gaW5zdGFuY2Ugb3Ig
dGhlIHByb3RvdHlwZSBPYmplY3RUZW1wbGF0ZSwgYmFzZWQgb24gfG9uUHJvdG98Lgotc3RydWN0
IEJhdGNoZWRBdHRyaWJ1dGUgewotICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7Ci0gICAgdjg6
OkFjY2Vzc29yR2V0dGVyIGdldHRlcjsKLSAgICB2ODo6QWNjZXNzb3JTZXR0ZXIgc2V0dGVyOwot
ICAgIFdyYXBwZXJUeXBlSW5mbyogZGF0YTsKLSAgICB2ODo6QWNjZXNzQ29udHJvbCBzZXR0aW5n
czsKLSAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUgYXR0cmlidXRlOwotICAgIGJvb2wgb25Qcm90
bzsKLX07Ci0KLXZvaWQgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKHY4OjpIYW5kbGU8djg6Ok9i
amVjdFRlbXBsYXRlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8
djg6Ok9iamVjdFRlbXBsYXRlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IEJhdGNoZWRBdHRyaWJ1dGUqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90
IGF0dHJpYnV0ZUNvdW50KTsKLQotdGVtcGxhdGU8Y2xhc3MgT2JqZWN0T3JUZW1wbGF0ZT4KLWlu
bGluZSB2b2lkIGNvbmZpZ3VyZUF0dHJpYnV0ZSh2ODo6SGFuZGxlPE9iamVjdE9yVGVtcGxhdGU+
IGluc3RhbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8T2Jq
ZWN0T3JUZW1wbGF0ZT4gcHJvdG8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSYgYXR0cmlidXRlKQotewotICAgIChhdHRyaWJ1dGUub25Qcm90
byA/IHByb3RvIDogaW5zdGFuY2UpLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoYXR0cmli
dXRlLm5hbWUpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRyaWJ1dGUuZ2V0dGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGVyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6RXh0ZXJu
YWw6OldyYXAoYXR0cmlidXRlLmRhdGEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuc2V0dGluZ3MsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZS5h
dHRyaWJ1dGUpOwotfQotCi0vLyBCYXRjaGVkQ29uc3RhbnQgdHJhbnNsYXRlcyBpbnRvIGNhbGxz
IHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCi0vLyBjb25zdGFudHMuIEl0IHNl
dHMgdGhlIGNvbnN0YW50IG9uIGJvdGggdGhlIEZ1bmN0aW9uVGVtcGxhdGUgYW5kIHRoZQotLy8g
T2JqZWN0VGVtcGxhdGUuIFByb3BlcnR5QXR0cmlidXRlcyBpcyBhbHdheXMgUmVhZE9ubHkuCi1z
dHJ1Y3QgQmF0Y2hlZENvbnN0YW50IHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOwotICAg
IGludCB2YWx1ZTsKLX07Ci0KLXZvaWQgYmF0Y2hDb25maWd1cmVDb25zdGFudHModjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4
OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgQmF0Y2hlZENvbnN0YW50KiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2l6ZV90IGNvbnN0YW50Q291bnQpOwotCi0vLyBCYXRjaGVkQ2FsbGJhY2sgdHJhbnNsYXRlcyBp
bnRvIGNhbGxzIHRvIFNldCgpIG9uIHRoZSBwcm90b3R5cGUgT2JqZWN0VGVtcGxhdGUuCi1zdHJ1
Y3QgQmF0Y2hlZENhbGxiYWNrIHsKLSAgICBjb25zdCBjaGFyKiBjb25zdCBuYW1lOwotICAgIHY4
OjpJbnZvY2F0aW9uQ2FsbGJhY2sgY2FsbGJhY2s7Ci19OwotCi12b2lkIGJhdGNoQ29uZmlndXJl
Q2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNrKiwgCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNpemVfdCBjYWxsYmFja0NvdW50KTsKLQotdjg6OkxvY2FsPHY4OjpTaWduYXR1
cmU+IGNvbmZpZ3VyZVRlbXBsYXRlKHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
PiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFy
KiBpbnRlcmZhY2VOYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBwYXJlbnRDbGFzcywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmllbGRDb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVk
QXR0cmlidXRlKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
aXplX3QgYXR0cmlidXRlQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxiYWNrKiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCk7Ci0KLX0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIFY4Q29uZmlndXJlRE9NQXR0cmlidXRlc0FuZE1ldGhv
ZHNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01Db25maWd1
cmF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlv
bi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uNmYwODU0Zjg4YzQ1NmRiZTBhOTYxYTU5MzYyYWZiMGMzN2ExNWQz
MAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29u
ZmlndXJhdGlvbi5jcHAKQEAgLTAsMCArMSw4OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAq
IDIuICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gIE5laXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5v
ciB0aGUgbmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFT
IElTIiBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOworICogTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GCisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNp
bmNsdWRlICJWOERPTUNvbmZpZ3VyYXRpb24uaCIKKworI2luY2x1ZGUgIlY4QmluZGluZy5oIgor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3ZvaWQgVjhET01Db25maWd1cmF0aW9uOjpiYXRjaENv
bmZpZ3VyZUF0dHJpYnV0ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IGluc3RhbmNl
LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdjg6
OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3RvdHlwZSwgCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRBdHRyaWJ1dGUq
IGF0dHJpYnV0ZXMsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplX3QgYXR0cmlidXRlQ291bnQpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBhdHRyaWJ1dGVDb3VudDsgKytpKQorICAgICAgICBjb25maWd1cmVBdHRyaWJ1dGUoaW5z
dGFuY2UsIHByb3RvdHlwZSwgYXR0cmlidXRlc1tpXSk7Cit9CisKK3ZvaWQgVjhET01Db25maWd1
cmF0aW9uOjpiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBmdW5jdGlvbkRlc2NyaXB0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0VGVtcGxhdGU+IHByb3Rv
dHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBCYXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50cywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29uc3RhbnRDb3VudCkKK3sKKyAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IGNvbnN0YW50Q291bnQ7ICsraSkgeworICAgICAgICBjb25z
dCBCYXRjaGVkQ29uc3RhbnQqIGNvbnN0YW50ID0gJmNvbnN0YW50c1tpXTsKKyAgICAgICAgZnVu
Y3Rpb25EZXNjcmlwdG9yLT5TZXQodjg6OlN0cmluZzo6TmV3KGNvbnN0YW50LT5uYW1lKSwgdjhJ
bnRlZ2VyKGNvbnN0YW50LT52YWx1ZSksIHY4OjpSZWFkT25seSk7CisgICAgICAgIHByb3RvdHlw
ZS0+U2V0KHY4OjpTdHJpbmc6Ok5ldyhjb25zdGFudC0+bmFtZSksIHY4SW50ZWdlcihjb25zdGFu
dC0+dmFsdWUpLCB2ODo6UmVhZE9ubHkpOworICAgIH0KK30KKwordm9pZCBWOERPTUNvbmZpZ3Vy
YXRpb246OmJhdGNoQ29uZmlndXJlQ2FsbGJhY2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBs
YXRlPiBwcm90b3R5cGUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpIYW5kbGU8djg6OlNpZ25hdHVyZT4gc2lnbmF0dXJlLCAKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRy
aWJ1dGUgYXR0cmlidXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxiYWNrcywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3Vu
dCkKK3sKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGNhbGxiYWNrQ291bnQ7ICsraSkKKyAg
ICAgICAgcHJvdG90eXBlLT5TZXQodjg6OlN0cmluZzo6TmV3KGNhbGxiYWNrc1tpXS5uYW1lKSwg
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjYWxsYmFja3NbaV0uY2FsbGJhY2ssIHY4VW5kZWZp
bmVkKCksIHNpZ25hdHVyZSksIGF0dHJpYnV0ZXMpOworfQorCit2ODo6TG9jYWw8djg6OlNpZ25h
dHVyZT4gVjhET01Db25maWd1cmF0aW9uOjpjb25maWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVu
dDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZnVuY3Rpb25EZXNjcmlwdG9yLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
Y2hhciogaW50ZXJmYWNlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBwYXJlbnRDbGFzcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBmaWVsZENvdW50LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgQmF0Y2hlZEF0dHJpYnV0ZSogYXR0cmlidXRlcywgCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYXR0cmlidXRl
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQ2FsbGJhY2sqIGNhbGxiYWNrcywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNp
emVfdCBjYWxsYmFja0NvdW50KQoreworICAgIGZ1bmN0aW9uRGVzY3JpcHRvci0+U2V0Q2xhc3NO
YW1lKHY4OjpTdHJpbmc6Ok5ldyhpbnRlcmZhY2VOYW1lKSk7CisgICAgdjg6OkxvY2FsPHY4OjpP
YmplY3RUZW1wbGF0ZT4gaW5zdGFuY2UgPSBmdW5jdGlvbkRlc2NyaXB0b3ItPkluc3RhbmNlVGVt
cGxhdGUoKTsKKyAgICBpbnN0YW5jZS0+U2V0SW50ZXJuYWxGaWVsZENvdW50KGZpZWxkQ291bnQp
OworICAgIGlmICghcGFyZW50Q2xhc3MuSXNFbXB0eSgpKQorICAgICAgICBmdW5jdGlvbkRlc2Ny
aXB0b3ItPkluaGVyaXQocGFyZW50Q2xhc3MpOworICAgIGlmIChhdHRyaWJ1dGVDb3VudCkKKyAg
ICAgICAgYmF0Y2hDb25maWd1cmVBdHRyaWJ1dGVzKGluc3RhbmNlLCBmdW5jdGlvbkRlc2NyaXB0
b3ItPlByb3RvdHlwZVRlbXBsYXRlKCksIGF0dHJpYnV0ZXMsIGF0dHJpYnV0ZUNvdW50KTsKKyAg
ICB2ODo6TG9jYWw8djg6OlNpZ25hdHVyZT4gZGVmYXVsdFNpZ25hdHVyZSA9IHY4OjpTaWduYXR1
cmU6Ok5ldyhmdW5jdGlvbkRlc2NyaXB0b3IpOworICAgIGlmIChjYWxsYmFja0NvdW50KQorICAg
ICAgICBiYXRjaENvbmZpZ3VyZUNhbGxiYWNrcyhmdW5jdGlvbkRlc2NyaXB0b3ItPlByb3RvdHlw
ZVRlbXBsYXRlKCksIGRlZmF1bHRTaWduYXR1cmUsIHN0YXRpY19jYXN0PHY4OjpQcm9wZXJ0eUF0
dHJpYnV0ZT4odjg6OkRvbnREZWxldGUpLCBjYWxsYmFja3MsIGNhbGxiYWNrQ291bnQpOworICAg
IHJldHVybiBkZWZhdWx0U2lnbmF0dXJlOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24u
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NQ29uZmlndXJhdGlvbi5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmMzN2U2OTdmZTBlYjBmMGQ1MzVhZDU3MDhkYjRhNDcxOGZlZTM3ODkKLS0tIC9kZXYv
bnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTUNvbmZpZ3VyYXRpb24u
aApAQCAtMCwwICsxLDExMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICoKKyAqIDEuICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuICBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICogMy4gIE5laXRoZXIg
dGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUgbmFtZXMg
b2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQU5EIElUUyBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5Z
CisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVECisgKiBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgKiBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZCisgKiBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworICogKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOworICogTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5ECisgKiBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
CisgKiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgVjhET01Db25maWd1cmF0aW9uX2gKKyNkZWZp
bmUgVjhET01Db25maWd1cmF0aW9uX2gKKworI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgorI2lu
Y2x1ZGUgPHY4Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgVjhET01Db25maWd1
cmF0aW9uIHsKK3B1YmxpYzoKKyAgICAvLyBUaGUgZm9sbG93aW5nIEJhdGNoIHN0cnVjdHMgYW5k
IG1ldGhvZHMgYXJlIHVzZWQgZm9yIHNldHRpbmcgbXVsdGlwbGUKKyAgICAvLyBwcm9wZXJ0aWVz
IG9uIGFuIE9iamVjdFRlbXBsYXRlLCB1c2VkIGZyb20gdGhlIGdlbmVyYXRlZCBiaW5kaW5ncwor
ICAgIC8vIGluaXRpYWxpemF0aW9uIChDb25maWd1cmVYWFhUZW1wbGF0ZSkuIFRoaXMgZ3JlYXRs
eSByZWR1Y2VzIHRoZSBiaW5hcnkKKyAgICAvLyBzaXplIGJ5IG1vdmluZyBmcm9tIGNvZGUgZHJp
dmVuIHNldHVwIHRvIGRhdGEgdGFibGUgZHJpdmVuIHNldHVwLgorCisgICAgLy8gQmF0Y2hlZEF0
dHJpYnV0ZSB0cmFuc2xhdGVzIGludG8gY2FsbHMgdG8gU2V0QWNjZXNzb3IoKSBvbiBlaXRoZXIg
dGhlCisgICAgLy8gaW5zdGFuY2Ugb3IgdGhlIHByb3RvdHlwZSBPYmplY3RUZW1wbGF0ZSwgYmFz
ZWQgb24gfG9uUHJvdG90eXBlfC4KKyAgICBzdHJ1Y3QgQmF0Y2hlZEF0dHJpYnV0ZSB7CisgICAg
ICAgIGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CisgICAgICAgIHY4OjpBY2Nlc3NvckdldHRlciBn
ZXR0ZXI7CisgICAgICAgIHY4OjpBY2Nlc3NvclNldHRlciBzZXR0ZXI7CisgICAgICAgIFdyYXBw
ZXJUeXBlSW5mbyogZGF0YTsKKyAgICAgICAgdjg6OkFjY2Vzc0NvbnRyb2wgc2V0dGluZ3M7Cisg
ICAgICAgIHY4OjpQcm9wZXJ0eUF0dHJpYnV0ZSBhdHRyaWJ1dGU7CisgICAgICAgIGJvb2wgb25Q
cm90b3R5cGU7CisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQXR0cmli
dXRlcyh2ODo6SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJp
YnV0ZSosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBh
dHRyaWJ1dGVDb3VudCk7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBPYmplY3RPclRlbXBsYXRlPgor
ICAgIHN0YXRpYyBpbmxpbmUgdm9pZCBjb25maWd1cmVBdHRyaWJ1dGUodjg6OkhhbmRsZTxPYmpl
Y3RPclRlbXBsYXRlPiBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHY4OjpIYW5kbGU8T2JqZWN0T3JUZW1wbGF0ZT4gcHJvdG90eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZEF0dHJpYnV0
ZSYgYXR0cmlidXRlKQorICAgIHsKKyAgICAgICAgKGF0dHJpYnV0ZS5vblByb3RvdHlwZSA/IHBy
b3RvdHlwZSA6IGluc3RhbmNlKS0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KGF0dHJpYnV0
ZS5uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXR0cmlidXRlLmdldHRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXR0cmli
dXRlLnNldHRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdjg6OkV4dGVybmFsOjpXcmFwKGF0dHJpYnV0ZS5kYXRh
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYXR0cmlidXRlLnNldHRpbmdzLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUu
YXR0cmlidXRlKTsKKyAgICB9CisKKyAgICAvLyBCYXRjaGVkQ29uc3RhbnQgdHJhbnNsYXRlcyBp
bnRvIGNhbGxzIHRvIFNldCgpIGZvciBzZXR0aW5nIHVwIGFuIG9iamVjdCdzCisgICAgLy8gY29u
c3RhbnRzLiBJdCBzZXRzIHRoZSBjb25zdGFudCBvbiBib3RoIHRoZSBGdW5jdGlvblRlbXBsYXRl
IGFuZCB0aGUKKyAgICAvLyBPYmplY3RUZW1wbGF0ZS4gUHJvcGVydHlBdHRyaWJ1dGVzIGlzIGFs
d2F5cyBSZWFkT25seS4KKyAgICBzdHJ1Y3QgQmF0Y2hlZENvbnN0YW50IHsKKyAgICAgICAgY29u
c3QgY2hhciogY29uc3QgbmFtZTsKKyAgICAgICAgaW50IHZhbHVlOworICAgIH07CisKKyAgICBz
dGF0aWMgdm9pZCBiYXRjaENvbmZpZ3VyZUNvbnN0YW50cyh2ODo6SGFuZGxlPHY4OjpGdW5jdGlv
blRlbXBsYXRlPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6
SGFuZGxlPHY4OjpPYmplY3RUZW1wbGF0ZT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENvbnN0YW50KiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzaXplX3QgY29uc3RhbnRDb3VudCk7CisKKyAgICAvLyBCYXRj
aGVkQ2FsbGJhY2sgdHJhbnNsYXRlcyBpbnRvIGNhbGxzIHRvIFNldCgpIG9uIHRoZSBwcm90b3R5
cGUgT2JqZWN0VGVtcGxhdGUuCisgICAgc3RydWN0IEJhdGNoZWRDYWxsYmFjayB7CisgICAgICAg
IGNvbnN0IGNoYXIqIGNvbnN0IG5hbWU7CisgICAgICAgIHY4OjpJbnZvY2F0aW9uQ2FsbGJhY2sg
Y2FsbGJhY2s7CisgICAgfTsKKworICAgIHN0YXRpYyB2b2lkIGJhdGNoQ29uZmlndXJlQ2FsbGJh
Y2tzKHY4OjpIYW5kbGU8djg6Ok9iamVjdFRlbXBsYXRlPiwgCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdjg6OkhhbmRsZTx2ODo6U2lnbmF0dXJlPiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ODo6UHJvcGVydHlBdHRyaWJ1dGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgQmF0Y2hlZENhbGxi
YWNrKiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGNh
bGxiYWNrQ291bnQpOworCisgICAgc3RhdGljIHY4OjpMb2NhbDx2ODo6U2lnbmF0dXJlPiBjb25m
aWd1cmVUZW1wbGF0ZSh2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBj
aGFyKiBpbnRlcmZhY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IHBh
cmVudENsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2l6ZV90IGZpZWxkQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBCYXRjaGVkQXR0cmlidXRlKiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBh
dHRyaWJ1dGVDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnN0IEJhdGNoZWRDYWxsYmFjayosCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgY2FsbGJhY2tDb3VudCk7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBWOERPTUNvbmZpZ3Vy
YXRpb25faAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>