<?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>233988</bug_id>
          
          <creation_ts>2021-12-07 23:47:55 -0800</creation_ts>
          <short_desc>Add ability to inject messages into webpushd</short_desc>
          <delta_ts>2021-12-09 10:59:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit Misc.</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>234081</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>mkwst</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1821432</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-07 23:47:55 -0800</bug_when>
    <thetext>Add ability to inject messages into webpushd

Gated behind an entitlement that TestWebKitAPI and webpushtool will both have.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821437</commentid>
    <comment_count>1</comment_count>
      <attachid>446318</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-08 00:08:05 -0800</bug_when>
    <thetext>Created attachment 446318
Patch v1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821576</commentid>
    <comment_count>2</comment_count>
      <attachid>446372</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-08 09:03:56 -0800</bug_when>
    <thetext>Created attachment 446372
Patch v2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821641</commentid>
    <comment_count>3</comment_count>
      <attachid>446372</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 11:06:19 -0800</bug_when>
    <thetext>Comment on attachment 446372
Patch v2

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

&gt; Source/WebKit/Configurations/webpushtool.xcconfig:32
&gt; +OTHER_LDFLAGS = -framework WebKit -l WTF

you shouldn&apos;t need to link WTF.  Link JavaScriptCore instead.

&gt; Source/WebKit/Shared/WebPushMessage.h:2
&gt; + * Copyright (C) 2010-2020 Apple Inc. All rights reserved.

2021

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:6486
&gt; +				517B5F9E275F3F54002DC22D /* libicucore.tbd in Frameworks */,

nope

&gt; Source/WebKit/WebKit.xcodeproj/project.pbxproj:9715
&gt; +				517B5F9D275F3F54002DC22D /* libicucore.tbd */,

nope

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:230
&gt; +    result[1] = (message.length() &amp; 0x000000000000FF00) &gt;&gt; 8;

the bitwise and assumes 64-bit size_t, and it&apos;s not necessary.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:235
&gt; +        result[5 + i] = message[i];

This truncates 256-65535.  not great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821694</commentid>
    <comment_count>4</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-08 12:05:15 -0800</bug_when>
    <thetext>
&gt; &gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:235
&gt; &gt; +        result[5 + i] = message[i];
&gt; 
&gt; This truncates 256-65535.  not great.

It didn&apos;t, because we&apos;re only encoding 8-bit strings.

But I made that more explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821697</commentid>
    <comment_count>5</comment_count>
      <attachid>446405</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-08 12:06:32 -0800</bug_when>
    <thetext>Created attachment 446405
Patch v3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821754</commentid>
    <comment_count>6</comment_count>
      <attachid>446405</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2021-12-08 13:20:31 -0800</bug_when>
    <thetext>Comment on attachment 446405
Patch v3

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

&gt; Source/WebKit/NetworkProcess/Notifications/NetworkNotificationManager.cpp:94
&gt; +    CompletionHandler&lt;void(Vector&lt;WebPushMessage&gt;&amp;&amp;)&gt; replyHandler = [completionHandler = WTFMove(completionHandler)] (Vector&lt;WebPushMessage&gt; messages) mutable {

This looks like an unneeded Vector copy.  Can we just pass a Vector&amp;&amp; and avoid this wrapper too?

&gt; Source/WebKit/Shared/Cocoa/WebPushMessageCocoa.mm:2
&gt; + * Copyright (C) 2010-2020 Apple Inc. All rights reserved.

2021

&gt; Source/WebKit/Shared/Cocoa/WebPushMessageCocoa.mm:47
&gt; +        Vector&lt;uint8_t&gt; { (const uint8_t*)pushData.bytes, pushData.length },

static_cast

&gt; Source/WebKit/Shared/Cocoa/WebPushMessageCocoa.mm:48
&gt; +        URL { (NSURL *)url }

unnecessary cast

&gt; Source/WebKit/webpushd/PushClientConnection.mm:126
&gt; +        messageIdentifier = makeString(&quot;[&quot;, signingIdentifer, &quot; (0x&quot;, hex(reinterpret_cast&lt;uint64_t&gt;(m_xpcConnection.get()), WTF::HexConversionMode::Lowercase), &quot;)] &quot;);

nit: I think &quot;[&quot; can be &apos;[&apos;

&gt; Source/WebKit/webpushd/WebPushDaemon.mm:369
&gt; +            resultMessages.append(WebKit::WebPushMessage { Vector&lt;uint8_t&gt; { reinterpret_cast&lt;const uint8_t*&gt;(data.data()), data.length() }, message.registrationURL });

nit: I wonder if you could use a Span instead of a Vector here because all you are doing is sending it.

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WebPushDaemon.mm:235
&gt; +    &gt;(utf8.length() &gt;&gt; 24);

line break is probably a typo</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1821784</commentid>
    <comment_count>7</comment_count>
      <attachid>446424</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-08 14:42:23 -0800</bug_when>
    <thetext>Created attachment 446424
PFL</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822005</commentid>
    <comment_count>8</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-08 22:38:46 -0800</bug_when>
    <thetext>Committed r286764 (245005@main): &lt;https://commits.webkit.org/245005@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446424.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822006</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-12-08 22:39:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/86254247&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822109</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2021-12-09 06:43:13 -0800</bug_when>
    <thetext>Re-opened since this is blocked by bug 234081</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822171</commentid>
    <comment_count>11</comment_count>
      <attachid>446561</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2021-12-09 10:08:43 -0800</bug_when>
    <thetext>Created attachment 446561
New PFL

webpushtool didn&apos;t have any dependencies so it was building out of order with WebKit.framework itself.

That&apos;s why incremental builds worked, but not clean builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822198</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-12-09 10:59:48 -0800</bug_when>
    <thetext>Committed r286788 (245029@main): &lt;https://commits.webkit.org/245029@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 446561.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446318</attachid>
            <date>2021-12-08 00:08:05 -0800</date>
            <delta_ts>2021-12-08 09:03:56 -0800</delta_ts>
            <desc>Patch v1</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73027</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NmZGQ0NTFlMDEzLi5hNGVkZTE1ODNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IEFQSSB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAgLSBBZGRzIFdLV2Vi
c2l0ZURhdGFTdG9yZSBTUEkgdG8gZmV0Y2ggcGVuZGluZyBwdXNoIG1lc3NhZ2VzIGZvciB0aGUg
ZW1iZWRkaW5nIGFwcGxpY2F0aW9uCisgICAgICAgICAtIEdpdmVzIHdlYnB1c2hkIGNvZGUgdG8g
aW5qZWN0IGEgcHVzaCBtZXNzYWdlIGZvciBhIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyCisgICAg
ICAgICAtIEdpdmVzIHdlYnB1c2h0b29sIHRoZSBhYmlsaXR5IHRvIHNlbmQgb25lIG9mIHRoZXNl
IGZha2UgbWVzc2FnZXMKKyAgICAgICAgIC0gR2l2ZXMgd2VicHVzaHRvb2wgdGhlIGFiaWxpdHkg
dG8gcmVjb25uZWN0IHRvIHRoZSBuZXh0IGRhZW1vbiBpbnN0YW5jZSBhZnRlciB0aGUgY3VycmVu
dCBjb25uZWN0aW9uIGlzIGRyb3BwZWQKKyAgICAgICAgIC0gVGVzdHMgdGhlIGluamVjdGlvbiBh
bmQgZmV0Y2hpbmcgb2YgcHVzaCBtZXNzYWdlcyB2aWEgVGVzdFdlYktpdEFQSQorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvd2VicHVzaHRvb2wueGNjb25maWc6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogUmVzb3VyY2VzL3dlYnB1c2h0
b29sLmVudGl0bGVtZW50czoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNo
TWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8VmVj
dG9yPFdlYlB1c2hNZXNzYWdlPjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OnRvRGljdGlvbmFyeSBjb25zdCk6CisKKyAgICAgICAg
KiBTaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZGVjb2RlKToKKworICAgICAg
ICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorCisgICAgICAgICogU2hhcmVkL1dlYlB1
c2hNZXNzYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRv
b2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hNZXNz
YWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZGVj
b2RlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2Fn
ZXM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3By
b2Nlc3NQdXNoTWVzc2FnZTpyZWdpc3RyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nl
c3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorXAorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmg6
CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAgIChX
ZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCk6Cisg
ICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hJbmplY3RF
bnRpdGxlbWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEhh
c0VudGl0bGVtZW50KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UpOgorCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
OgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNo
RDo6TWVzc2FnZUluZm86OmluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkp
OgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
OjplbmNvZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmluamVjdFB1c2hNZXNzYWdl
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29u
bmVjdGlvbi5oOgorICAgICAgICAoV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OnNldFB1c2hNZXNz
YWdlKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKFdlYlB1c2hUb29sOjpDb25uZWN0aW9uOjpzdGFydEFjdGlvbik6
CisgICAgICAgIChXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6c2VuZFB1c2hNZXNzYWdlKToKKwor
ICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbToKKyAgICAg
ICAgKHByaW50VXNhZ2VBbmRUZXJtaW5hdGUpOgorICAgICAgICAocHVzaE1lc3NhZ2VGcm9tQXJn
dW1lbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTA2ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJwdXNoZC93ZWJwdXNodG9vbCBkZWJ1Z2dp
bmcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dl
YnB1c2h0b29sLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNo
dG9vbC54Y2NvbmZpZwppbmRleCA3MzcxYTMzNzM0ZjcuLmYxODJhZGUzMTgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1c2h0b29sLnhjY29uZmlnCkBAIC0y
OSw3ICsyOSw3IEBAIFNLSVBfSU5TVEFMTCA9IFlFUzsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05B
TUVTW3Nkaz1hcHBsZXR2Kl0gPSAqOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPXdh
dGNoKl0gPSAqOwogCi1PVEhFUl9MREZMQUdTID0gLWwgV1RGIC1mcmFtZXdvcmsgRm91bmRhdGlv
biAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uOworT1RIRVJfTERGTEFHUyA9IC1mcmFtZXdvcmsg
V2ViS2l0IC1sIFdURgogTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJ
Uik7CiAKIENPREVfU0lHTl9FTlRJVExFTUVOVFMgPSBSZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50
aXRsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCA0NzJjOGI1N2MzMmMuLmQxNWM1NmI2YjhlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTU4LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgiCkBAIC0yNTQ2LDEyICsyNTQ3LDIwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Ym9vbCBwcm9jCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSho
YW5kbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4mIGlwY0RhdGEsIFVSTCYmIHJlZ2lzdHJhdGlvblVSTCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQ
dXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsKLSAgICBpZiAoaXBjRGF0YSkKLSAg
ICAgICAgZGF0YSA9IFZlY3Rvcjx1aW50OF90PiB7IGlwY0RhdGEtPmRhdGEoKSwgaXBjRGF0YS0+
c2l6ZSgpIH07Ci0gICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkucHJvY2Vzc1B1c2hN
ZXNzYWdlKFdURk1vdmUoZGF0YSksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShj
YWxsYmFjaykpOworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNz
aW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBjYWxsYmFj
ayh7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN3U2VydmVyRm9y
U2Vzc2lvbihzZXNzaW9uSUQpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdl
LnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOWQzMmQ1
Nzk3M2EwLi42YzYyNzcyMjNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9u
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiBzdHJ1
Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUHVzaE1lc3Nh
Z2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCkBAIC0zOTYsNyArMzk3LDggQEAgcHVibGljOgogICAgIGJvb2wgZnRwRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnRwRW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBVUkwmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQ
dXNoTWVzc2FnZT4mKT4mJik7CisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMzJhYjM4NDBiNjZhLi4yNGZlMzhiNDJkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjA2LDcg
KzIwNiw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJl
bmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3lu
YworICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+IG1lc3NhZ2VzKSBBc3luYworICAgIFBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6
OldlYlB1c2hNZXNzYWdlIHB1c2hNZXNzYWdlKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3luYwog
I2VuZGlmCiAgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3Jp
Z2luKSAtPiAoU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMKICAgICBHZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSBBc3luYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZGZlMTUy
MmUzNjBkLi4wNjhjM2M4ZTNhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRhZW1vbkVuY29k
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlB1c2hEYWVt
b25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIldlYlB1c2hNZXNzYWdlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04OCw2ICs4OSwxNSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbwogICAgIHNl
bmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6R2V0T3JpZ2luc1dpdGhQ
dXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM+KFdURk1vdmUocmVwbHlIYW5kbGVyKSk7CiB9
CiAKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldFBlbmRpbmdQdXNoTWVzc2Fn
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViUHVzaE1lc3NhZ2U+JiYpPiByZXBseUhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4gbWVz
c2FnZXMpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1lc3Nh
Z2VzKSk7CisgICAgfTsKKworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNz
YWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsK
K30KKwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpAQCAtMTg2LDYgKzE5
NiwxNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7
CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8VmVjdG9yPFdlYlB1
c2hNZXNzYWdlPiYmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2Rl
ciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdl
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYlB1c2hNZXNzYWdlPj4gbWVzc2FnZXM7CisgICAgICAgIGRlY29kZXIgPj4gbWVz
c2FnZXM7CisgICAgICAgIGlmICghbWVzc2FnZXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqbWVz
c2FnZXMpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KIHZvaWQg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJncyYm
Li4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCmluZGV4IDZmMTY4MWE3MjUxYy4uZGZmZjVkYmYwMjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYpPiYmKTsKKyAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgY29u
c3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cyBiL1NvdXJjZS9XZWJLaXQv
UmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cwppbmRleCA2NGEwYjU2YmM1MDAuLjYz
MjRmMDVhZDk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvd2VicHVzaHRv
b2wuZW50aXRsZW1lbnRzCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL3dlYnB1c2h0b29s
LmVudGl0bGVtZW50cwpAQCAtNCw1ICs0LDcgQEAKIDxkaWN0PgogCTxrZXk+Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUucHJp
dmF0ZS53ZWJraXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3Bs
aXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3Nh
Z2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlB1c2hNZXNzYWdlQ29j
b2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNjZlNGE2YTk1
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQdXNo
TWVzc2FnZUNvY29hLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaE1lc3NhZ2UuaCIKKworI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBXZWJLaXRQdXNo
RGF0YUtleSBAIldlYktpdFB1c2hEYXRhIgorI2RlZmluZSBXZWJLaXRQdXNoUmVnaXN0cmF0aW9u
VVJMS2V5IEAiV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTCIKKworc3RkOjpvcHRpb25hbDxXZWJQ
dXNoTWVzc2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OldlYktpdFB1c2hSZWdpc3RyYXRpb25VUkxLZXldOworICAgIGlmICghdXJsIHx8ICFbdXJsIGlz
S2luZE9mQ2xhc3M6W05TVVJMIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBOU0RhdGEgKnB1c2hEYXRhID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYktp
dFB1c2hEYXRhS2V5XTsKKyAgICBpZiAoIXB1c2hEYXRhIHx8ICFbcHVzaERhdGEgaXNLaW5kT2ZD
bGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7IChjb25zdCB1aW50OF90Kilw
dXNoRGF0YS5ieXRlcywgcHVzaERhdGEubGVuZ3RoIH0sCisgICAgICAgIFVSTCB7IChOU1VSTCAq
KXVybCB9CisgICAgfSB9OworfQorCitOU0RpY3Rpb25hcnkgKldlYlB1c2hNZXNzYWdlOjp0b0Rp
Y3Rpb25hcnkoKSBjb25zdAoreworICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpwdXNoRGF0YS5kYXRhKCkgbGVuZ3RoOnB1c2hEYXRhLnNpemUo
KV0pOworICAgIHJldHVybiBAeworICAgICAgICBXZWJLaXRQdXNoRGF0YUtleSA6IG5zRGF0YS5n
ZXQoKSwKKyAgICAgICAgV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTEtleSA6IChOU1VSTCAqKXJl
Z2lzdHJhdGlvblVSTAorICAgIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QdXNoTWVzc2FnZUZvclRlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFjNzQ3ZTE2MjgyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1B1c2hNZXNzYWdlRm9yVGVzdGluZy5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdDo6V2Vi
UHVzaEQgeworCitzdHJ1Y3QgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nIHsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
PiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgU3RyaW5nIHRhcmdldEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcjsKKyAgICBVUkwgcmVnaXN0cmF0aW9uVVJMOworICAgIFN0cmluZyBtZXNzYWdlOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRhcmdl
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb25VUkwgPDwgbWVzc2FnZTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UHVzaE1lc3NhZ2VG
b3JUZXN0aW5nPiBQdXNoTWVzc2FnZUZvclRlc3Rpbmc6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXI7CisgICAgZGVjb2RlciA+PiB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7Cisg
ICAgaWYgKCF0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVnaXN0cmF0aW9uVVJMOwor
ICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uVVJMOworICAgIGlmICghcmVnaXN0cmF0aW9uVVJM
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1lc3NhZ2U7CisgICAgZGVjb2RlciA+PiBtZXNzYWdlOworICAgIGlmICghbWVzc2FnZSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsKKyAgICAgICAg
V1RGTW92ZSgqdGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92
ZSgqcmVnaXN0cmF0aW9uVVJMKSwKKyAgICAgICAgV1RGTW92ZSgqbWVzc2FnZSksCisgICAgfSB9
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKaW5kZXggYTRkYmNkNzc5MTI0Li41ODAy
YmIwN2MzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25D
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zLAogICAg
IFNldERlYnVnTW9kZUlzRW5hYmxlZCwKICAgICBVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlv
biwKKyAgICBJbmplY3RQdXNoTWVzc2FnZUZvclRlc3RpbmcsCisgICAgR2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcywKIH07CiAKIGlubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSkKQEAgLTUxLDYgKzUzLDggQEAgaW5saW5lIGJvb2wgbWVzc2FnZVR5
cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQogICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOgogICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246CiAg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246
CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlczoKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpJbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZDoKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hNZXNzYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQdXNoTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNWNhMzQ1YzI3OTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHVzaE1lc3NhZ2UuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlB1c2hNZXNzYWdlIHsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3Nh
Z2U+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcHVzaERhdGE7Cisg
ICAgVVJMIHJlZ2lzdHJhdGlvblVSTDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYlB1c2hNZXNzYWdlPiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25h
cnkgKik7CisgICAgTlNEaWN0aW9uYXJ5ICp0b0RpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRpZgor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgV2ViUHVzaE1lc3NhZ2U6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHVzaERhdGEgPDwg
cmVnaXN0cmF0aW9uVVJMOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRp
b25hbDxXZWJQdXNoTWVzc2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwdXNoRGF0YTsKKyAg
ICBkZWNvZGVyID4+IHB1c2hEYXRhOworICAgIGlmICghcHVzaERhdGEpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVnaXN0cmF0aW9uVVJM
OworICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uVVJMOworICAgIGlmICghcmVnaXN0cmF0aW9u
VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAg
ICAgICBXVEZNb3ZlKCpwdXNoRGF0YSksCisgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvblVS
TCkKKyAgICB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggN2VmMDY5NTBhYjA3Li42Mjk2OTA3OWQ5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzksNiAr
MzksNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0
ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCkBAIC03NjEsMTMgKzc2
MiwyOSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIHJldHVybiBfd2Vic2l0ZURhdGFT
dG9yZS0+aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKIH0K
IAotLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopIG1lc3NhZ2UgcmVnaXN0cmF0
aW9uOihOU1VSTCAqKXJlZ2lzdHJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShib29s
IHdhc1Byb2Nlc3NlZCkpY29tcGxldGlvbkhhbmRsZXIKKy0odm9pZClfZ2V0UGVuZGluZ1B1c2hN
ZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGQ6Om9wdGlvbmFsPFNw
YW48Y29uc3QgdWludDhfdD4+IGRhdGE7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAgICAgIGRhdGEg
PSBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWVzc2FnZS5ieXRlcyksIG1lc3NhZ2UubGVuZ3RoIH07Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
Pm5ldHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5z
ZXNzaW9uSUQoKSwgZGF0YSwgcmVnaXN0cmF0aW9uLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
KF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1
c2hNZXNzYWdlPiYgbWVzc2FnZXMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgpXSk7
CisgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQorICAgICAgICAgICAgW3Jl
c3VsdCBhZGRPYmplY3Q6bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CisKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0LmdldCgpKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCistKHZvaWQp
X3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEaWN0aW9uYXJ5ICopcHVzaE1lc3NhZ2VEaWN0aW9uYXJ5
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wgd2FzUHJvY2Vzc2VkKSljb21wbGV0aW9u
SGFuZGxlcgoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBhdXRvIHB1c2hNZXNz
YWdlID0gV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZnJvbURpY3Rpb25hcnkocHVzaE1lc3NhZ2VE
aWN0aW9uYXJ5KTsKKyAgICBpZiAoIXB1c2hNZXNzYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnByb2Nlc3NQdXNoTWVzc2FnZShfd2Vic2l0ZURhdGFT
dG9yZS0+c2Vzc2lvbklEKCksICpwdXNoTWVzc2FnZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgd2FzUHJvY2Vzc2VkKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3NlZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGExMmM2ZWMyMGE4My4uMTFmMDZmMjQ0YzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTEwOCw3ICsxMDgsOCBAQCB0eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewog
LSAodm9pZClfY291bnROb25EZWZhdWx0U2Vzc2lvblNldHM6KHZvaWQoXikoc2l6ZV90KSljb21w
bGV0aW9uSGFuZGxlcjsKIAogLShib29sKV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwotLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopZGF0YSByZWdp
c3RyYXRpb246KE5TVVJMICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KGJvb2wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistKHZvaWQpX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6KHZv
aWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClf
cHJvY2Vzc1B1c2hNZXNzYWdlOihOU0RpY3Rpb25hcnkgKilwdXNoTWVzc2FnZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShib29sKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9kZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlP
cmlnaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSh2b2lkKV9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoo
dm9pZCheKShOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCBlYzliMzUzNzZiOWEuLjBmNmJjOTU0ZDg0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjg0LDEyICsxNjg0LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkRXhjZWVkTWVtb3J5TGltaXQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0
YSwgY29uc3QgVVJMJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGlwY0Rh
dGE7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwg
aXBjRGF0YSwgcmVnaXN0cmF0aW9uVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVzc2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQoreworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVz
c2FnZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2UgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0NDFiODZl
MTg5YzIuLmVjMDljMzZmZTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFJlc291cmNl
TG9hZEluZm87CitzdHJ1Y3QgV2ViUHVzaE1lc3NhZ2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiBz
dHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKQEAgLTI3Miw3ICsyNzMsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIHBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0
IHVpbnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1By
b2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+
Jik+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJQdXNoTWVzc2FnZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNz
ZWQpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVn
aXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiNGE0NmQw
MzNjMS4uYmU3YWQzODE5ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzMsNiArMTAzMywxMyBAQAogCQk1MTdCNUY4NDI3NUU5
N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIg
LyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gKi87IH07CiAJCTUxN0I1Rjg1Mjc1RTk3QjYw
MDJEQzIyRCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1NDI3NEI4ODcxMDA1NjczODggLyogQXBwQnVuZGxl
UmVxdWVzdC5oICovOyB9OwogCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5t
bSAqLzsgfTsKKwkJNTE3QjVGOTUyNzVFQkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVz
dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QjVGOTQyNzVFQkE2MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICovOyB9Owor
CQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0I1Rjk2Mjc1RUM1RTUwMDJE
QzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovOyB9OworCQk1MTdCNUY5OTI3NUVDNjAxMDAyREMy
MkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVz
c2FnZUNvY29hLm1tICovOyB9OworCQk1MTdCNUY5QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1l
bnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsK
KwkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTU3OUY5MjcxN0FGNTAw
MEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMubW0gKi87IH07CisJCTUxN0I1RjlDMjc1RjNDMzcw
MDJEQzIyRCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTU3OUU4MjcxNzJBOEEwMEVENTI4MCAvKiBEYWVtb25FbmNv
ZGVyLmNwcCAqLzsgfTsKKwkJNTE3QjVGOUUyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUu
dGJkIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QjVGOUQyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUudGJkICovOyB9OwogCQk1MTdDRjBF
MzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CkBAIC00NDA3LDYgKzQ0MTQsMTAgQEAKIAkJNTE3QjVGNkIyNzVBRTUwQjAw
MkRDMjJEIC8qIHdlYnB1c2h0b29sLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
ZW50aXRsZW1lbnRzOyBuYW1lID0gd2VicHVzaHRvb2wuZW50aXRsZW1lbnRzOyBwYXRoID0gUmVz
b3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3QjVGNzIyNzVFOTYwOTAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb25NYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlB1c2hEYWVtb25NYWluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0I1Rjc3Mjc1RTk3OTUwMDJEQzIyRCAvKiB3ZWJw
dXNoZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB3ZWJwdXNoZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0I1Rjk0Mjc1RUJBNjIwMDJEQzIy
RCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxN0I1Rjk2Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoTWVzc2FnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTdCNUY5ODI3NUVDNjAwMDAyREMyMkQgLyogV2ViUHVzaE1lc3Nh
Z2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1
c2hNZXNzYWdlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0I1RjlE
Mjc1RjNGNTQwMDJEQzIyRCAvKiBsaWJpY3Vjb3JlLnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWIt
ZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJpY3Vjb3JlLnRiZDsgcGF0aCA9IHVzci9saWIvbGliaWN1
Y29yZS50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBD
Mjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC02NDcyLDYgKzY0ODMsNyBAQAogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJNTE3QjVGOUUyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUu
dGJkIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC03MTMzLDYgKzcxNDUsNyBAQAogCQkJCUUxOEM5MkYz
MTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUxQ0MxQjhFMTJEN0VB
REYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4
MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCisJCQkJNTE3QjVGOTQyNzVFQkE2
MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICovLAogCQkJCTlCMTIyOUQwMjNG
RjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oICovLAog
CQkJCTcyMDM0NDlCMjZBNkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5oICovLAog
CQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCkBA
IC03MjM5LDYgKzcyNTIsNyBAQAogCQkJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovLAogCQkJCTUxN0I1RjJEMjc1NzM4MkEwMDJE
QzIyRCAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQk1
MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oICovLAor
CQkJCTUxN0I1Rjk2Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovLAogCQkJ
CTVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLywK
IAkJCQk1QzhERDM4MTFGRTQ1NUNBMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCAq
LywKIAkJCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuY3BwICovLApAQCAtODkzNSw2ICs4OTQ5LDcgQEAKIAkJCQk3QUYyMzYyMjFFNzlBNDMx
MDA0MzhBMDUgLyogV2ViRXJyb3JzQ29jb2EubW0gKi8sCiAJCQkJNDY1MjUwRTUxRUNGNTJDRDAw
MjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8sCiAJCQkJMURFMDc2RDkyNDYw
Q0NCRDAwQjIxMUU4IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tICovLAor
CQkJCTUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICov
LAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKIAkJCQkz
N0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLAogCQkJCTM3M0NFQUQ0
MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oICovLApAQCAtOTY5Nyw2ICs5NzEyLDcgQEAK
IAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxN0I1RjlEMjc1RjNGNTQwMDJEQzIy
RCAvKiBsaWJpY3Vjb3JlLnRiZCAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyog
bGliV1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrICovLAogCQkJCTU3MERBQUIwMjMwMjczRDIwMEU4RkMwNCAvKiBO
ZWFyRmllbGQuZnJhbWV3b3JrICovLApAQCAtMTMwMDYsNiArMTMwMjIsNyBAQAogCQkJCTUzMjE1
OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQ
dXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5MTQ5NjUxQkVBODM4NTAwRDJEOTUz
IC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3RkM4QTAy
NUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1MTIsNiArMTM1MjksNyBAQAogCQkJCTkzNTZGMkRD
MjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZEQTAwMkZBOUMxIC8q
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdC
NUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExQTlFQ0MyMTQwMzVG
ODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTUwNzUsNyArMTUwOTMsMTAgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJ
CTUxN0I1RjlBMjc1RjNBODYwMDJEQzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERh
ZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJE
QzIyRCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1RjY1Mjc1
QThEN0YwMDJEQzIyRCAvKiBXZWJQdXNoVG9vbE1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTE1MTcxLDYg
KzE1MTkyLDcgQEAKIAkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUExNTJE
NzI0RTVBMjlBMDA5NzhDOEIgLyogSGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI3NDlGNjQ0MjE0NjU2MUIwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3QjVGOTkyNzVFQzYwMTAwMkRDMjJE
IC8qIFdlYlB1c2hNZXNzYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIx
NDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5QkY1RUM2NDI1NDExNDU2MDA5ODRFNzcgLyogSlNJUENCaW5kaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDc2MDUzZWZjMmQ5MS4uN2ZhNDNm
ZDllMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgaG9zdEFw
cENvZGVTaWduaW5nSWRlbnRpZmllcigpOwogICAgIGJvb2wgaG9zdEFwcEhhc1B1c2hFbnRpdGxl
bWVudCgpOworICAgIGJvb2wgaG9zdEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVudCgpOwogCiAg
ICAgYm9vbCBkZWJ1Z01vZGVJc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVu
YWJsZWQ7IH0KICAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29sKTsKQEAgLTc1LDYg
Kzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVz
dCgpOwogICAgIHZvaWQgc2V0SG9zdEFwcEF1ZGl0VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYpOwogCisgICAgYm9vbCBob3N0SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciopOworCiAg
ICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2hvc3RBcHBBdWRpdFRva2VuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggNDVjNDFh
ZmUxOTAzLi5mODllZjI4MjNiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODksMTUgKzg5LDI0IEBAIGNvbnN0IFN0cmluZyYgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAKIGJvb2wgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCgpCiB7Ci0gICAgaWYgKCFt
X2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpIHsKLSAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRp
dFRva2VuKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2hvc3RBcHBIYXNQ
dXNoRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KCptX2hvc3RBcHBBdWRpdFRva2Vu
LCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2giKTsKLSAgICB9CisgICAgaWYgKCFt
X2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpCisgICAgICAgIG1faG9zdEFwcEhhc1B1c2hFbnRp
dGxlbWVudCA9IGhvc3RIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUud2Via2l0Lndl
YnB1c2giX3MpOwogCiAgICAgcmV0dXJuICptX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQ7CiB9
CiAKK2Jvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVu
dCgpCit7CisgICAgcmV0dXJuIGhvc3RIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUu
d2Via2l0LndlYnB1c2guaW5qZWN0Il9zKTsKK30KKworYm9vbCBDbGllbnRDb25uZWN0aW9uOjpo
b3N0SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCit7CisgICAgaWYgKCFt
X2hvc3RBcHBBdWRpdFRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdU
Rjo6aGFzRW50aXRsZW1lbnQoKm1faG9zdEFwcEF1ZGl0VG9rZW4sIGVudGl0bGVtZW50KTsKK30K
Kwogdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIGlmIChlbmFibGVkID09IG1fZGVidWdNb2RlRW5hYmxlZCkKQEAgLTExMiw5
ICsxMjEsOSBAQCB2b2lkIENsaWVudENvbm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgU3RyaW5nIG1lc3NhZ2VJZGVudGlmaWVyOwogICAg
IGF1dG8gc2lnbmluZ0lkZW50aWZlciA9IGhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsK
ICAgICBpZiAoc2lnbmluZ0lkZW50aWZlci5pc0VtcHR5KCkpCi0gICAgICAgIG1lc3NhZ2VJZGVu
dGlmaWVyID0gbWFrZVN0cmluZyAoIlsoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dD4obV94cGNDb25uZWN0aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJj
YXNlKSwgIildICIpOworICAgICAgICBtZXNzYWdlSWRlbnRpZmllciA9IG1ha2VTdHJpbmcoIlso
MHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0aW9uLmdldCgp
KSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJjYXNlKSwgIildICIpOwogICAgIGVsc2UK
LSAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nICgiWyIsIHNpZ25pbmdJZGVu
dGlmZXIsICIgKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVj
dGlvbi5nZXQoKSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsK
KyAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKCJbIiwgc2lnbmluZ0lkZW50
aWZlciwgIiAoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0
aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJjYXNlKSwgIildICIpOwog
CiAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNz
YWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1lc3NhZ2UpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMmExMmNhMzQ0M2U0
Li4zM2NjZDUzNjQ2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBA
IC0yNiw4ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQdXNoQ2xpZW50Q29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIgogI2luY2x1ZGUg
IldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYlB1
c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDAsNiArNDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGVudW0gY2xhc3MgTWVzc2FnZUxldmVsIDogdWludDhfdDsKIH0KIAor
dXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOwogdXNpbmcgV2Vi
S2l0OjpXZWJQdXNoRDo6V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uOwogCiBu
YW1lc3BhY2UgV2ViUHVzaEQgewpAQCAtNjIsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Q2xpZW50Q29ubmVjdGlvbiosIGJvb2wpOwogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29uZmlndXJhdGlvbiYpOworICAgIHZvaWQgaW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nKENs
aWVudENvbm5lY3Rpb24qLCBjb25zdCBQdXNoTWVzc2FnZUZvclRlc3RpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMo
Q2xpZW50Q29ubmVjdGlvbiosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViUHVzaE1lc3NhZ2U+Jik+JiYgcmVwbHlTZW5kZXIpOwogCiAgICAgdm9pZCBicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogCkBA
IC03NSw2ICs4MSw4IEBAIHByaXZhdGU6CiAKICAgICBDbGllbnRDb25uZWN0aW9uKiB0b0NsaWVu
dENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7CiAgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlv
bl90LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBEZXF1ZTxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+PiBtX3Rlc3RpbmdQdXNoTWVz
c2FnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGZkN2IyNTAwNTA5Yi4uNDI0MjZiZTRiNmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC03MCw2ICs3MCwxMSBAQCBB
UkdVTUVOVFMoU3RyaW5nKQogUkVQTFkoYm9vbCkKIEVORAogCitGVU5DVElPTihnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKQorQVJHVU1FTlRTKCkKK1JFUExZKGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiYpCitFTkQKKwogRlVOQ1RJT04oc2V0RGVidWdNb2RlSXNFbmFibGVkKQog
QVJHVU1FTlRTKGJvb2wpCiBFTkQKQEAgLTc4LDYgKzgzLDExIEBAIEZVTkNUSU9OKHVwZGF0ZUNv
bm5lY3Rpb25Db25maWd1cmF0aW9uKQogQVJHVU1FTlRTKFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29uZmlndXJhdGlvbikKIEVORAogCitGVU5DVElPTihpbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rp
bmcpCitBUkdVTUVOVFMoUHVzaE1lc3NhZ2VGb3JUZXN0aW5nKQorUkVQTFkoYm9vbCkKK0VORAor
CiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTEx
LDYgKzEyMSwyMCBAQCBXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb246OmVuY29kZVJlcGx5KGJvb2wgcgogICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluamVjdFB1c2hN
ZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkoYm9vbCByZXBseSkKK3sKKyAgICBXZWJLaXQ6
OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0
dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2Ug
Z2V0UGVuZGluZ1B1c2hNZXNzYWdlczo6ZW5jb2RlUmVwbHkoY29uc3QgVmVjdG9yPFdlYktpdDo6
V2ViUHVzaE1lc3NhZ2U+JiByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBl
bmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1
ZmZlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbmZvPgpAQCAtMjMzLDYgKzI1NywxMiBAQCB2b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFu
ZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlIG1lcwog
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgogICAg
ICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2U8TWVzc2FnZUluZm86OnVwZGF0ZUNvbm5lY3Rpb25D
b25maWd1cmF0aW9uPihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGlu
ZzoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpp
bmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNz
YWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkdldFBlbmRpbmdQdXNoTWVzc2FnZXM6CisgICAgICAgIGhhbmRsZVdlYlB1c2hE
TWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oY2xp
ZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0yOTcsNiArMzI3LDU1IEBAIHZvaWQgRGFlbW9u
Ojp1cGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbihDbGllbnRDb25uZWN0aW9uKiBjbGllbnRD
b25uZWN0aW9uLCBjCiAgICAgY2xpZW50Q29ubmVjdGlvbi0+dXBkYXRlQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKK3ZvaWQgRGFlbW9uOjppbmplY3RQdXNoTWVz
c2FnZUZvclRlc3RpbmcoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgUHVzaE1l
c3NhZ2VGb3JUZXN0aW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IHJlcGx5U2VuZGVyKQoreworICAgIGlmICghY29ubmVjdGlvbi0+aG9zdEFwcEhhc1B1c2hJbmpl
Y3RFbnRpdGxlbWVudCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVz
c2FnZSgiQXR0ZW1wdGluZyB0byBpbmplY3QgYSBwdXNoIG1lc3NhZ2UgZnJvbSBhbiB1bmVudGl0
bGVkIHByb2Nlc3MiKTsKKyAgICAgICAgcmVwbHlTZW5kZXIoZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1lc3NhZ2UudGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyLmlzRW1wdHkoKSB8fCAhbWVzc2FnZS5yZWdpc3RyYXRpb25VUkwuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZSgiQXR0ZW1wdGluZyB0byBp
bmplY3QgYW4gaW52YWxpZCBwdXNoIG1lc3NhZ2UiKTsKKyAgICAgICAgcmVwbHlTZW5kZXIoZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+YnJvYWRjYXN0
RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcoIkluamVjdGVkIGEgdGVzdCBwdXNoIG1lc3Nhc2dlIGZv
ciAiLCBtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllciwgIiBhdCAiLCBtZXNz
YWdlLnJlZ2lzdHJhdGlvblVSTC5zdHJpbmcoKSkpOworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2Fz
dERlYnVnTWVzc2FnZShtZXNzYWdlLm1lc3NhZ2UpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Rlc3RpbmdQdXNoTWVzc2FnZXMuZW5zdXJlKG1lc3NhZ2UudGFyZ2V0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBEZXF1ZTxQdXNoTWVzc2FnZUZvclRlc3Rp
bmc+IHsgfTsKKyAgICB9KTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCht
ZXNzYWdlKTsKKworICAgIHJlcGx5U2VuZGVyKHRydWUpOworfQorCit2b2lkIERhZW1vbjo6Z2V0
UGVuZGluZ1B1c2hNZXNzYWdlcyhDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYpPiYm
IHJlcGx5U2VuZGVyKQoreworICAgIGF1dG8gaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsKKyAgICBpZiAoaG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllci5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVwbHlTZW5k
ZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiByZXN1bHRNZXNzYWdlczsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rl
c3RpbmdQdXNoTWVzc2FnZXMuZmluZChob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgIT0gbV90ZXN0aW5nUHVzaE1lc3NhZ2VzLmVuZCgpKSB7CisgICAgICAg
IGZvciAoYXV0byYgbWVzc2FnZSA6IGl0ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICAgICAgYXV0
byBkYXRhID0gbWVzc2FnZS5tZXNzYWdlLnV0ZjgoKTsKKyAgICAgICAgICAgIHJlc3VsdE1lc3Nh
Z2VzLmFwcGVuZChXZWJLaXQ6OldlYlB1c2hNZXNzYWdlIHsgVmVjdG9yPHVpbnQ4X3Q+IHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLmxlbmd0aCgp
IH0sIG1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMIH0pOworICAgICAgICB9CisgICAgICAgIG1fdGVz
dGluZ1B1c2hNZXNzYWdlcy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KKworICAgIGNvbm5lY3Rp
b24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJGZXRjaGluZyAiLCBTdHJpbmc6
Om51bWJlcihyZXN1bHRNZXNzYWdlcy5zaXplKCkpLCAiIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIp
KTsKKworICAgIHJlcGx5U2VuZGVyKFdURk1vdmUocmVzdWx0TWVzc2FnZXMpKTsKK30KKwogQ2xp
ZW50Q29ubmVjdGlvbiogRGFlbW9uOjp0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY2xpZW50Q29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQoY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaAppbmRleCBmZjYyMzZiN2Jl
ZTcuLmJlMmYxNzk5MWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJw
dXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oCkBAIC0yNSwxMSArMjUsMTUg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkv
ZGFyd2luL1hQQ1NQSS5oPgogCit1c2luZyBXZWJLaXQ6OldlYlB1c2hEOjpQdXNoTWVzc2FnZUZv
clRlc3Rpbmc7CisKIG5hbWVzcGFjZSBXZWJQdXNoVG9vbCB7CiAKIGVudW0gY2xhc3MgQWN0aW9u
IHsKQEAgLTU0LDE5ICs1OCwyNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3RUb1NlcnZp
Y2UoKTsKIAorICAgIHZvaWQgc2V0UHVzaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNz
YWdlRm9yVGVzdGluZz4mJiBtZXNzYWdlKSB7IG1fcHVzaE1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoeHBjX29iamVjdF90
KTsKICAgICB2b2lkIGNvbm5lY3Rpb25Ecm9wcGVkKCk7CiAKICAgICB2b2lkIHN0YXJ0QWN0aW9u
KCk7CiAgICAgdm9pZCBzdGFydERlYnVnU3RyZWFtQWN0aW9uKCk7CisgICAgdm9pZCBzZW5kUHVz
aE1lc3NhZ2UoKTsKIAogICAgIHZvaWQgc2VuZEF1ZGl0VG9rZW4oKTsKLSAgICAKKwogICAgIEFj
dGlvbiBtX2FjdGlvbjsKICAgICBib29sIG1fcmVjb25uZWN0IHsgZmFsc2UgfTsKICAgICBSZXRh
aW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IGNoYXIqIG1f
c2VydmljZU5hbWU7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
PiBtX3B1c2hNZXNzYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaFRvb2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9v
bENvbm5lY3Rpb24ubW0KaW5kZXggYmRlNGU1NGUxMWUwLi44MzFjN2M5YjY4ZGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRv
b2xDb25uZWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIldlYlB1c2hUb29sQ29ubmVjdGlvbi5oIgogCisjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKICNpbXBvcnQgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW1wb3J0IDxtYWNoL3Rh
c2suaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvU2VydmVyc1NQSS5oPgpAQCAtMTE4LDYgKzEy
MSwyNiBAQCB2b2lkIENvbm5lY3Rpb246OnN0YXJ0QWN0aW9uKCkKICAgICAgICAgc3RhcnREZWJ1
Z1N0cmVhbUFjdGlvbigpOwogICAgICAgICBicmVhazsKICAgICB9OworCisgICAgaWYgKG1fcHVz
aE1lc3NhZ2UpCisgICAgICAgIHNlbmRQdXNoTWVzc2FnZSgpOworfQorCit2b2lkIENvbm5lY3Rp
b246OnNlbmRQdXNoTWVzc2FnZSgpCit7CisgICAgQVNTRVJUKG1fcHVzaE1lc3NhZ2UpOworCisg
ICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8ICptX3B1
c2hNZXNzYWdlOworCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFy
eV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91
aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgV2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9u
S2V5LCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3ZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdlYktpdDo6dmVjdG9yVG9YUENEYXRhKFdURk1vdmUo
ZW5jb2Rlci50YWtlQnVmZmVyKCkpKS5nZXQoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3Vp
bnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbE1lc3NhZ2VU
eXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oV2ViS2l0OjpXZWJQdXNoRDo6TWVzc2FnZVR5
cGU6OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZykpOworCisgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5Lmdl
dCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKHhwY19vYmplY3RfdCByZXN1bHRNZXNz
YWdlKSB7CisgICAgICAgIC8vIFRoaXMgcmVwbHkgaGFuZGxlciBpbnRlbnRpb25hbGx5IGxlZnQg
YmxhbmsKKyAgICB9KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpzdGFydERlYnVnU3RyZWFtQWN0
aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2Vi
UHVzaFRvb2xNYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQ
dXNoVG9vbE1haW4ubW0KaW5kZXggNjJmNjc4ZjlmZDY2Li5hNTg3OTU5OGRhNGYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWlu
Lm1tCkBAIC0yNCwxMSArMjQsMTQgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBv
cnQgIlB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIgogI2ltcG9ydCAiV2ViUHVzaFRvb2xDb25uZWN0
aW9uLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9wdGlv
bmFsPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJQdXNo
RDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOworCiBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18p
KQogc3RhdGljIHZvaWQgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShOU1N0cmluZyAqbWVzc2FnZSkK
IHsKQEAgLTM2LDE1ICszOSw0MyBAQCBzdGF0aWMgdm9pZCBwcmludFVzYWdlQW5kVGVybWluYXRl
KE5TU3RyaW5nICptZXNzYWdlKQogCiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogd2VicHVz
aHRvb2wgW29wdGlvbnNdXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gICAgZnBy
aW50ZihzdGRlcnIsICIgIC0tZGV2ZWxvcG1lbnQgICAgICAgICAgICAgIENvbm5lY3RzIHRvIG1h
Y2ggc2VydmljZSBcIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZVwiIChEZWZh
dWx0KVxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC0tcHJvZHVjdGlvbiAgICAgICAgICAg
ICAgIENvbm5lY3RzIHRvIG1hY2ggc2VydmljZSBcImNvbS5hcHBsZS53ZWJraXQud2VicHVzaGQu
c2VydmljZVwiXG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1zdHJlYW1EZWJ1Z01lc3Nh
Z2VzICAgICAgU3RyZWFtIGRlYnVnIG1lc3NhZ2VzIGZyb20gd2VicHVzaGRcbiIpOwotICAgIGZw
cmludGYoc3RkZXJyLCAiICAtLXJlY29ubmVjdCAgICAgICAgICAgICAgICBSZWNvbm5lY3QgYWZ0
ZXIgY29ubmVjdGlvbiBpcyBsb3N0XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1kZXZl
bG9wbWVudFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgQ29ubmVjdHMgdG8gbWFjaCBz
ZXJ2aWNlIFwib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlXCIgKERlZmF1bHQp
XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1wcm9kdWN0aW9uXG4iKTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgICBDb25uZWN0cyB0byBtYWNoIHNlcnZpY2UgXCJjb20uYXBwbGUud2Vi
a2l0LndlYnB1c2hkLnNlcnZpY2VcIlxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tc3Ry
ZWFtRGVidWdNZXNzYWdlc1xuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgU3RyZWFtIGRl
YnVnIG1lc3NhZ2VzIGZyb20gd2VicHVzaGRcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAt
LXJlY29ubmVjdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgUmVjb25uZWN0IGFmdGVy
IGNvbm5lY3Rpb24gaXMgbG9zdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tcHVzaCA8
dGFyZ2V0IGFwcCBpZGVudGlmaWVyPiA8cmVnaXN0cmF0aW9uIFVSTD4gPG1lc3NhZ2U+XG4iKTsK
KyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBJbmplY3QgYSB0ZXN0IHB1c2ggbWVzc2FzZ2UgdG8g
dGhlIHRhcmdldCBhcHAgYW5kIHJlZ2lzdHJhdGlvbiBVUkxcbiIpOwogICAgIGZwcmludGYoc3Rk
ZXJyLCAiXG4iKTsKIAogICAgIGV4aXQoLTEpOwogfQogCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRy
PFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gcHVzaE1lc3NhZ2VGcm9tQXJndW1lbnRzKE5TRW51bWVy
YXRvcjxOU1N0cmluZyAqPiAqZW51bWVyYXRvcikKK3sKKyAgICBOU1N0cmluZyAqYXBwSWRlbnRp
ZmllciA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgIGlmICghYXBwSWRlbnRpZmllcikK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOU1N0cmluZyAqcmVnaXN0cmF0aW9uU3Ry
aW5nID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgaWYgKCFyZWdpc3RyYXRpb25TdHJp
bmcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNVUkwgKnJlZ2lzdHJhdGlvblVS
TCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnJlZ2lzdHJhdGlvblN0cmluZ107CisgICAgaWYgKCFy
ZWdpc3RyYXRpb25VUkwpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNTdHJpbmcg
Km1lc3NhZ2UgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICBpZiAoIW1lc3NhZ2UpCisg
ICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nIHB1c2hN
ZXNzYWdlID0geyBhcHBJZGVudGlmaWVyLCByZWdpc3RyYXRpb25VUkwsIG1lc3NhZ2UgfTsKKyAg
ICByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UHVzaE1lc3NhZ2VGb3JU
ZXN0aW5nPihXVEZNb3ZlKHB1c2hNZXNzYWdlKSk7Cit9CisKIGludCBtYWluKGludCwgY29uc3Qg
Y2hhciAqKikKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBAIC01MiwxMyAr
ODMsMTYgQEAgaW50IG1haW4oaW50LCBjb25zdCBjaGFyICoqKQogICAgIGF1dG8gcHJlZmVyVGVz
dFNlcnZpY2UgPSBXZWJQdXNoVG9vbDo6UHJlZmVyVGVzdFNlcnZpY2U6OlllczsKICAgICBhdXRv
IHJlY29ubmVjdCA9IFdlYlB1c2hUb29sOjpSZWNvbm5lY3Q6Ok5vOwogICAgIHN0ZDo6b3B0aW9u
YWw8V2ViUHVzaFRvb2w6OkFjdGlvbj4gYWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQdXNo
TWVzc2FnZUZvclRlc3Rpbmc+IHB1c2hNZXNzYWdlOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7
CiAgICAgICAgIE5TQXJyYXkgKmFyZ3VtZW50cyA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5m
b10gYXJndW1lbnRzXTsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5jb3VudCA9PSAxKQogICAgICAg
ICAgICAgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShAIk5vIGFyZ3VtZW50cyBwcm92aWRlZCIpOwog
Ci0gICAgICAgIGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGluIFthcmd1bWVudHMgc3ViYXJyYXlX
aXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMSwgYXJndW1lbnRzLmNvdW50IC0gMSldKSB7CisgICAgICAg
IE5TRW51bWVyYXRvcjxOU1N0cmluZyAqPiAqZW51bWVyYXRvciA9IFtbYXJndW1lbnRzIHN1YmFy
cmF5V2l0aFJhbmdlOk5TTWFrZVJhbmdlKDEsIGFyZ3VtZW50cy5jb3VudCAtIDEpXSBvYmplY3RF
bnVtZXJhdG9yXTsKKyAgICAgICAgTlNTdHJpbmcgKmFyZ3VtZW50ID0gW2VudW1lcmF0b3IgbmV4
dE9iamVjdF07CisgICAgICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKFth
cmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXByb2R1Y3Rpb24iXSkKICAgICAgICAgICAgICAg
ICBwcmVmZXJUZXN0U2VydmljZSA9IFdlYlB1c2hUb29sOjpQcmVmZXJUZXN0U2VydmljZTo6Tm87
CiAgICAgICAgICAgICBlbHNlIGlmIChbYXJndW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLS1kZXZl
bG9wbWVudCJdKQpAQCAtNjcsMTUgKzEwMSwyNCBAQCBpbnQgbWFpbihpbnQsIGNvbnN0IGNoYXIg
KiopCiAgICAgICAgICAgICAgICAgYWN0aW9uID0gV2ViUHVzaFRvb2w6OkFjdGlvbjo6U3RyZWFt
RGVidWdNZXNzYWdlczsKICAgICAgICAgICAgIGVsc2UgaWYgKFthcmd1bWVudCBpc0VxdWFsVG9T
dHJpbmc6QCItLXJlY29ubmVjdCJdKQogICAgICAgICAgICAgICAgIHJlY29ubmVjdCA9IFdlYlB1
c2hUb29sOjpSZWNvbm5lY3Q6OlllczsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVs
c2UgaWYgKFthcmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXB1c2giXSkgeworICAgICAgICAg
ICAgICAgIHB1c2hNZXNzYWdlID0gcHVzaE1lc3NhZ2VGcm9tQXJndW1lbnRzKGVudW1lcmF0b3Ip
OworICAgICAgICAgICAgICAgIGlmICghcHVzaE1lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAg
IHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnZh
bGlkIHB1c2ggYXJndW1lbnRzIHNwZWNpZmllZCJdKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAg
ICAgICAgICAgICAgIHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoW05TU3RyaW5nIHN0cmluZ1dpdGhG
b3JtYXQ6QCJJbnZhbGlkIG9wdGlvbiBwcm92aWRlZDogJUAiLCBhcmd1bWVudF0pOworCisgICAg
ICAgICAgICBhcmd1bWVudCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOwogICAgICAgICB9CiAg
ICAgfQogCi0gICAgaWYgKCFhY3Rpb24pCisgICAgaWYgKCFhY3Rpb24gJiYgIXB1c2hNZXNzYWdl
KQogICAgICAgICBwcmludFVzYWdlQW5kVGVybWluYXRlKEAiTm8gYWN0aW9uIHByb3ZpZGVkIik7
CiAKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6Y3JlYXRl
KCphY3Rpb24sIHByZWZlclRlc3RTZXJ2aWNlLCByZWNvbm5lY3QpOworICAgIGlmIChwdXNoTWVz
c2FnZSkKKyAgICAgICAgY29ubmVjdGlvbi0+c2V0UHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVz
c2FnZSkpOworCiAgICAgY29ubmVjdGlvbi0+Y29ubmVjdFRvU2VydmljZSgpOwogCiAgICAgQ0ZS
dW5Mb29wUnVuKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VM
b2cKaW5kZXggZDE1OTZjMTUwZmE4Li4wZjI0MWE3ZDJhMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0No
YW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMi0w
OCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFiaWxp
dHkgdG8gaW5qZWN0IG1lc3NhZ2VzIGludG8gd2VicHVzaGQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk4OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50
czoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
bWFjT1MuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9QdXNoQVBJLm1tOgorICAgICAgICAobWVzc2FnZURpY3Rpb25hcnkpOgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6Y3JlYXRlTWVzc2FnZURpY3Rpb25hcnkpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6c2VuZE1lc3NhZ2VUb0RhZW1vbik6CisgICAgICAgIChUZXN0V2Vi
S2l0QVBJOjpzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OnNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4pOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSk6Cisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6VEVTVCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAg
ICogVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisKIDIwMjEtMTItMDYgIEJy
YWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHdlYnB1c2hkL3dlYnB1
c2h0b29sIGRlYnVnZ2luZyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVu
dHMKaW5kZXggMmZkMGVhZjI1MWFlLi4xZTVlODdhMjlhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRz
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1p
T1MuZW50aXRsZW1lbnRzCkBAIC0xMiw2ICsxMiw4IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUud2Via2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBw
bGUucHJpdmF0ZS53ZWJraXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiAJPGtleT5j
b20uYXBwbGUucHJpdmF0ZS54cGMubGF1bmNoZC5qb2ItbWFuYWdlcjwva2V5PgogCTxzdHJpbmc+
VGVzdFdlYktpdEFQSTwvc3RyaW5nPgogPC9kaWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0
bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKaW5kZXggZjZmNTRlMTc0MjVmLi42ZmMyNGM0
YTA0NTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0
bGVtZW50cwpAQCAtNiw2ICs2LDggQEAKIAk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0cmluZz4K
IAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgor
CTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRy
dWUvPgogCTxrZXk+Y29tLmFwcGxlLmhpZC5tYW5hZ2VyLnVzZXItYWNjZXNzLWRldmljZTwva2V5
PgogCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLmhpZC5jbGllbnQuZXZlbnQtZmls
dGVyPC9rZXk+CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cwppbmRleCA5ZTYx
MTc2NDlhY2QuLmNjOTYyMTA0YTM0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRs
ZW1lbnRzCkBAIC0xMCw2ICsxMCw4IEBACiAJPC9hcnJheT4KIAk8a2V5PmNvbS5hcHBsZS5wcml2
YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnByaXZh
dGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxl
LnNlY3VyaXR5LnRlbXBvcmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0
cmluZz4oYWxsb3cgbWFjaC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24t
Y2xhc3MgJnF1b3Q7Y29tLmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3Ry
aW5nPgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
dXNoQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJ
Lm1tCmluZGV4IGM0YTczNjRkNzU0Yy4uYjY3Mjk2NzhhZjk5IDEwMDY0NAotLS0gYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNCw2ICszNCwxNCBA
QAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQg
PFdlYktpdC9fV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogCitzdGF0aWMgTlNE
aWN0aW9uYXJ5ICptZXNzYWdlRGljdGlvbmFyeShOU0RhdGEgKmRhdGEsIE5TVVJMICpyZWdpc3Ry
YXRpb24pCit7CisgICAgcmV0dXJuIEB7CisgICAgICAgIEAiV2ViS2l0UHVzaERhdGEiIDogZGF0
YSwKKyAgICAgICAgQCJXZWJLaXRQdXNoUmVnaXN0cmF0aW9uVVJMIiA6IHJlZ2lzdHJhdGlvbgor
ICAgIH07Cit9CisKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwogCiBAaW50ZXJmYWNl
IFB1c2hBUElNZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KQEAgLTE0Niw3ICsxNTQsOCBAQCBURVNUKFB1c2hBUEksIGZp
cmVQdXNoRXZlbnQpCiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgTlNT
dHJpbmcgKm1lc3NhZ2UgPSBAIlN3ZWV0IFBvdGF0b2VzIjsKICAgICBleHBlY3RlZE1lc3NhZ2Ug
PSAiUmVjZWl2ZWQ6IFN3ZWV0IFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0
ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVS
TF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworCisgICAgW1tjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25h
cnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAg
ICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMTYwLDcgKzE2OSw3IEBAIFRFU1QoUHVz
aEFQSSwgZmlyZVB1c2hFdmVudCkKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsK
ICAgICBtZXNzYWdlID0gQCJSb3R0ZW4gUG90YXRvZXMiOwogICAgIGV4cGVjdGVkTWVzc2FnZSA9
ICJSZWNlaXZlZDogUm90dGVuIFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0
ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVS
TF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5
KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZl
ci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAg
ICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdl
UHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9XTsKQEAgLTIzNCw3ICsyNDMsNyBAQCBURVNUKFB1c2hB
UEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1N1Y2Nlc3NmdWwpCiAgICAgcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQgPSBmYWxzZTsKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAg
ICBOU1N0cmluZyAqbWVzc2FnZSA9IEAiU3dlZXQgUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJh
dGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5y
ZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2Fn
ZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVz
dWx0KSB7CiAgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAg
cHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMjc5LDcgKzI4OCw3IEBA
IFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzRmFpbCkKICAgICBwdXNoTWVz
c2FnZVByb2Nlc3NlZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNl
OwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJSb3R0ZW4gUG90YXRvZXMiOwotICAgIFtbY29u
ZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdl
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3Nl
cnZlci5yZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7Cisg
ICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6
bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5n
RW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJv
b2wgcmVzdWx0KSB7CiAgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAg
ICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMzMyLDcgKzM0
MSw3IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzVGltZW91dCkKICAg
ICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1
bCA9IGZhbHNlOwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJUaW1lbGVzcyBQb3RhdG9lcyI7
Ci0gICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3Nh
Z2U6W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lz
dHJhdGlvbjpbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCBy
ZXN1bHQpIHsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQ
dXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpO
U1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25I
YW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKICAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0g
cmVzdWx0OwogICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CiAgICAgfV07CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hE
YWVtb24ubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hE
YWVtb24ubW0KaW5kZXggNzNmNGMyOGY4OTUwLi4xZWYxMWM2NmZlYWMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysg
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0K
QEAgLTI2LDYgKzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEYWVtb25U
ZXN0VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0Lmgi
CiAjaW1wb3J0ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmll
dy5oIgpAQCAtMzUsNyArMzYsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9y
ZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAj
aW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KLSNpbXBv
cnQgPGFycmF5PgogI2ltcG9ydCA8bWFjaC9tYWNoX2luaXQuaD4KICNpbXBvcnQgPG1hY2gvdGFz
ay5oPgogCkBAIC0xNjIsNiArMTYyLDgxIEBAIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVz
aEQoTlNVUkwgKnRlbXBEaXIpCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogfQogCitzdGF0aWMg
UmV0YWluUHRyPHhwY19vYmplY3RfdD4gY3JlYXRlTWVzc2FnZURpY3Rpb25hcnkodWludDhfdCBt
ZXNzYWdlVHlwZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8g
ZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxw
dHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCks
ICJwcm90b2NvbCB2ZXJzaW9uIiwgMSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChk
aWN0aW9uYXJ5LmdldCgpLCAibWVzc2FnZSB0eXBlIiwgbWVzc2FnZVR5cGUpOworICAgIHhwY19k
aWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBt
ZXNzYWdlLmRhdGEoKSwgbWVzc2FnZS5zaXplKCkpOworICAgIHJldHVybiBXVEZNb3ZlKGRpY3Rp
b25hcnkpOworfQorCisvLyBVc2VzIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gdGhlIGRhZW1v
biBmb3IgYSBvbmUtb2ZmIG1lc3NhZ2UKK3ZvaWQgc2VuZE1lc3NhZ2VUb0RhZW1vbih4cGNfY29u
bmVjdGlvbl90IGNvbm5lY3Rpb24sIHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1
aW50OF90PiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVNZXNzYWdl
RGljdGlvbmFyeShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKGNvbm5lY3Rpb24sIGRpY3Rpb25hcnkuZ2V0KCkpOworfQorCisvLyBVc2VzIGFu
IGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gdGhlIGRhZW1vbiBmb3IgYSBvbmUtb2ZmIG1lc3NhZ2Us
IHdhaXRpbmcgZm9yIHRoZSByZXBseQordm9pZCBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0Zv
clJlcGx5KHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgdWludDhfdCBtZXNzYWdlVHlwZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9
IGNyZWF0ZU1lc3NhZ2VEaWN0aW9uYXJ5KG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKworICAgIF9f
YmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdl
X3dpdGhfcmVwbHkoY29ubmVjdGlvbiwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21h
aW5fcXVldWUoKSwgXih4cGNfb2JqZWN0X3QgcmVxdWVzdCkgeworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9KTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisK
K3N0YXRpYyB2b2lkIHNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4oeHBjX2Nvbm5lY3Rp
b25fdCBjb25uZWN0aW9uKQoreworICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAs
IDAsIDAsIDAsIDAsIDAgfTsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGF1ZGl0VG9rZW5D
b3VudCA9IFRBU0tfQVVESVRfVE9LRU5fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQg
PSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19BVURJVF9UT0tFTiwgKHRhc2tfaW5m
b190KSgmdG9rZW4pLCAmYXVkaXRUb2tlbkNvdW50KTsKKyAgICBpZiAocmVzdWx0ICE9IEtFUk5f
U1VDQ0VTUykgeworICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisKKyAgICAvLyBTZW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBhdWRpdCB0b2tlbgorICAg
IHsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKDQyKTsKKyAgICAgICAg
ZW5jb2RlZE1lc3NhZ2UuZmlsbCgwKTsKKyAgICAgICAgZW5jb2RlZE1lc3NhZ2VbMV0gPSAxOwor
ICAgICAgICBlbmNvZGVkTWVzc2FnZVsyXSA9IDMyOworICAgICAgICBtZW1jcHkoJmVuY29kZWRN
ZXNzYWdlWzEwXSwgJnRva2VuLCBzaXplb2YodG9rZW4pKTsKKyAgICAgICAgc2VuZE1lc3NhZ2VU
b0RhZW1vbihjb25uZWN0aW9uLCA2LCBlbmNvZGVkTWVzc2FnZSk7CisgICAgfQorfQorCitSZXRh
aW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2Vy
dmljZShjb25zdCBjaGFyKiBzZXJ2aWNlTmFtZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBh
ZG9wdE5TKHhwY19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2Uoc2VydmljZU5hbWUsIGRp
c3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIDApKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZl
bnRfaGFuZGxlcihjb25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCkgeyB9KTsKKyAgICB4
cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpKTsKKyAgICBzZW5kQ29uZmln
dXJhdGlvbldpdGhBdWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgcmV0dXJuIFdU
Rk1vdmUoY29ubmVjdGlvbik7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobWVzc2FnZS5pczhCaXQo
KSk7CisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChtZXNzYWdlLmxlbmd0aCgpICsgNSk7Cisg
ICAgcmVzdWx0WzBdID0gKG1lc3NhZ2UubGVuZ3RoKCkgJiAweDAwMDAwMDAwMDAwMDAwRkYpOwor
ICAgIHJlc3VsdFsxXSA9IChtZXNzYWdlLmxlbmd0aCgpICYgMHgwMDAwMDAwMDAwMDBGRjAwKSA+
PiA4OworICAgIHJlc3VsdFsyXSA9IChtZXNzYWdlLmxlbmd0aCgpICYgMHgwMDAwMDAwMDAwRkYw
MDAwKSA+PiAxNjsKKyAgICByZXN1bHRbM10gPSAobWVzc2FnZS5sZW5ndGgoKSAmIDB4MDAwMDAw
MDBGRjAwMDAwMCkgPj4gMjQ7CisgICAgcmVzdWx0WzRdID0gMHgwMTsKKyAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG1lc3NhZ2UubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVzdWx0WzUgKyBp
XSA9IG1lc3NhZ2VbaV07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvLyBGSVhNRTogUmUt
ZW5hYmxlIHRoaXMgdGVzdCBvbiBNYWMgb25jZSB3ZWJraXQub3JnLzIzMjg1NyBpcyByZXNvbHZl
ZC4KICNpZiBQTEFURk9STShNQUMpCiBURVNUKFdlYlB1c2hELCBESVNBQkxFRF9CYXNpY0NvbW11
bmljYXRpb24pCkBAIC0xOTYsNDQgKzI3MSwyMCBAQCBURVNUKFdlYlB1c2hELCBCYXNpY0NvbW11
bmljYXRpb24pCiAgICAgfSk7CiAKICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0
aW9uLmdldCgpKTsKLQotICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAsIDAsIDAs
IDAsIDAsIDAgfTsKLSAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGF1ZGl0VG9rZW5Db3VudCA9
IFRBU0tfQVVESVRfVE9LRU5fQ09VTlQ7Ci0gICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNr
X2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19BVURJVF9UT0tFTiwgKHRhc2tfaW5mb190KSgm
dG9rZW4pLCAmYXVkaXRUb2tlbkNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VT
UykgewotICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICAvLyBTZW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBhdWRpdCB0b2tlbgotICAgIHsKLSAg
ICAgICAgc3RkOjphcnJheTx1aW50OF90LCA0Mj4gZW5jb2RlZE1lc3NhZ2U7Ci0gICAgICAgIGVu
Y29kZWRNZXNzYWdlLmZpbGwoMCk7Ci0gICAgICAgIGVuY29kZWRNZXNzYWdlWzFdID0gMTsKLSAg
ICAgICAgZW5jb2RlZE1lc3NhZ2VbMl0gPSAzMjsKLSAgICAgICAgbWVtY3B5KCZlbmNvZGVkTWVz
c2FnZVsxMF0sICZ0b2tlbiwgc2l6ZW9mKHRva2VuKSk7Ci0gICAgICAgIGF1dG8gZGljdGlvbmFy
eSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
LSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAicHJv
dG9jb2wgdmVyc2lvbiIsIDEpOwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRp
Y3Rpb25hcnkuZ2V0KCksICJtZXNzYWdlIHR5cGUiLCA2KTsKLSAgICAgICAgeHBjX2RpY3Rpb25h
cnlfc2V0X2RhdGEoZGljdGlvbmFyeS5nZXQoKSwgImVuY29kZWQgbWVzc2FnZSIsIGVuY29kZWRN
ZXNzYWdlLmRhdGEoKSwgZW5jb2RlZE1lc3NhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgeHBjX2Nvbm5l
Y3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOwot
ICAgIH0KKyAgICBzZW5kQ29uZmlndXJhdGlvbldpdGhBdWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0
KCkpOwogCiAgICAgLy8gRW5hYmxlIGRlYnVnIG1lc3NhZ2VzLCBhbmQgd2FpdCBmb3IgdGhlIHJl
c3VsdGluZyBkZWJ1ZyBtZXNzYWdlCiAgICAgewogICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBh
ZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAg
ICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMT4gZW5jb2RlZE1lc3NhZ2UgeyAxIH07Ci0gICAgICAg
IHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgInByb3RvY29sIHZl
cnNpb24iLCAxKTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5
LmdldCgpLCAibWVzc2FnZSB0eXBlIiwgNSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9k
YXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBlbmNvZGVkTWVzc2FnZS5k
YXRhKCksIGVuY29kZWRNZXNzYWdlLnNpemUoKSk7Ci0KLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25f
c2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgICAg
ICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZE1lc3NhZ2UoMSk7CisgICAgICAgIGVuY29kZWRNZXNz
YWdlWzBdID0gMTsKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbihjb25uZWN0aW9uLmdldCgp
LCA1LCBlbmNvZGVkTWVzc2FnZSk7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
ZG9uZSk7CiAgICAgfQogCiAgICAgLy8gRWNobyBhbmQgd2FpdCBmb3IgYSByZXBseQogICAgIGF1
dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51
bGxwdHIsIDApKTsKLSAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEwPiBlbmNvZGVkU3RyaW5nIHsg
NSwgMCwgMCwgMCwgMSwgJ2gnLCAnZScsICdsJywgJ2wnLCAnbycgfTsKKyAgICBhdXRvIGVuY29k
ZWRTdHJpbmcgPSBlbmNvZGVTdHJpbmcoImhlbGxvIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVyc2lvbiIsIDEpOwogICAgIHhw
Y19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIs
IDEpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNv
ZGVkIG1lc3NhZ2UiLCBlbmNvZGVkU3RyaW5nLmRhdGEoKSwgZW5jb2RlZFN0cmluZy5zaXplKCkp
OwpAQCAtMzQxLDYgKzM5MiwxNDAgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1l
bnQpCiAgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAorc3RhdGlj
IGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0
aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9z
dE1lc3NhZ2UobXNnKTsKK30KKworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgp
OworY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IGxvZyhldmVudC5kYXRhKTsK
KworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oKHJlZ2lz
dHJhdGlvbikgPT4geworICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJl
Z2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3NhZ2Uoe3BvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hh
bm5lbC5wb3J0Ml0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdvcmtlciA9IHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nOworICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNo
YW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0
ZWQnKQorICAgICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQy
fSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICB9KTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7
CisgICAgbG9nKCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKKzwv
c2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMg
PSBSIlNXUkVTT1VSQ0UoCitsZXQgcG9ydDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2Fn
ZSIsIChldmVudCkgPT4geworICAgIHBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5w
b3N0TWVzc2FnZSgiUmVhZHkiKTsKK30pOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwg
KGV2ZW50KSA9PiB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CisgICAg
ICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CisgICAgICAg
ICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRh
LnRleHQoKTsKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6ICIgKyB2YWx1ZSk7
CisgICAgICAgIGlmICh2YWx1ZSAhPSAnU3dlZXQgUG90YXRvZXMnKQorICAgICAgICAgICAgZXZl
bnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0KCdJIHdhbnQgc3dlZXQgcG90YXRvZXMnKSk7Cisg
ICAgfSBjYXRjaCAoZSkgeworICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJHb3QgZXhjZXB0aW9u
ICIgKyBlKTsKKyAgICB9Cit9KTsKKylTV1JFU09VUkNFIjsKKworc3RhdGljIHZvaWQgY2xlYXJX
ZWJzaXRlRGF0YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpCit7CisgICAgX19ibG9j
ayBib29sIGNsZWFyZWRTdG9yZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRl
ZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxs
V2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21w
bGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAgICBjbGVhcmVkU3RvcmUgPSB0cnVlOworICAgIH1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY2xlYXJlZFN0b3JlKTsKK30KKworLy8g
RklYTUU6IFJlLWVuYWJsZSB0aGlzIHRlc3Qgb24gTWFjIG9uY2Ugd2Via2l0Lm9yZy8yMzI4NTcg
aXMgcmVzb2x2ZWQuCisjaWYgUExBVEZPUk0oTUFDKQorVEVTVChXZWJQdXNoRCwgRElTQUJMRURf
SGFuZGxlSW5qZWN0ZWRQdXNoKQorI2Vsc2UKK1RFU1QoV2ViUHVzaEQsIEhhbmRsZUluamVjdGVk
UHVzaCkKKyNlbmRpZgoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURh
dGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisKKyAgICBOU1VSTCAqdGVtcERpcmVjdG9yeSA9IHNl
dFVwVGVzdFdlYlB1c2hEKCk7CisKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBh
ZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBkYXRh
U3RvcmVDb25maWd1cmF0aW9uLmdldCgpLndlYlB1c2hNYWNoU2VydmljZU5hbWUgPSBAIm9yZy53
ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSI7CisgICAgZGF0YVN0b3JlQ29uZmlndXJh
dGlvbi5nZXQoKS53ZWJQdXNoRGFlbW9uVXNlc01vY2tCdW5kbGVzRm9yVGVzdGluZyA9IFlFUzsK
KyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2Nd
IF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOwor
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3Rv
cmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1
cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsKKworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnBy
ZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpZRVNdOworICAgIGZvciAoX1dLRXhw
ZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFs
RmVhdHVyZXNdKSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAi
QnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVkIl0pCisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRp
b24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOworICAg
IH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5k
bGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJv
bGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpA
InN3Il07CisgICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbWVzc2FnZUhhbmRs
ZXIgYWRkTWVzc2FnZTpAIlJlYWR5IiB3aXRoSGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAIlJlY2VpdmVkOiBI
ZWxsbyBXb3JsZCIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07
CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8i
LCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQt
VHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfQorICAg
IH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKKworICAgIGF1
dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
XSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IC8vIEluamVjdCBwdXNoIG1lc3NhZ2UKKyAgICBhdXRvIGVuY29kZWRNZXNzYWdlID0gZW5jb2Rl
U3RyaW5nKCJjb20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBlbmNvZGVkTWVz
c2FnZS5hcHBlbmRWZWN0b3IoZW5jb2RlU3RyaW5nKHNlcnZlci5yZXF1ZXN0KCkuVVJMLmFic29s
dXRlU3RyaW5nKSk7CisgICAgZW5jb2RlZE1lc3NhZ2UuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmlu
ZygiSGVsbG8gV29ybGQiKSk7CisKKyAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRl
QW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRh
ZW1vbi5zZXJ2aWNlIik7CisgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1
dGlsaXR5Q29ubmVjdGlvbi5nZXQoKSwgNywgZW5jb2RlZE1lc3NhZ2UpOworCisgICAgLy8gRmV0
Y2ggcHVzaCBtZXNzYWdlcworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9u
YXJ5ICo+PiBtZXNzYWdlczsKKyAgICBbZGF0YVN0b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
Ol4oTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKnJhd01lc3NhZ2VzKSB7CisgICAgICAgIG1lc3Nh
Z2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAg
RVhQRUNUX0VRKFttZXNzYWdlcyBjb3VudF0sIDF1KTsKKworICAgIC8vIEhhbmRsZSBwdXNoIG1l
c3NhZ2UKKyAgICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAg
ICBbZGF0YVN0b3JlIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2VzIGZpcnN0T2JqZWN0XSBj
b21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlUHJv
Y2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQp
OworCisgICAgY2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFU
Rk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4
IGMyYjcxMTZlMzBiNi4uMmNlNmU3YzkwYTU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaApAQCAtNzgsNiArNzgsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RNZXNz
YWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogLSAodm9pZClh
ZGRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ugd2l0aEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2Nr
X3QpaGFuZGxlcjsKKy0gKHZvaWQpc2V0V2lsZGNhcmRNZXNzYWdlSGFuZGxlcjoodm9pZCAoXiko
TlNTdHJpbmcgKikpaGFuZGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IDog
V0tXZWJWaWV3Cg==
</data>
<flag name="commit-queue"
          id="471705"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446372</attachid>
            <date>2021-12-08 09:03:56 -0800</date>
            <delta_ts>2021-12-08 12:06:32 -0800</delta_ts>
            <desc>Patch v2</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73018</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NmZGQ0NTFlMDEzLi5hNGVkZTE1ODNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IEFQSSB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAgLSBBZGRzIFdLV2Vi
c2l0ZURhdGFTdG9yZSBTUEkgdG8gZmV0Y2ggcGVuZGluZyBwdXNoIG1lc3NhZ2VzIGZvciB0aGUg
ZW1iZWRkaW5nIGFwcGxpY2F0aW9uCisgICAgICAgICAtIEdpdmVzIHdlYnB1c2hkIGNvZGUgdG8g
aW5qZWN0IGEgcHVzaCBtZXNzYWdlIGZvciBhIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyCisgICAg
ICAgICAtIEdpdmVzIHdlYnB1c2h0b29sIHRoZSBhYmlsaXR5IHRvIHNlbmQgb25lIG9mIHRoZXNl
IGZha2UgbWVzc2FnZXMKKyAgICAgICAgIC0gR2l2ZXMgd2VicHVzaHRvb2wgdGhlIGFiaWxpdHkg
dG8gcmVjb25uZWN0IHRvIHRoZSBuZXh0IGRhZW1vbiBpbnN0YW5jZSBhZnRlciB0aGUgY3VycmVu
dCBjb25uZWN0aW9uIGlzIGRyb3BwZWQKKyAgICAgICAgIC0gVGVzdHMgdGhlIGluamVjdGlvbiBh
bmQgZmV0Y2hpbmcgb2YgcHVzaCBtZXNzYWdlcyB2aWEgVGVzdFdlYktpdEFQSQorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvd2VicHVzaHRvb2wueGNjb25maWc6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogUmVzb3VyY2VzL3dlYnB1c2h0
b29sLmVudGl0bGVtZW50czoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNo
TWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8VmVj
dG9yPFdlYlB1c2hNZXNzYWdlPjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OnRvRGljdGlvbmFyeSBjb25zdCk6CisKKyAgICAgICAg
KiBTaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZGVjb2RlKToKKworICAgICAg
ICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorCisgICAgICAgICogU2hhcmVkL1dlYlB1
c2hNZXNzYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRv
b2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hNZXNz
YWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZGVj
b2RlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2Fn
ZXM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3By
b2Nlc3NQdXNoTWVzc2FnZTpyZWdpc3RyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nl
c3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorXAorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmg6
CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAgIChX
ZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCk6Cisg
ICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hJbmplY3RF
bnRpdGxlbWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEhh
c0VudGl0bGVtZW50KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UpOgorCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
OgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNo
RDo6TWVzc2FnZUluZm86OmluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkp
OgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
OjplbmNvZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmluamVjdFB1c2hNZXNzYWdl
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29u
bmVjdGlvbi5oOgorICAgICAgICAoV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OnNldFB1c2hNZXNz
YWdlKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKFdlYlB1c2hUb29sOjpDb25uZWN0aW9uOjpzdGFydEFjdGlvbik6
CisgICAgICAgIChXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6c2VuZFB1c2hNZXNzYWdlKToKKwor
ICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbToKKyAgICAg
ICAgKHByaW50VXNhZ2VBbmRUZXJtaW5hdGUpOgorICAgICAgICAocHVzaE1lc3NhZ2VGcm9tQXJn
dW1lbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTA2ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJwdXNoZC93ZWJwdXNodG9vbCBkZWJ1Z2dp
bmcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dl
YnB1c2h0b29sLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNo
dG9vbC54Y2NvbmZpZwppbmRleCA3MzcxYTMzNzM0ZjcuLmYxODJhZGUzMTgzYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1c2h0b29sLnhjY29uZmlnCkBAIC0y
OSw3ICsyOSw3IEBAIFNLSVBfSU5TVEFMTCA9IFlFUzsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05B
TUVTW3Nkaz1hcHBsZXR2Kl0gPSAqOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPXdh
dGNoKl0gPSAqOwogCi1PVEhFUl9MREZMQUdTID0gLWwgV1RGIC1mcmFtZXdvcmsgRm91bmRhdGlv
biAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uOworT1RIRVJfTERGTEFHUyA9IC1mcmFtZXdvcmsg
V2ViS2l0IC1sIFdURgogTElCUkFSWV9TRUFSQ0hfUEFUSFMgPSAkKEJVSUxUX1BST0RVQ1RTX0RJ
Uik7CiAKIENPREVfU0lHTl9FTlRJVExFTUVOVFMgPSBSZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50
aXRsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3
b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcAppbmRleCA0NzJjOGI1N2MzMmMuLmQxNWM1NmI2YjhlZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKQEAgLTU4LDYgKzU4LDcg
QEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbE1lc3NhZ2VzLmgiCisjaW5jbHVk
ZSAiV2ViUHVzaE1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNz
U3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgiCkBAIC0yNTQ2LDEyICsyNTQ3LDIwIEBAIHZvaWQgTmV0d29ya1By
b2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Ym9vbCBwcm9jCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246OmNvbnN1bWVQZXJtYW5lbnRseSho
YW5kbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVy
ZW5jZT4mIGlwY0RhdGEsIFVSTCYmIHJlZ2lzdHJhdGlvblVSTCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQ
dXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJiBjYWxsYmFjaykKIHsKLSAgICBz
dGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsKLSAgICBpZiAoaXBjRGF0YSkKLSAg
ICAgICAgZGF0YSA9IFZlY3Rvcjx1aW50OF90PiB7IGlwY0RhdGEtPmRhdGEoKSwgaXBjRGF0YS0+
c2l6ZSgpIH07Ci0gICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNlc3Npb25JRCkucHJvY2Vzc1B1c2hN
ZXNzYWdlKFdURk1vdmUoZGF0YSksIFdURk1vdmUocmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShj
YWxsYmFjaykpOworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJRklDQVRJT05TKQorICAgIGlmIChh
dXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lvbklEKSkgeworICAgICAgICBzZXNz
aW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhXVEZNb3Zl
KGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKKyAgICBjYWxsYmFj
ayh7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmIHB1c2hNZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIHN3U2VydmVyRm9y
U2Vzc2lvbihzZXNzaW9uSUQpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKHB1c2hNZXNzYWdl
LnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdpc3RyYXRpb25VUkwpLCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmggYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKaW5kZXggOWQzMmQ1
Nzk3M2EwLi42YzYyNzcyMjNjNDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmgKQEAgLTExNyw2ICsxMTcsNyBAQCBlbnVtIGNsYXNzIFN0b3JhZ2VB
Y2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBXZWJzaXRlRGF0YUZldGNoT3B0aW9u
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFUeXBlIDogdWludDMyX3Q7CiBzdHJ1
Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CitzdHJ1Y3QgV2ViUHVzaE1lc3Nh
Z2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKICNpZiBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCkBAIC0zOTYsNyArMzk3LDggQEAgcHVibGljOgogICAgIGJvb2wgZnRwRW5h
YmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnRwRW5hYmxlZDsgfQogCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBj
b25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mLCBVUkwmJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQ
dXNoTWVzc2FnZT4mKT4mJik7CisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYp
OwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbiBiL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KaW5k
ZXggMzJhYjM4NDBiNjZhLi4yNGZlMzhiNDJkMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjA2LDcg
KzIwNiw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKICNl
bmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIFByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8SVBDOjpEYXRhUmVmZXJl
bmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3lu
YworICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAt
PiAoVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+IG1lc3NhZ2VzKSBBc3luYworICAgIFBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJLaXQ6
OldlYlB1c2hNZXNzYWdlIHB1c2hNZXNzYWdlKSAtPiAoYm9vbCBkaWRTdWNjZWVkKSBBc3luYwog
I2VuZGlmCiAgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgb3Jp
Z2luKSAtPiAoU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMKICAgICBHZXRPcmlnaW5zV2l0aFB1
c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpIC0+
IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zKSBBc3luYwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKaW5kZXggZGZlMTUy
MmUzNjBkLi4wNjhjM2M4ZTNhOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1By
b2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKKysrIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmlj
YXRpb25NYW5hZ2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkRhZW1vbkVuY29k
ZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlB1c2hEYWVt
b25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgIldlYlB1c2hNZXNzYWdlLmgi
CiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC04OCw2ICs4OSwxNSBAQCB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2Vy
OjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhDbwogICAgIHNl
bmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6R2V0T3JpZ2luc1dpdGhQ
dXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM+KFdURk1vdmUocmVwbHlIYW5kbGVyKSk7CiB9
CiAKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OmdldFBlbmRpbmdQdXNoTWVzc2Fn
ZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+
JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8V2ViUHVzaE1lc3NhZ2U+JiYpPiByZXBseUhhbmRsZXIgPSBbY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4gbWVz
c2FnZXMpIG11dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1lc3Nh
Z2VzKSk7CisgICAgfTsKKworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNz
YWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsK
K30KKwogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihj
b25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcm
LCBjb25zdCBTdHJpbmcmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0
cmluZyYsIHVpbnQ2NF90KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpAQCAtMTg2LDYgKzE5
NiwxNyBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7
CiAgICAgfQogfTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8VmVjdG9yPFdlYlB1
c2hNZXNzYWdlPiYmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2Rl
ciYmIGRlY29kZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdl
PiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPFdlYlB1c2hNZXNzYWdlPj4gbWVzc2FnZXM7CisgICAgICAgIGRlY29kZXIgPj4gbWVz
c2FnZXM7CisgICAgICAgIGlmICghbWVzc2FnZXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxl
dGlvbkhhbmRsZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqbWVz
c2FnZXMpKTsKKyAgICB9Cit9OworCiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVz
c2FnZVR5cGUsIHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KIHZvaWQg
TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoUmVwbHlBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJncyYm
Li4uIGFyZ3MpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5oCmluZGV4IDZmMTY4MWE3MjUxYy4uZGZmZjVkYmYwMjE2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5j
bHVkZSAiTm90aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2Vi
UHVzaERhZW1vbkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvV1RGU3RyaW5nLmg+CiAKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYp
OwogICAgIHZvaWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhPiYpPiYmKTsKKyAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwogCiBwcml2
YXRlOgogICAgIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgY29u
c3QgU3RyaW5nJiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvUmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cyBiL1NvdXJjZS9XZWJLaXQv
UmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cwppbmRleCA2NGEwYjU2YmM1MDAuLjYz
MjRmMDVhZDk2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvd2VicHVzaHRv
b2wuZW50aXRsZW1lbnRzCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL3dlYnB1c2h0b29s
LmVudGl0bGVtZW50cwpAQCAtNCw1ICs0LDcgQEAKIDxkaWN0PgogCTxrZXk+Y29tLmFwcGxlLnBy
aXZhdGUud2Via2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUucHJp
dmF0ZS53ZWJraXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3Bs
aXN0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3Nh
Z2VDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlB1c2hNZXNzYWdlQ29j
b2EubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xNjZlNGE2YTk1
NjAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQdXNo
TWVzc2FnZUNvY29hLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAtMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBv
cnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaE1lc3NhZ2UuaCIKKworI2ltcG9ydCA8d3Rm
L1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworI2RlZmluZSBXZWJLaXRQdXNo
RGF0YUtleSBAIldlYktpdFB1c2hEYXRhIgorI2RlZmluZSBXZWJLaXRQdXNoUmVnaXN0cmF0aW9u
VVJMS2V5IEAiV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTCIKKworc3RkOjpvcHRpb25hbDxXZWJQ
dXNoTWVzc2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KE5TRGljdGlvbmFyeSAq
ZGljdGlvbmFyeSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5
OldlYktpdFB1c2hSZWdpc3RyYXRpb25VUkxLZXldOworICAgIGlmICghdXJsIHx8ICFbdXJsIGlz
S2luZE9mQ2xhc3M6W05TVVJMIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBOU0RhdGEgKnB1c2hEYXRhID0gW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OldlYktp
dFB1c2hEYXRhS2V5XTsKKyAgICBpZiAoIXB1c2hEYXRhIHx8ICFbcHVzaERhdGEgaXNLaW5kT2ZD
bGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7IChjb25zdCB1aW50OF90Kilw
dXNoRGF0YS5ieXRlcywgcHVzaERhdGEubGVuZ3RoIH0sCisgICAgICAgIFVSTCB7IChOU1VSTCAq
KXVybCB9CisgICAgfSB9OworfQorCitOU0RpY3Rpb25hcnkgKldlYlB1c2hNZXNzYWdlOjp0b0Rp
Y3Rpb25hcnkoKSBjb25zdAoreworICAgIGF1dG8gbnNEYXRhID0gYWRvcHROUyhbW05TRGF0YSBh
bGxvY10gaW5pdFdpdGhCeXRlczpwdXNoRGF0YS5kYXRhKCkgbGVuZ3RoOnB1c2hEYXRhLnNpemUo
KV0pOworICAgIHJldHVybiBAeworICAgICAgICBXZWJLaXRQdXNoRGF0YUtleSA6IG5zRGF0YS5n
ZXQoKSwKKyAgICAgICAgV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTEtleSA6IChOU1VSTCAqKXJl
Z2lzdHJhdGlvblVSTAorICAgIH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggYi9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QdXNoTWVzc2FnZUZvclRlc3RpbmcuaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLjFjNzQ3ZTE2MjgyNgotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9XZWJLaXQvU2hhcmVkL1B1c2hNZXNzYWdlRm9yVGVzdGluZy5oCkBAIC0wLDAgKzEs
NzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPHd0Zi9VUkwuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYktpdDo6V2Vi
UHVzaEQgeworCitzdHJ1Y3QgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nIHsKKyAgICB0ZW1wbGF0ZTxj
bGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8
Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
PiBkZWNvZGUoRGVjb2RlciYpOworCisgICAgU3RyaW5nIHRhcmdldEFwcENvZGVTaWduaW5nSWRl
bnRpZmllcjsKKyAgICBVUkwgcmVnaXN0cmF0aW9uVVJMOworICAgIFN0cmluZyBtZXNzYWdlOwor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHRhcmdl
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA8PCByZWdpc3RyYXRpb25VUkwgPDwgbWVzc2FnZTsK
K30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8UHVzaE1lc3NhZ2VG
b3JUZXN0aW5nPiBQdXNoTWVzc2FnZUZvclRlc3Rpbmc6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVy
KQoreworICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50
aWZpZXI7CisgICAgZGVjb2RlciA+PiB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7Cisg
ICAgaWYgKCF0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVnaXN0cmF0aW9uVVJMOwor
ICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uVVJMOworICAgIGlmICghcmVnaXN0cmF0aW9uVVJM
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxTdHJp
bmc+IG1lc3NhZ2U7CisgICAgZGVjb2RlciA+PiBtZXNzYWdlOworICAgIGlmICghbWVzc2FnZSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiB7IHsKKyAgICAgICAg
V1RGTW92ZSgqdGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKSwKKyAgICAgICAgV1RGTW92
ZSgqcmVnaXN0cmF0aW9uVVJMKSwKKyAgICAgICAgV1RGTW92ZSgqbWVzc2FnZSksCisgICAgfSB9
OworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hECmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmggYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKaW5kZXggYTRkYmNkNzc5MTI0Li41ODAy
YmIwN2MzOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25D
b25zdGFudHMuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgKQEAgLTQyLDYgKzQyLDggQEAgZW51bSBjbGFzcyBNZXNzYWdlVHlwZSA6IHVpbnQ4X3Qg
ewogICAgIEdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zLAogICAg
IFNldERlYnVnTW9kZUlzRW5hYmxlZCwKICAgICBVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlv
biwKKyAgICBJbmplY3RQdXNoTWVzc2FnZUZvclRlc3RpbmcsCisgICAgR2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcywKIH07CiAKIGlubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdl
VHlwZSBtZXNzYWdlVHlwZSkKQEAgLTUxLDYgKzUzLDggQEAgaW5saW5lIGJvb2wgbWVzc2FnZVR5
cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlKQogICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zOgogICAgIGNh
c2UgTWVzc2FnZVR5cGU6OkRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246CiAg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6UmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246
CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0UGVuZGluZ1B1c2hNZXNzYWdlczoKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpJbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc6CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlNldERlYnVnTW9kZUlzRW5hYmxlZDoKICAg
ICBjYXNlIE1lc3NhZ2VUeXBlOjpVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbjoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hNZXNzYWdlLmggYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9XZWJQdXNoTWVzc2FnZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMC4uNWNhMzQ1YzI3OTAyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktp
dC9TaGFyZWQvV2ViUHVzaE1lc3NhZ2UuaApAQCAtMCwwICsxLDc0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgor
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9V
UkwuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5
OworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RydWN0IFdlYlB1c2hNZXNzYWdlIHsKKyAgICB0
ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAg
dGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3Nh
Z2U+IGRlY29kZShEZWNvZGVyJik7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcHVzaERhdGE7Cisg
ICAgVVJMIHJlZ2lzdHJhdGlvblVSTDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPFdlYlB1c2hNZXNzYWdlPiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25h
cnkgKik7CisgICAgTlNEaWN0aW9uYXJ5ICp0b0RpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRpZgor
fTsKKwordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgV2ViUHVzaE1lc3NhZ2U6OmVuY29k
ZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHVzaERhdGEgPDwg
cmVnaXN0cmF0aW9uVVJMOworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRp
b25hbDxXZWJQdXNoTWVzc2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNv
ZGVyKQoreworICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwdXNoRGF0YTsKKyAg
ICBkZWNvZGVyID4+IHB1c2hEYXRhOworICAgIGlmICghcHVzaERhdGEpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVnaXN0cmF0aW9uVVJM
OworICAgIGRlY29kZXIgPj4gcmVnaXN0cmF0aW9uVVJMOworICAgIGlmICghcmVnaXN0cmF0aW9u
VVJMKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAg
ICAgICBXVEZNb3ZlKCpwdXNoRGF0YSksCisgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvblVS
TCkKKyAgICB9IH07Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5k
ZXggN2VmMDY5NTBhYjA3Li42Mjk2OTA3OWQ5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzksNiAr
MzksNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0
ZURhdGFSZWNvcmRJbnRlcm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0
ICJXZWJQdXNoTWVzc2FnZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0
b3JlLmgiCiAjaW1wb3J0ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCkBAIC03NjEsMTMgKzc2
MiwyOSBAQCBzdGF0aWMgVmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0
ZURhdGFSZWNvcmRzKE5TQXJyYXkgKmRhdGFSZWNvcgogICAgIHJldHVybiBfd2Vic2l0ZURhdGFT
dG9yZS0+aGFzU2VydmljZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKIH0K
IAotLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopIG1lc3NhZ2UgcmVnaXN0cmF0
aW9uOihOU1VSTCAqKXJlZ2lzdHJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShib29s
IHdhc1Byb2Nlc3NlZCkpY29tcGxldGlvbkhhbmRsZXIKKy0odm9pZClfZ2V0UGVuZGluZ1B1c2hN
ZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlcgogewogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGQ6Om9wdGlvbmFsPFNw
YW48Y29uc3QgdWludDhfdD4+IGRhdGE7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAgICAgIGRhdGEg
PSBTcGFuPGNvbnN0IHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
bWVzc2FnZS5ieXRlcyksIG1lc3NhZ2UubGVuZ3RoIH07Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUt
Pm5ldHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5z
ZXNzaW9uSUQoKSwgZGF0YSwgcmVnaXN0cmF0aW9uLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtl
QmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
KF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1
c2hNZXNzYWdlPiYgbWVzc2FnZXMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtb
TlNNdXRhYmxlQXJyYXkgYWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgpXSk7
CisgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQorICAgICAgICAgICAgW3Jl
c3VsdCBhZGRPYmplY3Q6bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CisKKyAgICAgICAgY29tcGxl
dGlvbkhhbmRsZXIocmVzdWx0LmdldCgpKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCistKHZvaWQp
X3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEaWN0aW9uYXJ5ICopcHVzaE1lc3NhZ2VEaWN0aW9uYXJ5
IGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wgd2FzUHJvY2Vzc2VkKSljb21wbGV0aW9u
SGFuZGxlcgoreworI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBhdXRvIHB1c2hNZXNz
YWdlID0gV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZnJvbURpY3Rpb25hcnkocHVzaE1lc3NhZ2VE
aWN0aW9uYXJ5KTsKKyAgICBpZiAoIXB1c2hNZXNzYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF93ZWJzaXRlRGF0
YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLnByb2Nlc3NQdXNoTWVzc2FnZShfd2Vic2l0ZURhdGFT
dG9yZS0+c2Vzc2lvbklEKCksICpwdXNoTWVzc2FnZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFr
ZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0gKGJvb2wgd2FzUHJvY2Vzc2VkKSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKHdhc1Byb2Nlc3NlZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
U3RvcmVQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVN0b3JlUHJpdmF0ZS5oCmluZGV4IGExMmM2ZWMyMGE4My4uMTFmMDZmMjQ0YzA4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlUHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKQEAgLTEwOCw3ICsxMDgsOCBAQCB0eXBlZGVmIE5T
X09QVElPTlMoTlNVSW50ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewog
LSAodm9pZClfY291bnROb25EZWZhdWx0U2Vzc2lvblNldHM6KHZvaWQoXikoc2l6ZV90KSljb21w
bGV0aW9uSGFuZGxlcjsKIAogLShib29sKV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2
aXR5Rm9yVGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwotLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopZGF0YSByZWdp
c3RyYXRpb246KE5TVVJMICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4p
KGJvb2wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CistKHZvaWQpX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6KHZv
aWQoXikoTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClf
cHJvY2Vzc1B1c2hNZXNzYWdlOihOU0RpY3Rpb25hcnkgKilwdXNoTWVzc2FnZSBjb21wbGV0aW9u
SGFuZGxlcjoodm9pZCheKShib29sKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9kZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlP
cmlnaW4gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogLSh2b2lkKV9nZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoo
dm9pZCheKShOU1NldDxXS1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmNwcAppbmRleCBlYzliMzUzNzZiOWEuLjBmNmJjOTU0ZDg0MSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwCkBAIC0xNjg0LDEyICsxNjg0LDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6
ZGlkRXhjZWVkTWVtb3J5TGltaXQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCi12b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0
YSwgY29uc3QgVVJMJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGlwY0Rh
dGE7Ci0gICAgaWYgKGRhdGEpCi0gICAgICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2Ug
eyBkYXRhLT5kYXRhKCksIGRhdGEtPnNpemUoKSB9OwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwg
aXBjRGF0YSwgcmVnaXN0cmF0aW9uVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzIHsgc2Vzc2lvbklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwor
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVzc2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQoreworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVz
c2FnZSB7IHNlc3Npb25JRCwgcHVzaE1lc3NhZ2UgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA0NDFiODZl
MTg5YzIuLmVjMDljMzZmZTA1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBj
bGFzcyBXZWJzaXRlRGF0YVR5cGUgOiB1aW50MzJfdDsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwog
c3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFJlc291cmNl
TG9hZEluZm87CitzdHJ1Y3QgV2ViUHVzaE1lc3NhZ2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiBz
dHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRlcnM7CiAKQEAgLTI3Miw3ICsyNzMsOCBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIHBy
b2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0
IHVpbnQ4X3Q+PiwgY29uc3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1By
b2Nlc3NlZCk+JiYpOworICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+
Jik+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25z
dCBXZWJQdXNoTWVzc2FnZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNz
ZWQpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVn
aXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDhiNGE0NmQw
MzNjMS4uYmU3YWQzODE5ZTZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTEwMzMsNiArMTAzMywxMyBAQAogCQk1MTdCNUY4NDI3NUU5
N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIg
LyogTW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gKi87IH07CiAJCTUxN0I1Rjg1Mjc1RTk3QjYw
MDJEQzIyRCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1NDI3NEI4ODcxMDA1NjczODggLyogQXBwQnVuZGxl
UmVxdWVzdC5oICovOyB9OwogCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTE2MEU5NUYyNzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5t
bSAqLzsgfTsKKwkJNTE3QjVGOTUyNzVFQkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVz
dGluZy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QjVGOTQyNzVFQkE2MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICovOyB9Owor
CQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0I1Rjk2Mjc1RUM1RTUwMDJE
QzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovOyB9OworCQk1MTdCNUY5OTI3NUVDNjAxMDAyREMy
MkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVz
c2FnZUNvY29hLm1tICovOyB9OworCQk1MTdCNUY5QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1l
bnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gMUEzRDYxMDQxM0E3RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsK
KwkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTU3OUY5MjcxN0FGNTAw
MEVENTI4MCAvKiBEYWVtb25VdGlsaXRpZXMubW0gKi87IH07CisJCTUxN0I1RjlDMjc1RjNDMzcw
MDJEQzIyRCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTU3OUU4MjcxNzJBOEEwMEVENTI4MCAvKiBEYWVtb25FbmNv
ZGVyLmNwcCAqLzsgfTsKKwkJNTE3QjVGOUUyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUu
dGJkIGluIEZyYW1ld29ya3MgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QjVGOUQyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUudGJkICovOyB9OwogCQk1MTdDRjBF
MzE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
N0NGMEUxMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVT
dG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYg
LyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07
CiAJCTUxN0NGMEU0MTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTE3Q0YwRTIxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3Nh
Z2VzLmggKi87IH07CkBAIC00NDA3LDYgKzQ0MTQsMTAgQEAKIAkJNTE3QjVGNkIyNzVBRTUwQjAw
MkRDMjJEIC8qIHdlYnB1c2h0b29sLmVudGl0bGVtZW50cyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQucGxpc3Qu
ZW50aXRsZW1lbnRzOyBuYW1lID0gd2VicHVzaHRvb2wuZW50aXRsZW1lbnRzOyBwYXRoID0gUmVz
b3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50czsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3QjVGNzIyNzVFOTYwOTAwMkRDMjJEIC8qIFdlYlB1c2hEYWVtb25NYWluLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlB1c2hEYWVtb25NYWluLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxN0I1Rjc3Mjc1RTk3OTUwMDJEQzIyRCAvKiB3ZWJw
dXNoZC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSB3ZWJwdXNoZC5j
cHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0I1Rjk0Mjc1RUJBNjIwMDJEQzIy
RCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CisJCTUxN0I1Rjk2Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJQdXNoTWVzc2FnZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MTdCNUY5ODI3NUVDNjAwMDAyREMyMkQgLyogV2ViUHVzaE1lc3Nh
Z2VDb2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlB1
c2hNZXNzYWdlQ29jb2EubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0I1RjlE
Mjc1RjNGNTQwMDJEQzIyRCAvKiBsaWJpY3Vjb3JlLnRiZCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9ICJzb3VyY2Vjb2RlLnRleHQtYmFzZWQtZHlsaWIt
ZGVmaW5pdGlvbiI7IG5hbWUgPSBsaWJpY3Vjb3JlLnRiZDsgcGF0aCA9IHVzci9saWIvbGliaWN1
Y29yZS50YmQ7IHNvdXJjZVRyZWUgPSBTREtST09UOyB9OwogCQk1MTdDRjBFMTE2M0E0ODZDMDBD
Mjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlv
bk1lc3NhZ2VSZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcDsgc291cmNlVHJlZSA9IEJVSUxU
X1BST0RVQ1RTX0RJUjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBGIC8qIENhY2hlU3Rv
cmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VS
ZWNlaXZlci5jcHA7IHBhdGggPSBEZXJpdmVkU291cmNlcy9XZWJLaXQvQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBO
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMv
V2ViS2l0L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmg7IHNvdXJjZVRyZWUgPSBC
VUlMVF9QUk9EVUNUU19ESVI7IH07CkBAIC02NDcyLDYgKzY0ODMsNyBAQAogCQkJaXNhID0gUEJY
RnJhbWV3b3Jrc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3Owog
CQkJZmlsZXMgPSAoCisJCQkJNTE3QjVGOUUyNzVGM0Y1NDAwMkRDMjJEIC8qIGxpYmljdWNvcmUu
dGJkIGluIEZyYW1ld29ya3MgKi8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0
cHJvY2Vzc2luZyA9IDA7CiAJCX07CkBAIC03MTMzLDYgKzcxNDUsNyBAQAogCQkJCUUxOEM5MkYz
MTJEQjlFNzEwMENGMkFFQiAvKiBQcmludEluZm8uY3BwICovLAogCQkJCUUxQ0MxQjhFMTJEN0VB
REYwMDYyNTgzOCAvKiBQcmludEluZm8uaCAqLywKIAkJCQk0NjNGRDQ4MTFFQjk0RUFEMDBBMjk4
MkMgLyogUHJvY2Vzc1Rlcm1pbmF0aW9uUmVhc29uLmggKi8sCisJCQkJNTE3QjVGOTQyNzVFQkE2
MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICovLAogCQkJCTlCMTIyOUQwMjNG
RjJBNUUwMDhDQTc1MSAvKiBSZW1vdGVBdWRpb0Rlc3RpbmF0aW9uSWRlbnRpZmllci5oICovLAog
CQkJCTcyMDM0NDlCMjZBNkM0NzYwMDBBNUY1NCAvKiBSZW5kZXJpbmdVcGRhdGVJRC5oICovLAog
CQkJCTVDQjdBRkU2MjNDNjgxQjAwMEU0OUNGMyAvKiBSZXNvdXJjZUxvYWRJbmZvLmggKi8sCkBA
IC03MjM5LDYgKzcyNTIsNyBAQAogCQkJCTQ2N0U0M0U3MjI0M0ZGNkQwMEIxMzkyNCAvKiBXZWJQ
cm9jZXNzRGF0YVN0b3JlUGFyYW1ldGVycy5oICovLAogCQkJCTUxN0I1RjJEMjc1NzM4MkEwMDJE
QzIyRCAvKiBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCAqLywKIAkJCQk1
MTJDRDY5OTI3MjFGMDQ5MDBGN0Y4RUMgLyogV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oICovLAor
CQkJCTUxN0I1Rjk2Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZS5oICovLAogCQkJ
CTVDOEREMzdGMUZFNDUxOTIwMEYyQTU1NiAvKiBXZWJzaXRlQXV0b3BsYXlQb2xpY3kuaCAqLywK
IAkJCQk1QzhERDM4MTFGRTQ1NUNBMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UXVpcmsuaCAq
LywKIAkJCQk1MTFGN0QzRjFFQjFCQ0VFMDBFNDdCODMgLyogV2Vic2l0ZURhdGFTdG9yZVBhcmFt
ZXRlcnMuY3BwICovLApAQCAtODkzNSw2ICs4OTQ5LDcgQEAKIAkJCQk3QUYyMzYyMjFFNzlBNDMx
MDA0MzhBMDUgLyogV2ViRXJyb3JzQ29jb2EubW0gKi8sCiAJCQkJNDY1MjUwRTUxRUNGNTJDRDAw
MjAyNUNCIC8qIFdlYktpdDJJbml0aWFsaXplQ29jb2EubW0gKi8sCiAJCQkJMURFMDc2RDkyNDYw
Q0NCRDAwQjIxMUU4IC8qIFdlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlc0NvY29hLm1tICovLAor
CQkJCTUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICov
LAogCQkJCTM3QzRDMDkyMTgxNEIzQUYwMDM2ODhCOSAvKiBXS05TQXJyYXkuaCAqLywKIAkJCQkz
N0M0QzA5MTE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5Lm1tICovLAogCQkJCTM3M0NFQUQ0
MTg1NDE3QUUwMDhDMzYzRCAvKiBXS05TRGF0YS5oICovLApAQCAtOTY5Nyw2ICs5NzEyLDcgQEAK
IAkJNTc1MEYzMjkyMDMyRDRFMzAwMzg5MzQ3IC8qIEZyYW1ld29ya3MgKi8gPSB7CiAJCQlpc2Eg
PSBQQlhHcm91cDsKIAkJCWNoaWxkcmVuID0gKAorCQkJCTUxN0I1RjlEMjc1RjNGNTQwMDJEQzIy
RCAvKiBsaWJpY3Vjb3JlLnRiZCAqLywKIAkJCQk1N0E5RkYxNTI1MkM2QUVGMDA2QTIwNDAgLyog
bGliV1RGLmEgKi8sCiAJCQkJNTc1MEYzMkEyMDMyRDRFNTAwMzg5MzQ3IC8qIExvY2FsQXV0aGVu
dGljYXRpb24uZnJhbWV3b3JrICovLAogCQkJCTU3MERBQUIwMjMwMjczRDIwMEU4RkMwNCAvKiBO
ZWFyRmllbGQuZnJhbWV3b3JrICovLApAQCAtMTMwMDYsNiArMTMwMjIsNyBAQAogCQkJCTUzMjE1
OTU2MURCQUU3MkQwMDU0QUEzQyAvKiBOZXR3b3JrRGF0YVRhc2tDb2NvYS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODM5OTAyMDMxQkU5QTAyQjAwMEYzNjUzIC8qIE5ldHdvcmtMb2FkLmggaW4gSGVh
ZGVycyAqLywKIAkJCQk4M0Q0NTRENzFCRTlEM0M0MDA2QzkzQkQgLyogTmV0d29ya0xvYWRDbGll
bnQuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQ
dXNoTWVzc2FnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODM5MTQ5NjUxQkVBODM4NTAwRDJEOTUz
IC8qIE5ldHdvcmtMb2FkUGFyYW1ldGVycy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ3RkM4QTAy
NUI4MzMxQzAwNTQ5NUZDIC8qIE5ldHdvcmtMb2FkU2NoZWR1bGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MTQ1MjZFRDI3MUUxNjQ3MDAwNDY3QjYgLyogTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuaCBpbiBIZWFkZXJzICovLApAQCAtMTM1MTIsNiArMTM1MjksNyBAQAogCQkJCTkzNTZGMkRD
MjE1MkI2QjUwMEU2RDVERiAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb24uaCBpbiBIZWFkZXJzICov
LAogCQkJCTUxN0E1MzEwMUY0N0E4NjIwMERDREMwQSAvKiBXZWJTV0NsaWVudENvbm5lY3Rpb25N
ZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDY2QkMwM0MxRkEyNjZEQTAwMkZBOUMxIC8q
IFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTdC
NUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0NjBGNDg5MDFGOTk2RjcxMDBDRjRCODcgLyogV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQzExQTlFQ0MyMTQwMzVG
ODAwQ0ZCMjBBIC8qIFdlYlN3aXRjaGluZ0dQVUNsaWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
OTM1NkYyREUyMTUyQjcxMDAwRTZENURGIC8qIFdlYlNXT3JpZ2luU3RvcmUuaCBpbiBIZWFkZXJz
ICovLApAQCAtMTUwNzUsNyArMTUwOTMsMTAgQEAKIAkJCWlzYSA9IFBCWFNvdXJjZXNCdWlsZFBo
YXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVzID0gKAorCQkJ
CTUxN0I1RjlBMjc1RjNBODYwMDJEQzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk1MTdCNUY2ODI3NUE5QTc4MDAyREMyMkQgLyogV2ViUHVzaFRvb2xDb25uZWN0
aW9uLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3QjVGOUIyNzVGM0E5ODAwMkRDMjJEIC8qIERh
ZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlDMjc1RjNDMzcwMDJE
QzIyRCAvKiBEYWVtb25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1RjY1Mjc1
QThEN0YwMDJEQzIyRCAvKiBXZWJQdXNoVG9vbE1haW4ubW0gaW4gU291cmNlcyAqLywKIAkJCSk7
CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKQEAgLTE1MTcxLDYg
KzE1MTkyLDcgQEAKIAkJCQlDREE5M0RCMTIyRjhCQ0Y0MDA0OTBBNjkgLyogRnVsbHNjcmVlblRv
dWNoU2VjaGV1cmlzdGljUGFyYW1ldGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlDMUExNTJE
NzI0RTVBMjlBMDA5NzhDOEIgLyogSGFuZGxlWFBDRW5kcG9pbnRNZXNzYWdlcy5tbSBpbiBTb3Vy
Y2VzICovLAogCQkJCTI3NDlGNjQ0MjE0NjU2MUIwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZU5v
ZGVIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3QjVGOTkyNzVFQzYwMTAwMkRDMjJE
IC8qIFdlYlB1c2hNZXNzYWdlQ29jb2EubW0gaW4gU291cmNlcyAqLywKIAkJCQkyNzQ5RjY0NTIx
NDY1NjFFMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQk5QkY1RUM2NDI1NDExNDU2MDA5ODRFNzcgLyogSlNJUENCaW5kaW5nLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUMxNEQzN0ZFMjRBQ0UwODYwMDdGRjAxNCAvKiBMYXVuY2hTZXJ2
aWNlc0RhdGFiYXNlTWFuYWdlci5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDc2MDUzZWZjMmQ5MS4uN2ZhNDNm
ZDllMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoKIAogICAgIGNvbnN0IFN0cmluZyYgaG9zdEFw
cENvZGVTaWduaW5nSWRlbnRpZmllcigpOwogICAgIGJvb2wgaG9zdEFwcEhhc1B1c2hFbnRpdGxl
bWVudCgpOworICAgIGJvb2wgaG9zdEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVudCgpOwogCiAg
ICAgYm9vbCBkZWJ1Z01vZGVJc0VuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVu
YWJsZWQ7IH0KICAgICB2b2lkIHNldERlYnVnTW9kZUlzRW5hYmxlZChib29sKTsKQEAgLTc1LDYg
Kzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1heWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVz
dCgpOwogICAgIHZvaWQgc2V0SG9zdEFwcEF1ZGl0VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYpOwogCisgICAgYm9vbCBob3N0SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciopOworCiAg
ICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAg
c3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBtX2hvc3RBcHBBdWRpdFRva2VuOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KaW5kZXggNDVjNDFh
ZmUxOTAzLi5mODllZjI4MjNiYTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNo
Q2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODksMTUgKzg5LDI0IEBAIGNvbnN0IFN0cmluZyYgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpCiAKIGJvb2wgQ2xp
ZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCgpCiB7Ci0gICAgaWYgKCFt
X2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpIHsKLSAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRp
dFRva2VuKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICBtX2hvc3RBcHBIYXNQ
dXNoRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0bGVtZW50KCptX2hvc3RBcHBBdWRpdFRva2Vu
LCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2giKTsKLSAgICB9CisgICAgaWYgKCFt
X2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpCisgICAgICAgIG1faG9zdEFwcEhhc1B1c2hFbnRp
dGxlbWVudCA9IGhvc3RIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUud2Via2l0Lndl
YnB1c2giX3MpOwogCiAgICAgcmV0dXJuICptX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQ7CiB9
CiAKK2Jvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVu
dCgpCit7CisgICAgcmV0dXJuIGhvc3RIYXNFbnRpdGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUu
d2Via2l0LndlYnB1c2guaW5qZWN0Il9zKTsKK30KKworYm9vbCBDbGllbnRDb25uZWN0aW9uOjpo
b3N0SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciogZW50aXRsZW1lbnQpCit7CisgICAgaWYgKCFt
X2hvc3RBcHBBdWRpdFRva2VuKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdU
Rjo6aGFzRW50aXRsZW1lbnQoKm1faG9zdEFwcEF1ZGl0VG9rZW4sIGVudGl0bGVtZW50KTsKK30K
Kwogdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQogewogICAgIGlmIChlbmFibGVkID09IG1fZGVidWdNb2RlRW5hYmxlZCkKQEAgLTExMiw5
ICsxMjEsOSBAQCB2b2lkIENsaWVudENvbm5lY3Rpb246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShj
b25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgU3RyaW5nIG1lc3NhZ2VJZGVudGlmaWVyOwogICAg
IGF1dG8gc2lnbmluZ0lkZW50aWZlciA9IGhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsK
ICAgICBpZiAoc2lnbmluZ0lkZW50aWZlci5pc0VtcHR5KCkpCi0gICAgICAgIG1lc3NhZ2VJZGVu
dGlmaWVyID0gbWFrZVN0cmluZyAoIlsoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRf
dD4obV94cGNDb25uZWN0aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJj
YXNlKSwgIildICIpOworICAgICAgICBtZXNzYWdlSWRlbnRpZmllciA9IG1ha2VTdHJpbmcoIlso
MHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0aW9uLmdldCgp
KSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJjYXNlKSwgIildICIpOwogICAgIGVsc2UK
LSAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nICgiWyIsIHNpZ25pbmdJZGVu
dGlmZXIsICIgKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVj
dGlvbi5nZXQoKSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsK
KyAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKCJbIiwgc2lnbmluZ0lkZW50
aWZlciwgIiAoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0
aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJjYXNlKSwgIildICIpOwog
CiAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNz
YWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcobWVzc2FnZUlkZW50aWZpZXIsIG1lc3NhZ2UpKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLmgKaW5kZXggMmExMmNhMzQ0M2U0
Li4zM2NjZDUzNjQ2MzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBA
IC0yNiw4ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQdXNoQ2xpZW50Q29u
bmVjdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIgogI2luY2x1ZGUg
IldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYlB1
c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgorI2luY2x1
ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgpAQCAtNDAsNiArNDMsNyBAQCBu
YW1lc3BhY2UgSlNDIHsKIGVudW0gY2xhc3MgTWVzc2FnZUxldmVsIDogdWludDhfdDsKIH0KIAor
dXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOwogdXNpbmcgV2Vi
S2l0OjpXZWJQdXNoRDo6V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uOwogCiBu
YW1lc3BhY2UgV2ViUHVzaEQgewpAQCAtNjIsNiArNjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBk
ZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKENsaWVudENvbm5lY3Rpb24qLCBj
b25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBT
dHJpbmcmKT4mJiByZXBseVNlbmRlcik7CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQo
Q2xpZW50Q29ubmVjdGlvbiosIGJvb2wpOwogICAgIHZvaWQgdXBkYXRlQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiosIGNvbnN0IFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29uZmlndXJhdGlvbiYpOworICAgIHZvaWQgaW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nKENs
aWVudENvbm5lY3Rpb24qLCBjb25zdCBQdXNoTWVzc2FnZUZvclRlc3RpbmcmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMo
Q2xpZW50Q29ubmVjdGlvbiosIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YktpdDo6V2ViUHVzaE1lc3NhZ2U+Jik+JiYgcmVwbHlTZW5kZXIpOwogCiAgICAgdm9pZCBicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogCkBA
IC03NSw2ICs4MSw4IEBAIHByaXZhdGU6CiAKICAgICBDbGllbnRDb25uZWN0aW9uKiB0b0NsaWVu
dENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7CiAgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlv
bl90LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+IG1fY29ubmVjdGlvbk1hcDsKKworICAgIEhhc2hN
YXA8U3RyaW5nLCBEZXF1ZTxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+PiBtX3Rlc3RpbmdQdXNoTWVz
c2FnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGZkN2IyNTAwNTA5Yi4uNDI0MjZiZTRiNmE1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291
cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCkBAIC03MCw2ICs3MCwxMSBAQCBB
UkdVTUVOVFMoU3RyaW5nKQogUkVQTFkoYm9vbCkKIEVORAogCitGVU5DVElPTihnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKQorQVJHVU1FTlRTKCkKK1JFUExZKGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiYpCitFTkQKKwogRlVOQ1RJT04oc2V0RGVidWdNb2RlSXNFbmFibGVkKQog
QVJHVU1FTlRTKGJvb2wpCiBFTkQKQEAgLTc4LDYgKzgzLDExIEBAIEZVTkNUSU9OKHVwZGF0ZUNv
bm5lY3Rpb25Db25maWd1cmF0aW9uKQogQVJHVU1FTlRTKFdlYlB1c2hEYWVtb25Db25uZWN0aW9u
Q29uZmlndXJhdGlvbikKIEVORAogCitGVU5DVElPTihpbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rp
bmcpCitBUkdVTUVOVFMoUHVzaE1lc3NhZ2VGb3JUZXN0aW5nKQorUkVQTFkoYm9vbCkKK0VORAor
CiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdVTUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTEx
LDYgKzEyMSwyMCBAQCBXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlm
aWNhdGlvblBlcm1pc3Npb246OmVuY29kZVJlcGx5KGJvb2wgcgogICAgIHJldHVybiBlbmNvZGVy
LnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGluamVjdFB1c2hN
ZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkoYm9vbCByZXBseSkKK3sKKyAgICBXZWJLaXQ6
OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0
dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2Ug
Z2V0UGVuZGluZ1B1c2hNZXNzYWdlczo6ZW5jb2RlUmVwbHkoY29uc3QgVmVjdG9yPFdlYktpdDo6
V2ViUHVzaE1lc3NhZ2U+JiByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBl
bmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1
ZmZlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBNZXNzYWdlSW5mbwogCiB0ZW1wbGF0ZTx0eXBl
bmFtZSBJbmZvPgpAQCAtMjMzLDYgKzI1NywxMiBAQCB2b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFu
ZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIE1lc3NhZ2VUeXBlIG1lcwog
ICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgogICAg
ICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2U8TWVzc2FnZUluZm86OnVwZGF0ZUNvbm5lY3Rpb25D
b25maWd1cmF0aW9uPihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSk7CiAgICAgICAg
IGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGlu
ZzoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNzYWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjpp
bmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc+KGNsaWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNz
YWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVz
c2FnZVR5cGU6OkdldFBlbmRpbmdQdXNoTWVzc2FnZXM6CisgICAgICAgIGhhbmRsZVdlYlB1c2hE
TWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oY2xp
ZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UsIFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0yOTcsNiArMzI3LDU1IEBAIHZvaWQgRGFlbW9u
Ojp1cGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbihDbGllbnRDb25uZWN0aW9uKiBjbGllbnRD
b25uZWN0aW9uLCBjCiAgICAgY2xpZW50Q29ubmVjdGlvbi0+dXBkYXRlQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAKK3ZvaWQgRGFlbW9uOjppbmplY3RQdXNoTWVz
c2FnZUZvclRlc3RpbmcoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgY29uc3QgUHVzaE1l
c3NhZ2VGb3JUZXN0aW5nJiBtZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IHJlcGx5U2VuZGVyKQoreworICAgIGlmICghY29ubmVjdGlvbi0+aG9zdEFwcEhhc1B1c2hJbmpl
Y3RFbnRpdGxlbWVudCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVz
c2FnZSgiQXR0ZW1wdGluZyB0byBpbmplY3QgYSBwdXNoIG1lc3NhZ2UgZnJvbSBhbiB1bmVudGl0
bGVkIHByb2Nlc3MiKTsKKyAgICAgICAgcmVwbHlTZW5kZXIoZmFsc2UpOworICAgICAgICByZXR1
cm47CisgICAgfQorCisgICAgaWYgKG1lc3NhZ2UudGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyLmlzRW1wdHkoKSB8fCAhbWVzc2FnZS5yZWdpc3RyYXRpb25VUkwuaXNWYWxpZCgpKSB7Cisg
ICAgICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZSgiQXR0ZW1wdGluZyB0byBp
bmplY3QgYW4gaW52YWxpZCBwdXNoIG1lc3NhZ2UiKTsKKyAgICAgICAgcmVwbHlTZW5kZXIoZmFs
c2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29ubmVjdGlvbi0+YnJvYWRjYXN0
RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcoIkluamVjdGVkIGEgdGVzdCBwdXNoIG1lc3Nhc2dlIGZv
ciAiLCBtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllciwgIiBhdCAiLCBtZXNz
YWdlLnJlZ2lzdHJhdGlvblVSTC5zdHJpbmcoKSkpOworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2Fz
dERlYnVnTWVzc2FnZShtZXNzYWdlLm1lc3NhZ2UpOworCisgICAgYXV0byBhZGRSZXN1bHQgPSBt
X3Rlc3RpbmdQdXNoTWVzc2FnZXMuZW5zdXJlKG1lc3NhZ2UudGFyZ2V0QXBwQ29kZVNpZ25pbmdJ
ZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVybiBEZXF1ZTxQdXNoTWVzc2FnZUZvclRlc3Rp
bmc+IHsgfTsKKyAgICB9KTsKKyAgICBhZGRSZXN1bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZCht
ZXNzYWdlKTsKKworICAgIHJlcGx5U2VuZGVyKHRydWUpOworfQorCit2b2lkIERhZW1vbjo6Z2V0
UGVuZGluZ1B1c2hNZXNzYWdlcyhDbGllbnRDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYpPiYm
IHJlcGx5U2VuZGVyKQoreworICAgIGF1dG8gaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9
IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsKKyAgICBpZiAoaG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllci5pc0VtcHR5KCkpIHsKKyAgICAgICAgcmVwbHlTZW5k
ZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiByZXN1bHRNZXNzYWdlczsKKworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rl
c3RpbmdQdXNoTWVzc2FnZXMuZmluZChob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKTsKKyAg
ICBpZiAoaXRlcmF0b3IgIT0gbV90ZXN0aW5nUHVzaE1lc3NhZ2VzLmVuZCgpKSB7CisgICAgICAg
IGZvciAoYXV0byYgbWVzc2FnZSA6IGl0ZXJhdG9yLT52YWx1ZSkgeworICAgICAgICAgICAgYXV0
byBkYXRhID0gbWVzc2FnZS5tZXNzYWdlLnV0ZjgoKTsKKyAgICAgICAgICAgIHJlc3VsdE1lc3Nh
Z2VzLmFwcGVuZChXZWJLaXQ6OldlYlB1c2hNZXNzYWdlIHsgVmVjdG9yPHVpbnQ4X3Q+IHsgcmVp
bnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZGF0YS5kYXRhKCkpLCBkYXRhLmxlbmd0aCgp
IH0sIG1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMIH0pOworICAgICAgICB9CisgICAgICAgIG1fdGVz
dGluZ1B1c2hNZXNzYWdlcy5yZW1vdmUoaXRlcmF0b3IpOworICAgIH0KKworICAgIGNvbm5lY3Rp
b24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtlU3RyaW5nKCJGZXRjaGluZyAiLCBTdHJpbmc6
Om51bWJlcihyZXN1bHRNZXNzYWdlcy5zaXplKCkpLCAiIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIp
KTsKKworICAgIHJlcGx5U2VuZGVyKFdURk1vdmUocmVzdWx0TWVzc2FnZXMpKTsKK30KKwogQ2xp
ZW50Q29ubmVjdGlvbiogRGFlbW9uOjp0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25f
dCBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY2xpZW50Q29ubmVjdGlvbiA9IG1fY29ubmVjdGlv
bk1hcC5nZXQoY29ubmVjdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaAppbmRleCBmZjYyMzZiN2Jl
ZTcuLmJlMmYxNzk5MWM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJw
dXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1
c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oCkBAIC0yNSwxMSArMjUsMTUg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCIK
ICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUg
PHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkv
ZGFyd2luL1hQQ1NQSS5oPgogCit1c2luZyBXZWJLaXQ6OldlYlB1c2hEOjpQdXNoTWVzc2FnZUZv
clRlc3Rpbmc7CisKIG5hbWVzcGFjZSBXZWJQdXNoVG9vbCB7CiAKIGVudW0gY2xhc3MgQWN0aW9u
IHsKQEAgLTU0LDE5ICs1OCwyNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIGNvbm5lY3RUb1NlcnZp
Y2UoKTsKIAorICAgIHZvaWQgc2V0UHVzaE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNz
YWdlRm9yVGVzdGluZz4mJiBtZXNzYWdlKSB7IG1fcHVzaE1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3Nh
Z2UpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBtZXNzYWdlUmVjZWl2ZWQoeHBjX29iamVjdF90
KTsKICAgICB2b2lkIGNvbm5lY3Rpb25Ecm9wcGVkKCk7CiAKICAgICB2b2lkIHN0YXJ0QWN0aW9u
KCk7CiAgICAgdm9pZCBzdGFydERlYnVnU3RyZWFtQWN0aW9uKCk7CisgICAgdm9pZCBzZW5kUHVz
aE1lc3NhZ2UoKTsKIAogICAgIHZvaWQgc2VuZEF1ZGl0VG9rZW4oKTsKLSAgICAKKwogICAgIEFj
dGlvbiBtX2FjdGlvbjsKICAgICBib29sIG1fcmVjb25uZWN0IHsgZmFsc2UgfTsKICAgICBSZXRh
aW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25uZWN0aW9uOwogICAgIGNvbnN0IGNoYXIqIG1f
c2VydmljZU5hbWU7CisKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
PiBtX3B1c2hNZXNzYWdlOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaFRvb2wKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25u
ZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9v
bENvbm5lY3Rpb24ubW0KaW5kZXggYmRlNGU1NGUxMWUwLi5hNDMzNGQ2NDYzNzcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0
aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRv
b2xDb25uZWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw5IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNp
bXBvcnQgIldlYlB1c2hUb29sQ29ubmVjdGlvbi5oIgogCisjaW1wb3J0ICJEYWVtb25FbmNvZGVy
LmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25D
b25zdGFudHMuaCIKICNpbXBvcnQgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW1wb3J0IDxtYWNoL3Rh
c2suaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvU2VydmVyc1NQSS5oPgpAQCAtMTE4LDYgKzEy
MSwyNiBAQCB2b2lkIENvbm5lY3Rpb246OnN0YXJ0QWN0aW9uKCkKICAgICAgICAgc3RhcnREZWJ1
Z1N0cmVhbUFjdGlvbigpOwogICAgICAgICBicmVhazsKICAgICB9OworCisgICAgaWYgKG1fcHVz
aE1lc3NhZ2UpCisgICAgICAgIHNlbmRQdXNoTWVzc2FnZSgpOworfQorCit2b2lkIENvbm5lY3Rp
b246OnNlbmRQdXNoTWVzc2FnZSgpCit7CisgICAgQVNTRVJUKG1fcHVzaE1lc3NhZ2UpOworCisg
ICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8ICptX3B1
c2hNZXNzYWdlOworCisgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFy
eV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91
aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgV2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9u
S2V5LCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3ZhbHVlKGRpY3Rpb25hcnkuZ2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnBy
b3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdlYktpdDo6dmVjdG9yVG9YUENEYXRhKGVuY29kZXIu
dGFrZUJ1ZmZlcigpKS5nZXQoKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0
aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbE1lc3NhZ2VUeXBlS2V5LCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oV2ViS2l0OjpXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkluamVj
dFB1c2hNZXNzYWdlRm9yVGVzdGluZykpOworCisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpLCBkaXNw
YXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKHhwY19vYmplY3RfdCByZXN1bHRNZXNzYWdlKSB7Cisg
ICAgICAgIC8vIFRoaXMgcmVwbHkgaGFuZGxlciBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKKyAg
ICB9KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpzdGFydERlYnVnU3RyZWFtQWN0aW9uKCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xN
YWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbE1h
aW4ubW0KaW5kZXggNjJmNjc4ZjlmZDY2Li5hNTg3OTU5OGRhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1tCkBAIC0y
NCwxMSArMjQsMTQgQEAKICAqLwogCiAjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIlB1c2hN
ZXNzYWdlRm9yVGVzdGluZy5oIgogI2ltcG9ydCAiV2ViUHVzaFRvb2xDb25uZWN0aW9uLmgiCiAj
aW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24uaD4KICNpbXBvcnQgPG9wdGlvbmFsPgogI2lt
cG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1l
c3NhZ2VGb3JUZXN0aW5nOworCiBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQogc3RhdGlj
IHZvaWQgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShOU1N0cmluZyAqbWVzc2FnZSkKIHsKQEAgLTM2
LDE1ICszOSw0MyBAQCBzdGF0aWMgdm9pZCBwcmludFVzYWdlQW5kVGVybWluYXRlKE5TU3RyaW5n
ICptZXNzYWdlKQogCiAgICAgZnByaW50ZihzdGRlcnIsICJVc2FnZTogd2VicHVzaHRvb2wgW29w
dGlvbnNdXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7Ci0gICAgZnByaW50ZihzdGRl
cnIsICIgIC0tZGV2ZWxvcG1lbnQgICAgICAgICAgICAgIENvbm5lY3RzIHRvIG1hY2ggc2Vydmlj
ZSBcIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZVwiIChEZWZhdWx0KVxuIik7
Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC0tcHJvZHVjdGlvbiAgICAgICAgICAgICAgIENvbm5l
Y3RzIHRvIG1hY2ggc2VydmljZSBcImNvbS5hcHBsZS53ZWJraXQud2VicHVzaGQuc2VydmljZVwi
XG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1zdHJlYW1EZWJ1Z01lc3NhZ2VzICAgICAg
U3RyZWFtIGRlYnVnIG1lc3NhZ2VzIGZyb20gd2VicHVzaGRcbiIpOwotICAgIGZwcmludGYoc3Rk
ZXJyLCAiICAtLXJlY29ubmVjdCAgICAgICAgICAgICAgICBSZWNvbm5lY3QgYWZ0ZXIgY29ubmVj
dGlvbiBpcyBsb3N0XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1kZXZlbG9wbWVudFxu
Iik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgQ29ubmVjdHMgdG8gbWFjaCBzZXJ2aWNlIFwi
b3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlXCIgKERlZmF1bHQpXG4iKTsKKyAg
ICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1wcm9kdWN0aW9uXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVy
ciwgIiAgICBDb25uZWN0cyB0byBtYWNoIHNlcnZpY2UgXCJjb20uYXBwbGUud2Via2l0LndlYnB1
c2hkLnNlcnZpY2VcIlxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tc3RyZWFtRGVidWdN
ZXNzYWdlc1xuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgU3RyZWFtIGRlYnVnIG1lc3Nh
Z2VzIGZyb20gd2VicHVzaGRcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXJlY29ubmVj
dFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgUmVjb25uZWN0IGFmdGVyIGNvbm5lY3Rp
b24gaXMgbG9zdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tcHVzaCA8dGFyZ2V0IGFw
cCBpZGVudGlmaWVyPiA8cmVnaXN0cmF0aW9uIFVSTD4gPG1lc3NhZ2U+XG4iKTsKKyAgICBmcHJp
bnRmKHN0ZGVyciwgIiAgICBJbmplY3QgYSB0ZXN0IHB1c2ggbWVzc2FzZ2UgdG8gdGhlIHRhcmdl
dCBhcHAgYW5kIHJlZ2lzdHJhdGlvbiBVUkxcbiIpOwogICAgIGZwcmludGYoc3RkZXJyLCAiXG4i
KTsKIAogICAgIGV4aXQoLTEpOwogfQogCitzdGF0aWMgc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNz
YWdlRm9yVGVzdGluZz4gcHVzaE1lc3NhZ2VGcm9tQXJndW1lbnRzKE5TRW51bWVyYXRvcjxOU1N0
cmluZyAqPiAqZW51bWVyYXRvcikKK3sKKyAgICBOU1N0cmluZyAqYXBwSWRlbnRpZmllciA9IFtl
bnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgIGlmICghYXBwSWRlbnRpZmllcikKKyAgICAgICAg
cmV0dXJuIG51bGxwdHI7CisKKyAgICBOU1N0cmluZyAqcmVnaXN0cmF0aW9uU3RyaW5nID0gW2Vu
dW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgaWYgKCFyZWdpc3RyYXRpb25TdHJpbmcpCisgICAg
ICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNVUkwgKnJlZ2lzdHJhdGlvblVSTCA9IFtOU1VS
TCBVUkxXaXRoU3RyaW5nOnJlZ2lzdHJhdGlvblN0cmluZ107CisgICAgaWYgKCFyZWdpc3RyYXRp
b25VUkwpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2Ug
PSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJl
dHVybiBudWxscHRyOworCisgICAgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nIHB1c2hNZXNzYWdlID0g
eyBhcHBJZGVudGlmaWVyLCByZWdpc3RyYXRpb25VUkwsIG1lc3NhZ2UgfTsKKyAgICByZXR1cm4g
bWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hlY2s8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPihX
VEZNb3ZlKHB1c2hNZXNzYWdlKSk7Cit9CisKIGludCBtYWluKGludCwgY29uc3QgY2hhciAqKikK
IHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhyZWFkKCk7CkBAIC01MiwxMyArODMsMTYgQEAg
aW50IG1haW4oaW50LCBjb25zdCBjaGFyICoqKQogICAgIGF1dG8gcHJlZmVyVGVzdFNlcnZpY2Ug
PSBXZWJQdXNoVG9vbDo6UHJlZmVyVGVzdFNlcnZpY2U6OlllczsKICAgICBhdXRvIHJlY29ubmVj
dCA9IFdlYlB1c2hUb29sOjpSZWNvbm5lY3Q6Ok5vOwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHVz
aFRvb2w6OkFjdGlvbj4gYWN0aW9uOworICAgIHN0ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZv
clRlc3Rpbmc+IHB1c2hNZXNzYWdlOwogCiAgICAgQGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAg
IE5TQXJyYXkgKmFyZ3VtZW50cyA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gYXJndW1l
bnRzXTsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5jb3VudCA9PSAxKQogICAgICAgICAgICAgcHJp
bnRVc2FnZUFuZFRlcm1pbmF0ZShAIk5vIGFyZ3VtZW50cyBwcm92aWRlZCIpOwogCi0gICAgICAg
IGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGluIFthcmd1bWVudHMgc3ViYXJyYXlXaXRoUmFuZ2U6
TlNNYWtlUmFuZ2UoMSwgYXJndW1lbnRzLmNvdW50IC0gMSldKSB7CisgICAgICAgIE5TRW51bWVy
YXRvcjxOU1N0cmluZyAqPiAqZW51bWVyYXRvciA9IFtbYXJndW1lbnRzIHN1YmFycmF5V2l0aFJh
bmdlOk5TTWFrZVJhbmdlKDEsIGFyZ3VtZW50cy5jb3VudCAtIDEpXSBvYmplY3RFbnVtZXJhdG9y
XTsKKyAgICAgICAgTlNTdHJpbmcgKmFyZ3VtZW50ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF07
CisgICAgICAgIHdoaWxlIChhcmd1bWVudCkgewogICAgICAgICAgICAgaWYgKFthcmd1bWVudCBp
c0VxdWFsVG9TdHJpbmc6QCItLXByb2R1Y3Rpb24iXSkKICAgICAgICAgICAgICAgICBwcmVmZXJU
ZXN0U2VydmljZSA9IFdlYlB1c2hUb29sOjpQcmVmZXJUZXN0U2VydmljZTo6Tm87CiAgICAgICAg
ICAgICBlbHNlIGlmIChbYXJndW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLS1kZXZlbG9wbWVudCJd
KQpAQCAtNjcsMTUgKzEwMSwyNCBAQCBpbnQgbWFpbihpbnQsIGNvbnN0IGNoYXIgKiopCiAgICAg
ICAgICAgICAgICAgYWN0aW9uID0gV2ViUHVzaFRvb2w6OkFjdGlvbjo6U3RyZWFtRGVidWdNZXNz
YWdlczsKICAgICAgICAgICAgIGVsc2UgaWYgKFthcmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCIt
LXJlY29ubmVjdCJdKQogICAgICAgICAgICAgICAgIHJlY29ubmVjdCA9IFdlYlB1c2hUb29sOjpS
ZWNvbm5lY3Q6OlllczsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGVsc2UgaWYgKFth
cmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXB1c2giXSkgeworICAgICAgICAgICAgICAgIHB1
c2hNZXNzYWdlID0gcHVzaE1lc3NhZ2VGcm9tQXJndW1lbnRzKGVudW1lcmF0b3IpOworICAgICAg
ICAgICAgICAgIGlmICghcHVzaE1lc3NhZ2UpCisgICAgICAgICAgICAgICAgICAgIHByaW50VXNh
Z2VBbmRUZXJtaW5hdGUoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnZhbGlkIHB1c2gg
YXJndW1lbnRzIHNwZWNpZmllZCJdKTsKKyAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAg
ICAgIHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoW05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJ
bnZhbGlkIG9wdGlvbiBwcm92aWRlZDogJUAiLCBhcmd1bWVudF0pOworCisgICAgICAgICAgICBh
cmd1bWVudCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOwogICAgICAgICB9CiAgICAgfQogCi0g
ICAgaWYgKCFhY3Rpb24pCisgICAgaWYgKCFhY3Rpb24gJiYgIXB1c2hNZXNzYWdlKQogICAgICAg
ICBwcmludFVzYWdlQW5kVGVybWluYXRlKEAiTm8gYWN0aW9uIHByb3ZpZGVkIik7CiAKICAgICBh
dXRvIGNvbm5lY3Rpb24gPSBXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6Y3JlYXRlKCphY3Rpb24s
IHByZWZlclRlc3RTZXJ2aWNlLCByZWNvbm5lY3QpOworICAgIGlmIChwdXNoTWVzc2FnZSkKKyAg
ICAgICAgY29ubmVjdGlvbi0+c2V0UHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZSkpOwor
CiAgICAgY29ubmVjdGlvbi0+Y29ubmVjdFRvU2VydmljZSgpOwogCiAgICAgQ0ZSdW5Mb29wUnVu
KCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXgg
ZDE1OTZjMTUwZmE4Li4wZjI0MWE3ZDJhMjAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZwor
KysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAyMS0xMi0wOCAgQnJhZHkg
RWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgQWRkIGFiaWxpdHkgdG8gaW5q
ZWN0IG1lc3NhZ2VzIGludG8gd2VicHVzaGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzMzk4OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2Vi
S2l0QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1
cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50czoKKyAgICAg
ICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50
aXRsZW1lbnRzOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9Q
dXNoQVBJLm1tOgorICAgICAgICAobWVzc2FnZURpY3Rpb25hcnkpOgorCisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6Y3JlYXRlTWVzc2FnZURpY3Rpb25hcnkpOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6c2VuZE1lc3NhZ2VUb0RhZW1vbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpz
ZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KToKKyAgICAgICAgKFRlc3RXZWJLaXRB
UEk6OnNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4pOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6Y3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSk6CisgICAgICAgIChU
ZXN0V2ViS2l0QVBJOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVT
VCk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisKIDIwMjEtMTItMDYgIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHdlYnB1c2hkL3dlYnB1c2h0b29sIGRl
YnVnZ2luZyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmln
dXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKaW5kZXgg
MmZkMGVhZjI1MWFlLi4xZTVlODdhMjlhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRs
ZW1lbnRzCkBAIC0xMiw2ICsxMiw4IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnByaXZh
dGUud2Via2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUucHJpdmF0
ZS53ZWJraXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiAJPGtleT5jb20uYXBwbGUu
cHJpdmF0ZS54cGMubGF1bmNoZC5qb2ItbWFuYWdlcjwva2V5PgogCTxzdHJpbmc+VGVzdFdlYktp
dEFQSTwvc3RyaW5nPgogPC9kaWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50cyBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy1p
bnRlcm5hbC5lbnRpdGxlbWVudHMKaW5kZXggZjZmNTRlMTc0MjVmLi42ZmMyNGM0YTA0NTYgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50cwpA
QCAtNiw2ICs2LDggQEAKIAk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0cmluZz4KIAk8a2V5PmNv
bS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29t
LmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxr
ZXk+Y29tLmFwcGxlLmhpZC5tYW5hZ2VyLnVzZXItYWNjZXNzLWRldmljZTwva2V5PgogCTx0cnVl
Lz4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLmhpZC5jbGllbnQuZXZlbnQtZmlsdGVyPC9rZXk+
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJL
aXRBUEktbWFjT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cwppbmRleCA5ZTYxMTc2NDlhY2Qu
LmNjOTYyMTA0YTM0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzCkBA
IC0xMCw2ICsxMCw4IEBACiAJPC9hcnJheT4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0
LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5
LnRlbXBvcmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxs
b3cgbWFjaC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1
b3Q7Y29tLmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1t
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4
IGM0YTczNjRkNzU0Yy4uYjY3Mjk2NzhhZjk5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNCw2ICszNCwxNCBAQAogI2ltcG9y
dCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9f
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogCitzdGF0aWMgTlNEaWN0aW9uYXJ5
ICptZXNzYWdlRGljdGlvbmFyeShOU0RhdGEgKmRhdGEsIE5TVVJMICpyZWdpc3RyYXRpb24pCit7
CisgICAgcmV0dXJuIEB7CisgICAgICAgIEAiV2ViS2l0UHVzaERhdGEiIDogZGF0YSwKKyAgICAg
ICAgQCJXZWJLaXRQdXNoUmVnaXN0cmF0aW9uVVJMIiA6IHJlZ2lzdHJhdGlvbgorICAgIH07Cit9
CisKIHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwogCiBAaW50ZXJmYWNlIFB1c2hBUElN
ZXNzYWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNz
YWdlSGFuZGxlcj4KQEAgLTE0Niw3ICsxNTQsOCBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZl
bnQpCiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgTlNTdHJpbmcgKm1l
c3NhZ2UgPSBAIlN3ZWV0IFBvdGF0b2VzIjsKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2
ZWQ6IFN3ZWV0IFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxl
dGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworCisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNp
dGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3Nh
Z2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVl
c3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIHB1
c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNz
ZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMTYwLDcgKzE2OSw3IEBAIFRFU1QoUHVzaEFQSSwgZmly
ZVB1c2hFdmVudCkKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBtZXNz
YWdlID0gQCJSb3R0ZW4gUG90YXRvZXMiOwogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWNlaXZl
ZDogUm90dGVuIFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhT
dHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxl
dGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdl
IGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0
KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2Vk
ID0gdHJ1ZTsKICAgICB9XTsKQEAgLTIzNCw3ICsyNDMsNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQ
dXNoRXZlbnRXaXRoTm9QYWdlc1N1Y2Nlc3NmdWwpCiAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQg
PSBmYWxzZTsKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBOU1N0cmlu
ZyAqbWVzc2FnZSA9IEAiU3dlZXQgUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJhdGlvbiB3ZWJz
aXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkg
VVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tjb25maWd1cmF0
aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25h
cnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAg
ICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3Nh
Z2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMjc5LDcgKzI4OCw3IEBAIFRFU1QoUHVz
aEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzRmFpbCkKICAgICBwdXNoTWVzc2FnZVByb2Nl
c3NlZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOwogICAgIE5T
U3RyaW5nICptZXNzYWdlID0gQCJSb3R0ZW4gUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2lu
Z0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1
ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tjb25m
aWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURp
Y3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rpbmdd
LCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0
KSB7CiAgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVz
aE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMzMyLDcgKzM0MSw3IEBAIFRF
U1QoUHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzVGltZW91dCkKICAgICBwdXNoTWVz
c2FnZVByb2Nlc3NlZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNl
OwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJUaW1lbGVzcyBQb3RhdG9lcyI7Ci0gICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3Nh
Z2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJhdGlvbjpb
c2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsK
KyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2Fn
ZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4o
Ym9vbCByZXN1bHQpIHsKICAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0Owog
ICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CiAgICAgfV07CmRpZmYgLS1naXQg
YS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0g
Yi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0K
aW5kZXggNzNmNGMyOGY4OTUwLi4xZWYxMWM2NmZlYWMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI2LDYg
KzI2LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0
ICJUZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgpAQCAt
MzUsNyArMzYsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUu
aD4KICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxX
ZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KLSNpbXBvcnQgPGFycmF5
PgogI2ltcG9ydCA8bWFjaC9tYWNoX2luaXQuaD4KICNpbXBvcnQgPG1hY2gvdGFzay5oPgogCkBA
IC0xNjIsNiArMTYyLDgxIEBAIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVzaEQoTlNVUkwg
KnRlbXBEaXIpCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogfQogCitzdGF0aWMgUmV0YWluUHRy
PHhwY19vYmplY3RfdD4gY3JlYXRlTWVzc2FnZURpY3Rpb25hcnkodWludDhfdCBtZXNzYWdlVHlw
ZSwgY29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFy
eSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsK
KyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksICJwcm90b2Nv
bCB2ZXJzaW9uIiwgMSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5
LmdldCgpLCAibWVzc2FnZSB0eXBlIiwgbWVzc2FnZVR5cGUpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBtZXNzYWdlLmRh
dGEoKSwgbWVzc2FnZS5zaXplKCkpOworICAgIHJldHVybiBXVEZNb3ZlKGRpY3Rpb25hcnkpOwor
fQorCisvLyBVc2VzIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gdGhlIGRhZW1vbiBmb3IgYSBv
bmUtb2ZmIG1lc3NhZ2UKK3ZvaWQgc2VuZE1lc3NhZ2VUb0RhZW1vbih4cGNfY29ubmVjdGlvbl90
IGNvbm5lY3Rpb24sIHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYg
bWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVNZXNzYWdlRGljdGlvbmFy
eShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdl
KGNvbm5lY3Rpb24sIGRpY3Rpb25hcnkuZ2V0KCkpOworfQorCisvLyBVc2VzIGFuIGV4aXN0aW5n
IGNvbm5lY3Rpb24gdG8gdGhlIGRhZW1vbiBmb3IgYSBvbmUtb2ZmIG1lc3NhZ2UsIHdhaXRpbmcg
Zm9yIHRoZSByZXBseQordm9pZCBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHhw
Y19jb25uZWN0aW9uX3QgY29ubmVjdGlvbiwgdWludDhfdCBtZXNzYWdlVHlwZSwgY29uc3QgVmVj
dG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGNyZWF0ZU1l
c3NhZ2VEaWN0aW9uYXJ5KG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKworICAgIF9fYmxvY2sgYm9v
bCBkb25lID0gZmFsc2U7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVw
bHkoY29ubmVjdGlvbiwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUo
KSwgXih4cGNfb2JqZWN0X3QgcmVxdWVzdCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
KTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK3N0YXRpYyB2
b2lkIHNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4oeHBjX2Nvbm5lY3Rpb25fdCBjb25u
ZWN0aW9uKQoreworICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAsIDAsIDAsIDAs
IDAsIDAgfTsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGF1ZGl0VG9rZW5Db3VudCA9IFRB
U0tfQVVESVRfVE9LRU5fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2lu
Zm8obWFjaF90YXNrX3NlbGYoKSwgVEFTS19BVURJVF9UT0tFTiwgKHRhc2tfaW5mb190KSgmdG9r
ZW4pLCAmYXVkaXRUb2tlbkNvdW50KTsKKyAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykg
eworICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICAvLyBTZW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBhdWRpdCB0b2tlbgorICAgIHsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKDQyKTsKKyAgICAgICAgZW5jb2RlZE1l
c3NhZ2UuZmlsbCgwKTsKKyAgICAgICAgZW5jb2RlZE1lc3NhZ2VbMV0gPSAxOworICAgICAgICBl
bmNvZGVkTWVzc2FnZVsyXSA9IDMyOworICAgICAgICBtZW1jcHkoJmVuY29kZWRNZXNzYWdlWzEw
XSwgJnRva2VuLCBzaXplb2YodG9rZW4pKTsKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbihj
b25uZWN0aW9uLCA2LCBlbmNvZGVkTWVzc2FnZSk7CisgICAgfQorfQorCitSZXRhaW5QdHI8eHBj
X2Nvbm5lY3Rpb25fdD4gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZShjb25z
dCBjaGFyKiBzZXJ2aWNlTmFtZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBhZG9wdE5TKHhw
Y19jb25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2Uoc2VydmljZU5hbWUsIGRpc3BhdGNoX2dl
dF9tYWluX3F1ZXVlKCksIDApKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxl
cihjb25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCkgeyB9KTsKKyAgICB4cGNfY29ubmVj
dGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpKTsKKyAgICBzZW5kQ29uZmlndXJhdGlvbldp
dGhBdWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgcmV0dXJuIFdURk1vdmUoY29u
bmVjdGlvbik7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlU3RyaW5nKGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobWVzc2FnZS5pczhCaXQoKSk7CisgICAg
VmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdChtZXNzYWdlLmxlbmd0aCgpICsgNSk7CisgICAgcmVzdWx0
WzBdID0gKG1lc3NhZ2UubGVuZ3RoKCkgJiAweDAwMDAwMDAwMDAwMDAwRkYpOworICAgIHJlc3Vs
dFsxXSA9IChtZXNzYWdlLmxlbmd0aCgpICYgMHgwMDAwMDAwMDAwMDBGRjAwKSA+PiA4OworICAg
IHJlc3VsdFsyXSA9IChtZXNzYWdlLmxlbmd0aCgpICYgMHgwMDAwMDAwMDAwRkYwMDAwKSA+PiAx
NjsKKyAgICByZXN1bHRbM10gPSAobWVzc2FnZS5sZW5ndGgoKSAmIDB4MDAwMDAwMDBGRjAwMDAw
MCkgPj4gMjQ7CisgICAgcmVzdWx0WzRdID0gMHgwMTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IG1lc3NhZ2UubGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVzdWx0WzUgKyBpXSA9IG1lc3Nh
Z2VbaV07CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiAvLyBGSVhNRTogUmUtZW5hYmxlIHRo
aXMgdGVzdCBvbiBNYWMgb25jZSB3ZWJraXQub3JnLzIzMjg1NyBpcyByZXNvbHZlZC4KICNpZiBQ
TEFURk9STShNQUMpCiBURVNUKFdlYlB1c2hELCBESVNBQkxFRF9CYXNpY0NvbW11bmljYXRpb24p
CkBAIC0xOTYsNDQgKzI3MSwyMCBAQCBURVNUKFdlYlB1c2hELCBCYXNpY0NvbW11bmljYXRpb24p
CiAgICAgfSk7CiAKICAgICB4cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgp
KTsKLQotICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAg
fTsKLSAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGF1ZGl0VG9rZW5Db3VudCA9IFRBU0tfQVVE
SVRfVE9LRU5fQ09VTlQ7Ci0gICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFj
aF90YXNrX3NlbGYoKSwgVEFTS19BVURJVF9UT0tFTiwgKHRhc2tfaW5mb190KSgmdG9rZW4pLCAm
YXVkaXRUb2tlbkNvdW50KTsKLSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykgewotICAg
ICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAv
LyBTZW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBhdWRpdCB0b2tlbgotICAgIHsKLSAgICAgICAgc3Rk
OjphcnJheTx1aW50OF90LCA0Mj4gZW5jb2RlZE1lc3NhZ2U7Ci0gICAgICAgIGVuY29kZWRNZXNz
YWdlLmZpbGwoMCk7Ci0gICAgICAgIGVuY29kZWRNZXNzYWdlWzFdID0gMTsKLSAgICAgICAgZW5j
b2RlZE1lc3NhZ2VbMl0gPSAzMjsKLSAgICAgICAgbWVtY3B5KCZlbmNvZGVkTWVzc2FnZVsxMF0s
ICZ0b2tlbiwgc2l6ZW9mKHRva2VuKSk7Ci0gICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0
TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICAgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVy
c2lvbiIsIDEpOwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnku
Z2V0KCksICJtZXNzYWdlIHR5cGUiLCA2KTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Rh
dGEoZGljdGlvbmFyeS5nZXQoKSwgImVuY29kZWQgbWVzc2FnZSIsIGVuY29kZWRNZXNzYWdlLmRh
dGEoKSwgZW5jb2RlZE1lc3NhZ2Uuc2l6ZSgpKTsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2Vu
ZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIH0KKyAg
ICBzZW5kQ29uZmlndXJhdGlvbldpdGhBdWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0KCkpOwogCiAg
ICAgLy8gRW5hYmxlIGRlYnVnIG1lc3NhZ2VzLCBhbmQgd2FpdCBmb3IgdGhlIHJlc3VsdGluZyBk
ZWJ1ZyBtZXNzYWdlCiAgICAgewogICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgICAgIHN0ZDo6
YXJyYXk8dWludDhfdCwgMT4gZW5jb2RlZE1lc3NhZ2UgeyAxIH07Ci0gICAgICAgIHhwY19kaWN0
aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgInByb3RvY29sIHZlcnNpb24iLCAx
KTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAi
bWVzc2FnZSB0eXBlIiwgNSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rp
b25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBlbmNvZGVkTWVzc2FnZS5kYXRhKCksIGVu
Y29kZWRNZXNzYWdlLnNpemUoKSk7Ci0KLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNz
YWdlKGNvbm5lY3Rpb24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgICAgICBWZWN0b3I8
dWludDhfdD4gZW5jb2RlZE1lc3NhZ2UoMSk7CisgICAgICAgIGVuY29kZWRNZXNzYWdlWzBdID0g
MTsKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbihjb25uZWN0aW9uLmdldCgpLCA1LCBlbmNv
ZGVkTWVzc2FnZSk7CiAgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAg
ICAgfQogCiAgICAgLy8gRWNobyBhbmQgd2FpdCBmb3IgYSByZXBseQogICAgIGF1dG8gZGljdGlv
bmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDAp
KTsKLSAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDEwPiBlbmNvZGVkU3RyaW5nIHsgNSwgMCwgMCwg
MCwgMSwgJ2gnLCAnZScsICdsJywgJ2wnLCAnbycgfTsKKyAgICBhdXRvIGVuY29kZWRTdHJpbmcg
PSBlbmNvZGVTdHJpbmcoImhlbGxvIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChk
aWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVyc2lvbiIsIDEpOwogICAgIHhwY19kaWN0aW9u
YXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIsIDEpOwogICAg
IHhwY19kaWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3Nh
Z2UiLCBlbmNvZGVkU3RyaW5nLmRhdGEoKSwgZW5jb2RlZFN0cmluZy5zaXplKCkpOwpAQCAtMzQx
LDYgKzM5MiwxNDAgQEAgVEVTVChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAg
Y2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAorc3RhdGljIGNvbnN0IGNo
YXIqIG1haW5TV0J5dGVzID0gUiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyht
c2cpCit7CisgICAgd2luZG93LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2Uo
bXNnKTsKK30KKworY29uc3QgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworY2hhbm5l
bC5wb3J0MS5vbm1lc3NhZ2UgPSAoZXZlbnQpID0+IGxvZyhldmVudC5kYXRhKTsKKworbmF2aWdh
dG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oKHJlZ2lzdHJhdGlvbikg
PT4geworICAgIGlmIChyZWdpc3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlv
bi5hY3RpdmUucG9zdE1lc3NhZ2Uoe3BvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0
Ml0pOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5p
bnN0YWxsaW5nOworICAgIHdvcmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1
bmN0aW9uKCkgeworICAgICAgICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQorICAg
ICAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5u
ZWwucG9ydDJdKTsKKyAgICB9KTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9n
KCJSZWdpc3RyYXRpb24gZmFpbGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKKzwvc2NyaXB0Pgor
KVNXUkVTT1VSQ0UiOworCitzdGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVT
T1VSQ0UoCitsZXQgcG9ydDsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVu
dCkgPT4geworICAgIHBvcnQgPSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2Fn
ZSgiUmVhZHkiKTsKK30pOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9
PiB7CisgICAgdHJ5IHsKKyAgICAgICAgaWYgKCFldmVudC5kYXRhKSB7CisgICAgICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJSZWNlaXZlZDogbnVsbCBkYXRhIik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKyAgICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRhLnRleHQoKTsK
KyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6ICIgKyB2YWx1ZSk7CisgICAgICAg
IGlmICh2YWx1ZSAhPSAnU3dlZXQgUG90YXRvZXMnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVu
dGlsKFByb21pc2UucmVqZWN0KCdJIHdhbnQgc3dlZXQgcG90YXRvZXMnKSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJHb3QgZXhjZXB0aW9uICIgKyBlKTsK
KyAgICB9Cit9KTsKKylTV1JFU09VUkNFIjsKKworc3RhdGljIHZvaWQgY2xlYXJXZWJzaXRlRGF0
YVN0b3JlKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpCit7CisgICAgX19ibG9jayBib29sIGNs
ZWFyZWRTdG9yZSA9IGZhbHNlOworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdIHJlbW92ZURhdGFPZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURh
dGFUeXBlc10gbW9kaWZpZWRTaW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFu
ZGxlcjpeKCkgeworICAgICAgICBjbGVhcmVkU3RvcmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmY2xlYXJlZFN0b3JlKTsKK30KKworLy8gRklYTUU6IFJl
LWVuYWJsZSB0aGlzIHRlc3Qgb24gTWFjIG9uY2Ugd2Via2l0Lm9yZy8yMzI4NTcgaXMgcmVzb2x2
ZWQuCisjaWYgUExBVEZPUk0oTUFDKQorVEVTVChXZWJQdXNoRCwgRElTQUJMRURfSGFuZGxlSW5q
ZWN0ZWRQdXNoKQorI2Vsc2UKK1RFU1QoV2ViUHVzaEQsIEhhbmRsZUluamVjdGVkUHVzaCkKKyNl
bmRpZgoreworICAgIFtXS1dlYnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRz
Rm9yQWxsT3JpZ2luc107CisKKyAgICBOU1VSTCAqdGVtcERpcmVjdG9yeSA9IHNldFVwVGVzdFdl
YlB1c2hEKCk7CisKKyAgICBhdXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtf
V0tXZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBkYXRhU3RvcmVDb25m
aWd1cmF0aW9uLmdldCgpLndlYlB1c2hNYWNoU2VydmljZU5hbWUgPSBAIm9yZy53ZWJraXQud2Vi
cHVzaHRlc3RkYWVtb24uc2VydmljZSI7CisgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQo
KS53ZWJQdXNoRGFlbW9uVXNlc01vY2tCdW5kbGVzRm9yVGVzdGluZyA9IFlFUzsKKyAgICBhdXRv
IGRhdGFTdG9yZSA9IGFkb3B0TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0
aENvbmZpZ3VyYXRpb246ZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0
byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRh
U3RvcmUuZ2V0KCk7CisgICAgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdl
YnNpdGVEYXRhU3RvcmVdKTsKKworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2Vz
IF9zZXROb3RpZmljYXRpb25zRW5hYmxlZDpZRVNdOworICAgIGZvciAoX1dLRXhwZXJpbWVudGFs
RmVhdHVyZSAqZmVhdHVyZSBpbiBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNd
KSB7CisgICAgICAgIGlmIChbZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQnVpbHRJbk5v
dGlmaWNhdGlvbnNFbmFibGVkIl0pCisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVy
ZW5jZXNdIF9zZXRFbmFibGVkOllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAg
IGF1dG8gbWVzc2FnZUhhbmRsZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9j
XSBpbml0XSk7CisgICAgW1tjb25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRk
U2NyaXB0TWVzc2FnZUhhbmRsZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07Cisg
ICAgX19ibG9jayBib29sIGRvbmUgPSBmYWxzZTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgYWRkTWVz
c2FnZTpAIlJlYWR5IiB3aXRoSGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAIlJlY2VpdmVkOiBIZWxsbyBXb3Js
ZCIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBU
ZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5T
V0J5dGVzIH0gfSwKKyAgICAgICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJh
cHBsaWNhdGlvbi9qYXZhc2NyaXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfQorICAgIH0sIFRlc3RX
ZWJLaXRBUEk6OkhUVFBTZXJ2ZXI6OlByb3RvY29sOjpIdHRwKTsKKworICAgIGF1dG8gd2ViVmll
dyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgw
LCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAg
W3dlYlZpZXcgbG9hZFJlcXVlc3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEluamVj
dCBwdXNoIG1lc3NhZ2UKKyAgICBhdXRvIGVuY29kZWRNZXNzYWdlID0gZW5jb2RlU3RyaW5nKCJj
b20uYXBwbGUuV2ViS2l0LlRlc3RXZWJLaXRBUEkiKTsKKyAgICBlbmNvZGVkTWVzc2FnZS5hcHBl
bmRWZWN0b3IoZW5jb2RlU3RyaW5nKHNlcnZlci5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5n
KSk7CisgICAgZW5jb2RlZE1lc3NhZ2UuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZygiSGVsbG8g
V29ybGQiKSk7CisKKyAgICBhdXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmln
dXJlQ29ubmVjdGlvblRvU2VydmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2
aWNlIik7CisgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29u
bmVjdGlvbi5nZXQoKSwgNywgZW5jb2RlZE1lc3NhZ2UpOworCisgICAgLy8gRmV0Y2ggcHVzaCBt
ZXNzYWdlcworICAgIF9fYmxvY2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBt
ZXNzYWdlczsKKyAgICBbZGF0YVN0b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOl4oTlNBcnJh
eTxOU0RpY3Rpb25hcnkgKj4gKnJhd01lc3NhZ2VzKSB7CisgICAgICAgIG1lc3NhZ2VzID0gcmF3
TWVzc2FnZXM7CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0VR
KFttZXNzYWdlcyBjb3VudF0sIDF1KTsKKworICAgIC8vIEhhbmRsZSBwdXNoIG1lc3NhZ2UKKyAg
ICBfX2Jsb2NrIGJvb2wgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0
b3JlIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2VzIGZpcnN0T2JqZWN0XSBjb21wbGV0aW9u
SGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0g
dHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworCisgICAg
Y2xlYW5VcFRlc3RXZWJQdXNoRCh0ZW1wRGlyZWN0b3J5KTsKK30KKwogfSAvLyBuYW1lc3BhY2Ug
VGVzdFdlYktpdEFQSQogCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1Mp
CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBi
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGMyYjcxMTZl
MzBiNi4uMmNlNmU3YzkwYTU4IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29h
L1Rlc3RXS1dlYlZpZXcuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dl
YlZpZXcuaApAQCAtNzgsNiArNzgsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxl
ciA6IE5TT2JqZWN0IDxXS1NjcmlwdE1lc3NhZ2VIYW5kbGVyPgogLSAodm9pZClhZGRNZXNzYWdl
OihOU1N0cmluZyAqKW1lc3NhZ2Ugd2l0aEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxl
cjsKKy0gKHZvaWQpc2V0V2lsZGNhcmRNZXNzYWdlSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcg
KikpaGFuZGxlcjsKIEBlbmQKIAogQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IDogV0tXZWJWaWV3
Cg==
</data>
<flag name="review"
          id="471775"
          type_id="1"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446405</attachid>
            <date>2021-12-08 12:06:32 -0800</date>
            <delta_ts>2021-12-08 14:42:23 -0800</delta_ts>
            <desc>Patch v3</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>72716</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NmZGQ0NTFlMDEzLi5hNGVkZTE1ODNlMDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3ZlcmVkIGJ5
IEFQSSB0ZXN0cy4KKworICAgICAgICBUaGlzIHBhdGNoOgorICAgICAgICAgLSBBZGRzIFdLV2Vi
c2l0ZURhdGFTdG9yZSBTUEkgdG8gZmV0Y2ggcGVuZGluZyBwdXNoIG1lc3NhZ2VzIGZvciB0aGUg
ZW1iZWRkaW5nIGFwcGxpY2F0aW9uCisgICAgICAgICAtIEdpdmVzIHdlYnB1c2hkIGNvZGUgdG8g
aW5qZWN0IGEgcHVzaCBtZXNzYWdlIGZvciBhIGdpdmVuIGJ1bmRsZSBpZGVudGlmaWVyCisgICAg
ICAgICAtIEdpdmVzIHdlYnB1c2h0b29sIHRoZSBhYmlsaXR5IHRvIHNlbmQgb25lIG9mIHRoZXNl
IGZha2UgbWVzc2FnZXMKKyAgICAgICAgIC0gR2l2ZXMgd2VicHVzaHRvb2wgdGhlIGFiaWxpdHkg
dG8gcmVjb25uZWN0IHRvIHRoZSBuZXh0IGRhZW1vbiBpbnN0YW5jZSBhZnRlciB0aGUgY3VycmVu
dCBjb25uZWN0aW9uIGlzIGRyb3BwZWQKKyAgICAgICAgIC0gVGVzdHMgdGhlIGluamVjdGlvbiBh
bmQgZmV0Y2hpbmcgb2YgcHVzaCBtZXNzYWdlcyB2aWEgVGVzdFdlYktpdEFQSQorCisgICAgICAg
ICogQ29uZmlndXJhdGlvbnMvd2VicHVzaHRvb2wueGNjb25maWc6CisgICAgICAgICogV2ViS2l0
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogUmVzb3VyY2VzL3dlYnB1c2h0
b29sLmVudGl0bGVtZW50czoKKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNo
TWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oOgorICAg
ICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluOgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6UmVwbHlDYWxsZXI8VmVj
dG9yPFdlYlB1c2hNZXNzYWdlPjo6Y2FsbFJlcGx5KToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmg6CisKKyAgICAgICAg
KiBTaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbTogQ29waWVkIGZyb20gU291cmNl
L1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9uYXJ5KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U6OnRvRGljdGlvbmFyeSBjb25zdCk6CisKKyAgICAgICAg
KiBTaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJL
aXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaC4KKyAgICAgICAgKFdlYktpdDo6V2Vi
UHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZGVjb2RlKToKKworICAgICAg
ICAqIFNoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YlB1c2hEOjptZXNzYWdlVHlwZVNlbmRzUmVwbHkpOgorCisgICAgICAgICogU2hhcmVkL1dlYlB1
c2hNZXNzYWdlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRv
b2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmguCisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hNZXNz
YWdlOjplbmNvZGUgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZGVj
b2RlKToKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX2dldFBlbmRpbmdQdXNoTWVzc2Fn
ZXM6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdl
OmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtXS1dlYnNpdGVEYXRhU3RvcmUgX3By
b2Nlc3NQdXNoTWVzc2FnZTpyZWdpc3RyYXRpb246Y29tcGxldGlvbkhhbmRsZXI6XSk6IERlbGV0
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg6CisKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nl
c3NQdXNoTWVzc2FnZSk6CisgICAgICAgICogVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nl
c3NQcm94eS5oOgorXAorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmg6
CisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW06CisgICAgICAgIChX
ZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCk6Cisg
ICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hJbmplY3RF
bnRpdGxlbWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6aG9zdEhh
c0VudGl0bGVtZW50KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpicm9h
ZGNhc3REZWJ1Z01lc3NhZ2UpOgorCisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5o
OgorICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChXZWJQdXNo
RDo6TWVzc2FnZUluZm86OmluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHkp
OgorICAgICAgICAoV2ViUHVzaEQ6Ok1lc3NhZ2VJbmZvOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
OjplbmNvZGVSZXBseSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpkZWNvZGVBbmRIYW5k
bGVNZXNzYWdlKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmluamVjdFB1c2hNZXNzYWdl
Rm9yVGVzdGluZyk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29u
bmVjdGlvbi5oOgorICAgICAgICAoV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OnNldFB1c2hNZXNz
YWdlKToKKworICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVj
dGlvbi5tbToKKyAgICAgICAgKFdlYlB1c2hUb29sOjpDb25uZWN0aW9uOjpzdGFydEFjdGlvbik6
CisgICAgICAgIChXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6c2VuZFB1c2hNZXNzYWdlKToKKwor
ICAgICAgICAqIHdlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbToKKyAgICAg
ICAgKHByaW50VXNhZ2VBbmRUZXJtaW5hdGUpOgorICAgICAgICAocHVzaE1lc3NhZ2VGcm9tQXJn
dW1lbnRzKToKKyAgICAgICAgKG1haW4pOgorCiAyMDIxLTEyLTA2ICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJwdXNoZC93ZWJwdXNodG9vbCBkZWJ1Z2dp
bmcgYWRkaXRpb25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dl
YnB1c2h0b29sLnhjY29uZmlnIGIvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNo
dG9vbC54Y2NvbmZpZwppbmRleCA3MzcxYTMzNzM0ZjcuLjdjYjdmODVlYjZmNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1c2h0b29sLnhjY29uZmlnCkBAIC0y
OSw3ICsyOSw3IEBAIFNLSVBfSU5TVEFMTCA9IFlFUzsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05B
TUVTW3Nkaz1hcHBsZXR2Kl0gPSAqOwogRVhDTFVERURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPXdh
dGNoKl0gPSAqOwogCi1PVEhFUl9MREZMQUdTID0gLWwgV1RGIC1mcmFtZXdvcmsgRm91bmRhdGlv
biAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uOworT1RIRVJfTERGTEFHUyA9IC1mcmFtZXdvcmsg
V2ViS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENvcmUKIExJQlJBUllfU0VBUkNIX1BBVEhTID0g
JChCVUlMVF9QUk9EVUNUU19ESVIpOwogCiBDT0RFX1NJR05fRU5USVRMRU1FTlRTID0gUmVzb3Vy
Y2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5kZXggNDcyYzhiNTdjMzJjLi5kMTVjNTZiNmI4
ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xN
ZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlB1c2hNZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViUmVz
b3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5o
IgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVjdGlvbi5oIgpAQCAtMjU0NiwxMiArMjU0Nywy
MCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRTZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJvYwogICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpj
b25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKIH0KIAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qgc3RkOjpvcHRp
b25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBpcGNEYXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkws
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQ
cm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYg
Y2FsbGJhY2spCiB7Ci0gICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+IGRhdGE7Ci0g
ICAgaWYgKGlwY0RhdGEpCi0gICAgICAgIGRhdGEgPSBWZWN0b3I8dWludDhfdD4geyBpcGNEYXRh
LT5kYXRhKCksIGlwY0RhdGEtPnNpemUoKSB9OwotICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNz
aW9uSUQpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZNb3ZlKGRhdGEpLCBXVEZNb3ZlKHJlZ2lzdHJh
dGlvblVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsKKyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJ
Q0FUSU9OUykKKyAgICBpZiAoYXV0byogc2Vzc2lvbiA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25J
RCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+bm90aWZpY2F0aW9uTWFuYWdlcigpLmdldFBlbmRpbmdQ
dXNoTWVzc2FnZXMoV1RGTW92ZShjYWxsYmFjaykpOworICAgICAgICByZXR1cm47CisgICAgfQor
I2VuZGlmCisgICAgY2FsbGJhY2soeyB9KTsKK30KKwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJv
Y2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2Um
JiBwdXNoTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykK
K3sKKyAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vzc2lvbklEKS5wcm9jZXNzUHVzaE1lc3NhZ2Uo
V1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSksIFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0
cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCmluZGV4IDlkMzJkNTc5NzNhMC4uNmM2Mjc3MjIzYzQ0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCkBAIC0xMTcsNiArMTE3LDcgQEAg
ZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVzIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vi
c2l0ZURhdGFGZXRjaE9wdGlvbiA6IHVpbnQ4X3Q7CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlw
ZSA6IHVpbnQzMl90Owogc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwor
c3RydWN0IFdlYlB1c2hNZXNzYWdlOwogc3RydWN0IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
OwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpAQCAtMzk2LDcgKzM5Nyw4IEBAIHB1Ymxp
YzoKICAgICBib29sIGZ0cEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX2Z0cEVuYWJsZWQ7IH0K
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+
JiwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ2V0
UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQdXNoTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90
aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9j
ZXNzLm1lc3NhZ2VzLmluCmluZGV4IDMyYWIzODQwYjY2YS4uMjRmZTM4YjQyZDMwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVz
c2FnZXMuaW4KQEAgLTIwNiw3ICsyMDYsOCBAQCBtZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBM
ZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAg
ICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSwgVVJMIHJlZ2lzdHJhdGlvblVSTCkgLT4gKGJv
b2wgZGlkU3VjY2VlZCkgQXN5bmMKKyAgICBHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNz
YWdlcykgQXN5bmMKKyAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSBwdXNoTWVzc2FnZSkgLT4gKGJvb2wg
ZGlkU3VjY2VlZCkgQXN5bmMKICNlbmRpZgogICAgIERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25S
ZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKFN0cmluZyBlcnJvck1lc3NhZ2UpIEFzeW5jCiAg
ICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4g
b3JpZ2lucykgQXN5bmMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIuY3BwCmluZGV4IGRmZTE1MjJlMzYwZC4uMDY4YzNjOGUzYTkxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlv
bk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCiAjaW5jbHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNp
bmNsdWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRl
ICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRh
Lmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtODgsNiArODksMTUgQEAgdm9pZCBOZXR3b3Jr
Tm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVy
bWlzc2lvbnMoQ28KICAgICBzZW5kTWVzc2FnZVdpdGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5
cGU6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlvblBlcm1pc3Npb25zPihXVEZNb3Zl
KHJlcGx5SGFuZGxlcikpOwogfQogCit2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9y
PFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYmKT4gcmVwbHlIYW5kbGVyID0g
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8
V2ViUHVzaE1lc3NhZ2U+IG1lc3NhZ2VzKSBtdXRhYmxlIHsKKyAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoV1RGTW92ZShtZXNzYWdlcykpOworICAgIH07CisKKyAgICBzZW5kTWVzc2FnZVdpdGhS
ZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkdldFBlbmRpbmdQdXNoTWVzc2FnZXM+KFdURk1v
dmUocmVwbHlIYW5kbGVyKSk7Cit9CisKIHZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OnNob3dOb3RpZmljYXRpb24oY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgV2ViQ29yZTo6Tm90aWZpY2F0aW9u
RGlyZWN0aW9uLCBjb25zdCBTdHJpbmcmLCB1aW50NjRfdCkKIHsKICAgICBpZiAoIW1fY29ubmVj
dGlvbikKQEAgLTE4Niw2ICsxOTYsMTcgQEAgdGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8
VmVjdG9yPFN0cmluZz4mJj4gewogICAgIH0KIH07CiAKK3RlbXBsYXRlPD4gc3RydWN0IFJlcGx5
Q2FsbGVyPFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mJj4geworICAgIHN0YXRpYyB2b2lkIGNhbGxS
ZXBseShEYWVtb246OkRlY29kZXImJiBkZWNvZGVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJQdXNoTWVzc2FnZT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCisgICAgeworICAg
ICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4+IG1lc3NhZ2VzOworICAg
ICAgICBkZWNvZGVyID4+IG1lc3NhZ2VzOworICAgICAgICBpZiAoIW1lc3NhZ2VzKQorICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CisgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUoKm1lc3NhZ2VzKSk7CisgICAgfQorfTsKKwogdGVtcGxhdGU8V2ViUHVz
aEQ6Ok1lc3NhZ2VUeXBlIG1lc3NhZ2VUeXBlLCB0eXBlbmFtZS4uLiBBcmdzLCB0eXBlbmFtZS4u
LiBSZXBseUFyZ3M+CiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpzZW5kTWVzc2Fn
ZVdpdGhSZXBseShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlcGx5QXJncy4uLik+JiYgY29tcGxl
dGlvbkhhbmRsZXIsIEFyZ3MmJi4uLiBhcmdzKSBjb25zdAogewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0
d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaAppbmRleCA2ZjE2ODFhNzI1MWMuLmRmZmY1ZGJmMDIx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKQEAgLTI5
LDYgKzI5LDcgQEAKIAogI2luY2x1ZGUgIk5vdGlmaWNhdGlvbk1hbmFnZXJNZXNzYWdlSGFuZGxl
ci5oIgogI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25uZWN0aW9uLmgiCisjaW5jbHVkZSAiV2Vi
UHVzaE1lc3NhZ2UuaCIKICNpbmNsdWRlIDxXZWJDb3JlL05vdGlmaWNhdGlvbkRpcmVjdGlvbi5o
PgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCkBAIC01Miw2ICs1Myw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgZGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihj
b25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnN0IFN0cmluZyYpPiYmKTsKICAgICB2b2lkIGdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlm
aWNhdGlvblBlcm1pc3Npb25zKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4mKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVz
aE1lc3NhZ2VzKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNz
YWdlPiYpPiYmKTsKIAogcHJpdmF0ZToKICAgICBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcihO
ZXR3b3JrU2Vzc2lvbiYsIGNvbnN0IFN0cmluZyYgd2ViUHVzaE1hY2hTZXJ2aWNlTmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy93ZWJwdXNodG9vbC5lbnRpdGxlbWVu
dHMgYi9Tb3VyY2UvV2ViS2l0L1Jlc291cmNlcy93ZWJwdXNodG9vbC5lbnRpdGxlbWVudHMKaW5k
ZXggNjRhMGI1NmJjNTAwLi42MzI0ZjA1YWQ5NmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
UmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cworKysgYi9Tb3VyY2UvV2ViS2l0L1Jl
c291cmNlcy93ZWJwdXNodG9vbC5lbnRpdGxlbWVudHMKQEAgLTQsNSArNCw3IEBACiA8ZGljdD4K
IAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgor
CTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRy
dWUvPgogPC9kaWN0PgogPC9wbGlzdD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L0NvY29hL1dlYlB1c2hNZXNzYWdlQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2Nv
YS9XZWJQdXNoTWVzc2FnZUNvY29hLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMC4uMTY2ZTRhNmE5NTYwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9T
aGFyZWQvQ29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbQpAQCAtMCwwICsxLDYxIEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDEwLTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldlYlB1c2hNZXNzYWdl
LmgiCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4KKworbmFtZXNwYWNlIFdlYktpdCB7CisK
KyNkZWZpbmUgV2ViS2l0UHVzaERhdGFLZXkgQCJXZWJLaXRQdXNoRGF0YSIKKyNkZWZpbmUgV2Vi
S2l0UHVzaFJlZ2lzdHJhdGlvblVSTEtleSBAIldlYktpdFB1c2hSZWdpc3RyYXRpb25VUkwiCisK
K3N0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3NhZ2U+IFdlYlB1c2hNZXNzYWdlOjpmcm9tRGljdGlv
bmFyeShOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCit7CisgICAgTlNVUkwgKnVybCA9IFtkaWN0
aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRQdXNoUmVnaXN0cmF0aW9uVVJMS2V5XTsKKyAgICBp
ZiAoIXVybCB8fCAhW3VybCBpc0tpbmRPZkNsYXNzOltOU1VSTCBjbGFzc11dKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTlNEYXRhICpwdXNoRGF0YSA9IFtkaWN0aW9uYXJ5
IG9iamVjdEZvcktleTpXZWJLaXRQdXNoRGF0YUtleV07CisgICAgaWYgKCFwdXNoRGF0YSB8fCAh
W3B1c2hEYXRhIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAgICAgICBWZWN0b3I8dWludDhfdD4g
eyAoY29uc3QgdWludDhfdCopcHVzaERhdGEuYnl0ZXMsIHB1c2hEYXRhLmxlbmd0aCB9LAorICAg
ICAgICBVUkwgeyAoTlNVUkwgKil1cmwgfQorICAgIH0gfTsKK30KKworTlNEaWN0aW9uYXJ5ICpX
ZWJQdXNoTWVzc2FnZTo6dG9EaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAgICBhdXRvIG5zRGF0YSA9
IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cHVzaERhdGEuZGF0YSgpIGxl
bmd0aDpwdXNoRGF0YS5zaXplKCldKTsKKyAgICByZXR1cm4gQHsKKyAgICAgICAgV2ViS2l0UHVz
aERhdGFLZXkgOiBuc0RhdGEuZ2V0KCksCisgICAgICAgIFdlYktpdFB1c2hSZWdpc3RyYXRpb25V
UkxLZXkgOiAoTlNVUkwgKilyZWdpc3RyYXRpb25VUkwKKyAgICB9OworfQorCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1B1c2hNZXNzYWdl
Rm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5n
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYzc0N2UxNjI4MjYK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QdXNoTWVzc2FnZUZvclRl
c3RpbmcuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
bmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEIHsKKworc3RydWN0IFB1c2hNZXNzYWdlRm9yVGVzdGlu
ZyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNv
bnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPFB1
c2hNZXNzYWdlRm9yVGVzdGluZz4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFN0cmluZyB0YXJn
ZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7CisgICAgVVJMIHJlZ2lzdHJhdGlvblVSTDsKKyAg
ICBTdHJpbmcgbWVzc2FnZTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIFB1
c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7Cisg
ICAgZW5jb2RlciA8PCB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPDwgcmVnaXN0cmF0
aW9uVVJMIDw8IG1lc3NhZ2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9w
dGlvbmFsPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gUHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjpkZWNv
ZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGFyZ2V0
QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdGFyZ2V0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyOworICAgIGlmICghdGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVy
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxVUkw+
IHJlZ2lzdHJhdGlvblVSTDsKKyAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvblVSTDsKKyAgICBp
ZiAoIXJlZ2lzdHJhdGlvblVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOworICAgIGRlY29kZXIgPj4gbWVzc2FnZTsK
KyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciksCisgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvblVSTCksCisgICAgICAgIFdURk1vdmUo
Km1lc3NhZ2UpLAorICAgIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNo
RApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50
cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmluZGV4
IGE0ZGJjZDc3OTEyNC4uNTgwMmJiMDdjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
V2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gY2xhc3MgTWVz
c2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRp
b25QZXJtaXNzaW9ucywKICAgICBTZXREZWJ1Z01vZGVJc0VuYWJsZWQsCiAgICAgVXBkYXRlQ29u
bmVjdGlvbkNvbmZpZ3VyYXRpb24sCisgICAgSW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nLAor
ICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdlVHlw
ZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCkBAIC01MSw2ICs1Myw4IEBAIGlu
bGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSkK
ICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9uczoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZpY2F0
aW9uUmVnaXN0cmF0aW9uOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1Ob3Rp
ZmljYXRpb25QZXJtaXNzaW9uOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFBlbmRpbmdQdXNo
TWVzc2FnZXM6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0
aW5nOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXREZWJ1
Z01vZGVJc0VuYWJsZWQ6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VXBkYXRlQ29ubmVjdGlvbkNv
bmZpZ3VyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNoTWVz
c2FnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaE1lc3NhZ2UuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5ZTQzZjMzM2Q1NgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hNZXNzYWdlLmgKQEAgLTAsMCArMSw3
NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8b3B0aW9uYWw+Cisj
aW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworT0JKQ19DTEFT
UyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUHVzaE1l
c3NhZ2UgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXIm
KSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25h
bDxXZWJQdXNoTWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFZlY3Rvcjx1aW50OF90
PiBwdXNoRGF0YTsKKyAgICBVUkwgcmVnaXN0cmF0aW9uVVJMOworCisjaWYgUExBVEZPUk0oQ09D
T0EpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3NhZ2U+IGZyb21EaWN0aW9u
YXJ5KE5TRGljdGlvbmFyeSAqKTsKKyAgICBOU0RpY3Rpb25hcnkgKnRvRGljdGlvbmFyeSgpIGNv
bnN0OworI2VuZGlmCit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXZWJQdXNo
TWVzc2FnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2RlciA8
PCBwdXNoRGF0YSA8PCByZWdpc3RyYXRpb25VUkw7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29k
ZXI+CitzdGQ6Om9wdGlvbmFsPFdlYlB1c2hNZXNzYWdlPiBXZWJQdXNoTWVzc2FnZTo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhfdD4+
IHB1c2hEYXRhOworICAgIGRlY29kZXIgPj4gcHVzaERhdGE7CisgICAgaWYgKCFwdXNoRGF0YSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiBy
ZWdpc3RyYXRpb25VUkw7CisgICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb25VUkw7CisgICAgaWYg
KCFyZWdpc3RyYXRpb25VUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKnB1c2hEYXRhKSwKKyAgICAgICAgV1RGTW92ZSgq
cmVnaXN0cmF0aW9uVVJMKQorICAgIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0
YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURh
dGFTdG9yZS5tbQppbmRleCA3ZWYwNjk1MGFiMDcuLjYyOTY5MDc5ZDlkNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3Jl
Lm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgogI2lt
cG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdlUHJv
eHkuaCIKKyNpbXBvcnQgIldlYlB1c2hNZXNzYWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJjZUxv
YWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24uaCIK
ICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwuaCIK
QEAgLTc2MSwxMyArNzYyLDI5IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0YVJl
Y29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0dXJu
IF93ZWJzaXRlRGF0YVN0b3JlLT5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9y
VGVzdGluZygpOwogfQogCi0tKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKikgbWVz
c2FnZSByZWdpc3RyYXRpb246KE5TVVJMICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKGJvb2wgd2FzUHJvY2Vzc2VkKSljb21wbGV0aW9uSGFuZGxlcgorLSh2b2lkKV9n
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOih2b2lkKF4pKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICop
KWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHN0
ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0YTsKLSAgICBpZiAobWVzc2FnZSkK
LSAgICAgICAgZGF0YSA9IFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihtZXNzYWdlLmJ5dGVzKSwgbWVzc2FnZS5sZW5ndGggfTsKLSAgICBfd2Vi
c2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoX3dlYnNp
dGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBkYXRhLCByZWdpc3RyYXRpb24sIFtjb21wbGV0aW9u
SGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1Byb2Nl
c3NlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmdldFBlbmRp
bmdQdXNoTWVzc2FnZXMoX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVjdG9y
PFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+JiBtZXNzYWdlcykgeworICAgICAgICBhdXRvIHJlc3Vs
dCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTptZXNz
YWdlcy5zaXplKCldKTsKKyAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2FnZXMpCisg
ICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDptZXNzYWdlLnRvRGljdGlvbmFyeSgpXTsKKwor
ICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQuZ2V0KCkpOworICAgIH0pOworI2VuZGlm
Cit9CisKKy0odm9pZClfcHJvY2Vzc1B1c2hNZXNzYWdlOihOU0RpY3Rpb25hcnkgKilwdXNoTWVz
c2FnZURpY3Rpb25hcnkgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCB3YXNQcm9jZXNz
ZWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQorICAg
IGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpmcm9tRGljdGlvbmFy
eShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOworICAgIGlmICghcHVzaE1lc3NhZ2UpIHsKKyAgICAg
ICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNzYWdl
KF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9j
ZXNzZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzUHJvY2Vzc2VkKTsKICAgICB9
KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYTEyYzZlYzIwYTgzLi4x
MWYwNmYyNDRjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMTA4LDcgKzEwOCw4
IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3JlRmV0
Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9jb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0czoodm9pZChe
KShzaXplX3QpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtKGJvb2wpX2hhc1NlcnZpY2VXb3JrZXJC
YWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFD
X1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNE
YXRhKilkYXRhIHJlZ2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlvbkhh
bmRsZXI6KHZvaWQoXikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRSht
YWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClfZ2V0UGVuZGluZ1B1
c2hNZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOworLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGljdGlvbmFyeSAqKXB1c2hNZXNz
YWdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wpKWNvbXBsZXRpb25IYW5kbGVyIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtKHZv
aWQpX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246KFdLU2VjdXJpdHlPcmln
aW4gKilzZWN1cml0eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9yICop
KWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX2dldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNhdGlv
blBlcm1pc3Npb25zOih2b2lkKF4pKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKikpY29tcGxl
dGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGVjOWIzNTM3NmI5YS4uMGY2YmM5NTRk
ODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2ODQsMTIgKzE2ODQsMTQgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRNZW1vcnlMaW1pdCgpCiAjZW5kaWYKIAogI2lmIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1c2hN
ZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0
IHVpbnQ4X3Q+PiBkYXRhLCBjb25zdCBVUkwmIHJlZ2lzdHJhdGlvblVSTCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4m
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJl
ZmVyZW5jZT4gaXBjRGF0YTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgaXBjRGF0YSA9IElQQzo6
RGF0YVJlZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07Ci0gICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNzYWdl
IHsgc2Vzc2lvbklELCBpcGNEYXRhLCByZWdpc3RyYXRpb25VUkwgfSwgV1RGTW92ZShjYWxsYmFj
aykpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6Okdl
dFBlbmRpbmdQdXNoTWVzc2FnZXMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiBwdXNoTWVz
c2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2FsbGJh
Y2spCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBwdXNoTWVzc2FnZSB9LCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5o
CmluZGV4IDQ0MWI4NmUxODljMi4uZWMwOWMzNmZlMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtOTIsNiAr
OTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90Owogc3RydWN0IEZy
YW1lSW5mb0RhdGE7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7CiBz
dHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKK3N0cnVjdCBXZWJQdXNoTWVzc2FnZTsKIHN0cnVjdCBX
ZWJzaXRlRGF0YTsKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIApAQCAtMjcy
LDcgKzI3Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9wdGlv
bmFsPFNwYW48Y29uc3QgdWludDhfdD4+LCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgd2FzUHJvY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3Nh
Z2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJQdXNoTWVzc2FnZT4mKT4mJik7CisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpT
ZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIHdhc1Byb2Nlc3NlZCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oK
aW5kZXggOGI0YTQ2ZDAzM2MxLi44NDUyYzE1ZGRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9X
ZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMyw2ICsxMDMzLDEyIEBACiAJ
CTUxN0I1Rjg0Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc0Mjc0
NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLzsgfTsKIAkJNTE3
QjVGODUyNzVFOTdCNjAwMkRDMjJEIC8qIEFwcEJ1bmRsZVJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBFOTU0Mjc0Qjg4NzEwMDU2NzM4
OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi87IH07CiAJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJEQzIy
RCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0FwcEJ1
bmRsZVJlZ2lzdHJ5Lm1tICovOyB9OworCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyogUHVz
aE1lc3NhZ2VGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTdCNUY5NDI3NUVCQTYyMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JUZXN0
aW5nLmggKi87IH07CisJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2Fn
ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjVG
OTYyNzVFQzVFNTAwMkRDMjJEIC8qIFdlYlB1c2hNZXNzYWdlLmggKi87IH07CisJCTUxN0I1Rjk5
Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjVGOTgyNzVFQzYwMDAwMkRDMjJE
IC8qIFdlYlB1c2hNZXNzYWdlQ29jb2EubW0gKi87IH07CisJCTUxN0I1RjlBMjc1RjNBODYwMDJE
QzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRDb2Rl
cnMuY3BwICovOyB9OworCQk1MTdCNUY5QjI3NUYzQTk4MDAyREMyMkQgLyogRGFlbW9uVXRpbGl0
aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMx
NTc5RjkyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5tbSAqLzsgfTsKKwkJNTE3
QjVGOUMyNzVGM0MzNzAwMkRDMjJEIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNTc5RTgyNzE3MkE4QTAwRUQ1Mjgw
IC8qIERhZW1vbkVuY29kZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEUg
LyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMwMEMy
OTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICovOyB9
OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29ubmVj
dGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5n
aW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYzQTQ4
NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2QzAw
QzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CkBAIC00
NDA3LDYgKzQ0MTMsOSBAQAogCQk1MTdCNUY2QjI3NUFFNTBCMDAyREMyMkQgLyogd2VicHVzaHRv
b2wuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IG5hbWUg
PSB3ZWJwdXNodG9vbC5lbnRpdGxlbWVudHM7IHBhdGggPSBSZXNvdXJjZXMvd2VicHVzaHRvb2wu
ZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCNUY3MjI3NUU5
NjA5MDAyREMyMkQgLyogV2ViUHVzaERhZW1vbk1haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbk1haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJNTE3QjVGNzcyNzVFOTc5NTAwMkRDMjJEIC8qIHdlYnB1c2hkLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHdlYnB1c2hkLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE3QjVGOTQyNzVFQkE2MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9y
VGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoTWVzc2FnZUZv
clRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3QjVGOTYyNzVFQzVF
NTAwMkRDMjJEIC8qIFdlYlB1c2hNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYlB1c2hNZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUx
N0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8q
IE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L05ldHdvcmtQcm9jZXNz
Q29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNU
U19ESVI7IH07CiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdp
bmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgbmFtZSA9IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5l
Y3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElS
OyB9OwogCQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1By
b2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJP
RFVDVFNfRElSOyB9OwpAQCAtNjQ3Miw2ICs2NDgxLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1ld29y
a3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZpbGVz
ID0gKAorCQkJCTUxN0I1RjlFMjc1RjNGNTQwMDJEQzIyRCAvKiBsaWJpY3Vjb3JlLnRiZCBpbiBG
cmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3Np
bmcgPSAwOwogCQl9OwpAQCAtNzEzMyw2ICs3MTQzLDcgQEAKIAkJCQlFMThDOTJGMzEyREI5RTcx
MDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLywKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4
MzggLyogUHJpbnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFBy
b2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovLAorCQkJCTUxN0I1Rjk0Mjc1RUJBNjIwMDJEQzIy
RCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4
Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjAz
NDQ5QjI2QTZDNDc2MDAwQTVGNTQgLyogUmVuZGVyaW5nVXBkYXRlSUQuaCAqLywKIAkJCQk1Q0I3
QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLApAQCAtNzIzOSw2
ICs3MjUwLDcgQEAKIAkJCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0Rh
dGFTdG9yZVBhcmFtZXRlcnMuaCAqLywKIAkJCQk1MTdCNUYyRDI3NTczODJBMDAyREMyMkQgLyog
V2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTEyQ0Q2OTky
NzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAqLywKKwkJCQk1MTdC
NUY5NjI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCAqLywKIAkJCQk1QzhERDM3
RjFGRTQ1MTkyMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJNUM4
REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCiAJCQkJ
NTExRjdEM0YxRUIxQkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNw
cCAqLywKQEAgLTg5MzUsNiArODk0Nyw3IEBACiAJCQkJN0FGMjM2MjIxRTc5QTQzMTAwNDM4QTA1
IC8qIFdlYkVycm9yc0NvY29hLm1tICovLAogCQkJCTQ2NTI1MEU1MUVDRjUyQ0QwMDIwMjVDQiAv
KiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovLAogCQkJCTFERTA3NkQ5MjQ2MENDQkQwMEIy
MTFFOCAvKiBXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbSAqLywKKwkJCQk1MTdC
NUY5ODI3NUVDNjAwMDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSAqLywKIAkJCQkz
N0M0QzA5MjE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggKi8sCiAJCQkJMzdDNEMwOTEx
ODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSAqLywKIAkJCQkzNzNDRUFENDE4NTQxN0FF
MDA4QzM2M0QgLyogV0tOU0RhdGEuaCAqLywKQEAgLTk2OTcsNiArOTcxMCw3IEBACiAJCTU3NTBG
MzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTdCNUY5RDI3NUYzRjU0MDAyREMyMkQgLyogbGli
aWN1Y29yZS50YmQgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldURi5h
ICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0aW9u
LmZyYW1ld29yayAqLywKIAkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZpZWxk
LmZyYW1ld29yayAqLywKQEAgLTEzMDA2LDYgKzEzMDIwLDcgQEAKIAkJCQk1MzIxNTk1NjFEQkFF
NzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3Nh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMw
MDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
NTI2RUQyNzFFMTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzNTEyLDYgKzEzNTI3LDcgQEAKIAkJCQk5MzU2RjJEQzIxNTJCNkI1
MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTdBNTMxMDFGNDdBODYyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3QjVGOTUyNzVF
QkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIw
QSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTZGMkRF
MjE1MkI3MTAwMEU2RDVERiAvKiBXZWJTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKQEAg
LTE1MDc1LDcgKzE1MDkxLDEwIEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsKIAkJ
CWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MTdCNUY5
QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJNTE3QjVGNjgyNzVBOUE3ODAwMkRDMjJEIC8qIFdlYlB1c2hUb29sQ29ubmVjdGlvbi5tbSBp
biBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVtb25VdGls
aXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY5QzI3NUYzQzM3MDAyREMyMkQgLyog
RGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY2NTI3NUE4RDdGMDAy
REMyMkQgLyogV2ViUHVzaFRvb2xNYWluLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJcnVu
T25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xNTE3MSw2ICsxNTE5MCw3
IEBACiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNlY2hl
dXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFBMTUyRDcyNEU1QTI5
QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gaW4gU291cmNlcyAqLywK
IAkJCQkyNzQ5RjY0NDIxNDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxl
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQ
dXNoTWVzc2FnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDUyMTQ2NTYxRTAw
ODM4MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJOUJGNUVDNjQyNTQxMTQ1NjAwOTg0RTc3IC8qIEpTSVBDQmluZGluZy5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNEYXRh
YmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
UHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA3NjA1M2VmYzJkOTEuLjdmYTQzZmQ5ZTA5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaApAQCAt
NTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGhvc3RBcHBDb2RlU2ln
bmluZ0lkZW50aWZpZXIoKTsKICAgICBib29sIGhvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQoKTsK
KyAgICBib29sIGhvc3RBcHBIYXNQdXNoSW5qZWN0RW50aXRsZW1lbnQoKTsKIAogICAgIGJvb2wg
ZGVidWdNb2RlSXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVkOyB9
CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCk7CkBAIC03NSw2ICs3Niw4IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBtYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKTsKICAg
ICB2b2lkIHNldEhvc3RBcHBBdWRpdFRva2VuRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4mKTsK
IAorICAgIGJvb2wgaG9zdEhhc0VudGl0bGVtZW50KGNvbnN0IGNoYXIqKTsKKwogICAgIE9TT2Jq
ZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1feHBjQ29ubmVjdGlvbjsKIAogICAgIHN0ZDo6b3B0
aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9ob3N0QXBwQXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IDQ1YzQxYWZlMTkwMy4u
Zjg5ZWYyODIzYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hDbGll
bnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENv
bm5lY3Rpb24ubW0KQEAgLTg5LDE1ICs4OSwyNCBAQCBjb25zdCBTdHJpbmcmIENsaWVudENvbm5l
Y3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogCiBib29sIENsaWVudENvbm5l
Y3Rpb246Omhvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQoKQogewotICAgIGlmICghbV9ob3N0QXBw
SGFzUHVzaEVudGl0bGVtZW50KSB7Ci0gICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tlbikK
LSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9ob3N0QXBwSGFzUHVzaEVudGl0
bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudCgqbV9ob3N0QXBwQXVkaXRUb2tlbiwgImNvbS5h
cHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoIik7Ci0gICAgfQorICAgIGlmICghbV9ob3N0QXBw
SGFzUHVzaEVudGl0bGVtZW50KQorICAgICAgICBtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQg
PSBob3N0SGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoIl9z
KTsKIAogICAgIHJldHVybiAqbV9ob3N0QXBwSGFzUHVzaEVudGl0bGVtZW50OwogfQogCitib29s
IENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBIYXNQdXNoSW5qZWN0RW50aXRsZW1lbnQoKQorewor
ICAgIHJldHVybiBob3N0SGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53
ZWJwdXNoLmluamVjdCJfcyk7Cit9CisKK2Jvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEhhc0Vu
dGl0bGVtZW50KGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KQoreworICAgIGlmICghbV9ob3N0QXBw
QXVkaXRUb2tlbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBXVEY6Omhhc0Vu
dGl0bGVtZW50KCptX2hvc3RBcHBBdWRpdFRva2VuLCBlbnRpdGxlbWVudCk7Cit9CisKIHZvaWQg
Q2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsK
ICAgICBpZiAoZW5hYmxlZCA9PSBtX2RlYnVnTW9kZUVuYWJsZWQpCkBAIC0xMTIsOSArMTIxLDkg
QEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3QgU3Ry
aW5nJiBtZXNzYWdlKQogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBhdXRvIHNp
Z25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7CiAgICAgaWYg
KHNpZ25pbmdJZGVudGlmZXIuaXNFbXB0eSgpKQotICAgICAgICBtZXNzYWdlSWRlbnRpZmllciA9
IG1ha2VTdHJpbmcgKCJbKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBj
Q29ubmVjdGlvbi5nZXQoKSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIp
XSAiKTsKKyAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKCJbKDB4IiwgaGV4
KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVjdGlvbi5nZXQoKSksIFdURjo6
SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsKICAgICBlbHNlCi0gICAgICAg
IG1lc3NhZ2VJZGVudGlmaWVyID0gbWFrZVN0cmluZyAoIlsiLCBzaWduaW5nSWRlbnRpZmVyLCAi
ICgweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihtX3hwY0Nvbm5lY3Rpb24uZ2V0
KCkpLCBXVEY6OkhleENvbnZlcnNpb25Nb2RlOjpMb3dlcmNhc2UpLCAiKV0gIik7CisgICAgICAg
IG1lc3NhZ2VJZGVudGlmaWVyID0gbWFrZVN0cmluZygiWyIsIHNpZ25pbmdJZGVudGlmZXIsICIg
KDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVjdGlvbi5nZXQo
KSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsKIAogICAgIERh
ZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVs
OjpJbmZvLCBtYWtlU3RyaW5nKG1lc3NhZ2VJZGVudGlmaWVyLCBtZXNzYWdlKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCmluZGV4IDJhMTJjYTM0NDNlNC4uMzNjY2Q1
MzY0NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtMjYsOCAr
MjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUHVzaENsaWVudENvbm5lY3Rpb24u
aCIKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJXZWJQdXNo
RGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJQdXNoRGFlbW9u
Q29uc3RhbnRzLmgiCisjaW5jbHVkZSAiV2ViUHVzaE1lc3NhZ2UuaCIKKyNpbmNsdWRlIDx3dGYv
RGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFw
Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQwLDYgKzQzLDcgQEAgbmFtZXNwYWNl
IEpTQyB7CiBlbnVtIGNsYXNzIE1lc3NhZ2VMZXZlbCA6IHVpbnQ4X3Q7CiB9CiAKK3VzaW5nIFdl
YktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzsKIHVzaW5nIFdlYktpdDo6V2Vi
UHVzaEQ6OldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbjsKIAogbmFtZXNwYWNl
IFdlYlB1c2hEIHsKQEAgLTYyLDYgKzY2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRlUHVz
aEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3QgU3Ry
aW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKENsaWVudENv
bm5lY3Rpb24qLCBib29sKTsKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9u
KENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3Vy
YXRpb24mKTsKKyAgICB2b2lkIGluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZyhDbGllbnRDb25u
ZWN0aW9uKiwgY29uc3QgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENsaWVudENv
bm5lY3Rpb24qLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6Oldl
YlB1c2hNZXNzYWdlPiYpPiYmIHJlcGx5U2VuZGVyKTsKIAogICAgIHZvaWQgYnJvYWRjYXN0RGVi
dWdNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIApAQCAtNzUsNiAr
ODEsOCBAQCBwcml2YXRlOgogCiAgICAgQ2xpZW50Q29ubmVjdGlvbiogdG9DbGllbnRDb25uZWN0
aW9uKHhwY19jb25uZWN0aW9uX3QpOwogICAgIEhhc2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwgUmVm
PENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisKKyAgICBIYXNoTWFwPFN0cmlu
ZywgRGVxdWU8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPj4gbV90ZXN0aW5nUHVzaE1lc3NhZ2VzOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVz
aERhZW1vbi5tbQppbmRleCBmZDdiMjUwMDUwOWIuLjQyNDI2YmU0YjZhNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtNzAsNiArNzAsMTEgQEAgQVJHVU1FTlRT
KFN0cmluZykKIFJFUExZKGJvb2wpCiBFTkQKIAorRlVOQ1RJT04oZ2V0UGVuZGluZ1B1c2hNZXNz
YWdlcykKK0FSR1VNRU5UUygpCitSRVBMWShjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVz
c2FnZT4mKQorRU5ECisKIEZVTkNUSU9OKHNldERlYnVnTW9kZUlzRW5hYmxlZCkKIEFSR1VNRU5U
Uyhib29sKQogRU5ECkBAIC03OCw2ICs4MywxMSBAQCBGVU5DVElPTih1cGRhdGVDb25uZWN0aW9u
Q29uZmlndXJhdGlvbikKIEFSR1VNRU5UUyhXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3Vy
YXRpb24pCiBFTkQKIAorRlVOQ1RJT04oaW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nKQorQVJH
VU1FTlRTKFB1c2hNZXNzYWdlRm9yVGVzdGluZykKK1JFUExZKGJvb2wpCitFTkQKKwogI3VuZGVm
IEZVTkNUSU9OCiAjdW5kZWYgQVJHVU1FTlRTCiAjdW5kZWYgUkVQTFkKQEAgLTExMSw2ICsxMjEs
MjAgQEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRpb25Q
ZXJtaXNzaW9uOjplbmNvZGVSZXBseShib29sIHIKICAgICByZXR1cm4gZW5jb2Rlci50YWtlQnVm
ZmVyKCk7CiB9CiAKK1dlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBpbmplY3RQdXNoTWVzc2FnZUZv
clRlc3Rpbmc6OmVuY29kZVJlcGx5KGJvb2wgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246
OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNv
ZGVyLnRha2VCdWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGdldFBlbmRp
bmdQdXNoTWVzc2FnZXM6OmVuY29kZVJlcGx5KGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hN
ZXNzYWdlPiYgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2RlcjsK
KyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8dHlwZW5hbWUgSW5m
bz4KQEAgLTIzMyw2ICsyNTcsMTIgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1lc3Nh
Z2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbjoKICAgICAgICAgaGFu
ZGxlV2ViUHVzaERNZXNzYWdlPE1lc3NhZ2VJbmZvOjp1cGRhdGVDb25uZWN0aW9uQ29uZmlndXJh
dGlvbj4oY2xpZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UpOwogICAgICAgICBicmVhazsK
KyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc6CisgICAg
ICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6aW5qZWN0UHVz
aE1lc3NhZ2VGb3JUZXN0aW5nPihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSwgV1RG
TW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VUeXBl
OjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOgorICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2VX
aXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFBlbmRpbmdQdXNoTWVzc2FnZXM+KGNsaWVudENvbm5l
Y3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAgIGJy
ZWFrOwogICAgIH0KIH0KIApAQCAtMjk3LDYgKzMyNyw1NSBAQCB2b2lkIERhZW1vbjo6dXBkYXRl
Q29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY2xpZW50Q29ubmVjdGlv
biwgYwogICAgIGNsaWVudENvbm5lY3Rpb24tPnVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9u
KGNvbmZpZ3VyYXRpb24pOwogfQogCit2b2lkIERhZW1vbjo6aW5qZWN0UHVzaE1lc3NhZ2VGb3JU
ZXN0aW5nKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFB1c2hNZXNzYWdlRm9y
VGVzdGluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBseVNl
bmRlcikKK3sKKyAgICBpZiAoIWNvbm5lY3Rpb24tPmhvc3RBcHBIYXNQdXNoSW5qZWN0RW50aXRs
ZW1lbnQoKSkgeworICAgICAgICBjb25uZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoIkF0
dGVtcHRpbmcgdG8gaW5qZWN0IGEgcHVzaCBtZXNzYWdlIGZyb20gYW4gdW5lbnRpdGxlZCBwcm9j
ZXNzIik7CisgICAgICAgIHJlcGx5U2VuZGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGlmIChtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllci5pc0Vt
cHR5KCkgfHwgIW1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMLmlzVmFsaWQoKSkgeworICAgICAgICBj
b25uZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoIkF0dGVtcHRpbmcgdG8gaW5qZWN0IGFu
IGludmFsaWQgcHVzaCBtZXNzYWdlIik7CisgICAgICAgIHJlcGx5U2VuZGVyKGZhbHNlKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVz
c2FnZShtYWtlU3RyaW5nKCJJbmplY3RlZCBhIHRlc3QgcHVzaCBtZXNzYXNnZSBmb3IgIiwgbWVz
c2FnZS50YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIsICIgYXQgIiwgbWVzc2FnZS5yZWdp
c3RyYXRpb25VUkwuc3RyaW5nKCkpKTsKKyAgICBjb25uZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01l
c3NhZ2UobWVzc2FnZS5tZXNzYWdlKTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXN0aW5n
UHVzaE1lc3NhZ2VzLmVuc3VyZShtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmll
ciwgW10geworICAgICAgICByZXR1cm4gRGVxdWU8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPiB7IH07
CisgICAgfSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobWVzc2FnZSk7
CisKKyAgICByZXBseVNlbmRlcih0cnVlKTsKK30KKwordm9pZCBEYWVtb246OmdldFBlbmRpbmdQ
dXNoTWVzc2FnZXMoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mKT4mJiByZXBseVNl
bmRlcikKK3sKKyAgICBhdXRvIGhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBjb25uZWN0
aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7CisgICAgaWYgKGhvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlcGx5U2VuZGVyKHsgfSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVz
c2FnZT4gcmVzdWx0TWVzc2FnZXM7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV90ZXN0aW5nUHVz
aE1lc3NhZ2VzLmZpbmQoaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcik7CisgICAgaWYgKGl0
ZXJhdG9yICE9IG1fdGVzdGluZ1B1c2hNZXNzYWdlcy5lbmQoKSkgeworICAgICAgICBmb3IgKGF1
dG8mIG1lc3NhZ2UgOiBpdGVyYXRvci0+dmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0YSA9
IG1lc3NhZ2UubWVzc2FnZS51dGY4KCk7CisgICAgICAgICAgICByZXN1bHRNZXNzYWdlcy5hcHBl
bmQoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSB7IFZlY3Rvcjx1aW50OF90PiB7IHJlaW50ZXJwcmV0
X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5sZW5ndGgoKSB9LCBtZXNz
YWdlLnJlZ2lzdHJhdGlvblVSTCB9KTsKKyAgICAgICAgfQorICAgICAgICBtX3Rlc3RpbmdQdXNo
TWVzc2FnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5icm9h
ZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0cmluZygiRmV0Y2hpbmcgIiwgU3RyaW5nOjpudW1iZXIo
cmVzdWx0TWVzc2FnZXMuc2l6ZSgpKSwgIiBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiKSk7CisKKyAg
ICByZXBseVNlbmRlcihXVEZNb3ZlKHJlc3VsdE1lc3NhZ2VzKSk7Cit9CisKIENsaWVudENvbm5l
Y3Rpb24qIERhZW1vbjo6dG9DbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29ubmVj
dGlvbikKIHsKICAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAuZ2V0
KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNo
dG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2Vi
cHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmgKaW5kZXggZmY2MjM2YjdiZWU3Li5iZTJm
MTc5OTFjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wv
V2ViUHVzaFRvb2xDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJw
dXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaApAQCAtMjUsMTEgKzI1LDE1IEBACiAKICNw
cmFnbWEgb25jZQogCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmgiCiAjaW5jbHVk
ZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVVJM
Lmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
OworCiBuYW1lc3BhY2UgV2ViUHVzaFRvb2wgewogCiBlbnVtIGNsYXNzIEFjdGlvbiB7CkBAIC01
NCwxOSArNTgsMjQgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0VG9TZXJ2aWNlKCk7CiAK
KyAgICB2b2lkIHNldFB1c2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZvclRl
c3Rpbmc+JiYgbWVzc2FnZSkgeyBtX3B1c2hNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsgfQor
CiBwcml2YXRlOgogICAgIHZvaWQgbWVzc2FnZVJlY2VpdmVkKHhwY19vYmplY3RfdCk7CiAgICAg
dm9pZCBjb25uZWN0aW9uRHJvcHBlZCgpOwogCiAgICAgdm9pZCBzdGFydEFjdGlvbigpOwogICAg
IHZvaWQgc3RhcnREZWJ1Z1N0cmVhbUFjdGlvbigpOworICAgIHZvaWQgc2VuZFB1c2hNZXNzYWdl
KCk7CiAKICAgICB2b2lkIHNlbmRBdWRpdFRva2VuKCk7Ci0gICAgCisKICAgICBBY3Rpb24gbV9h
Y3Rpb247CiAgICAgYm9vbCBtX3JlY29ubmVjdCB7IGZhbHNlIH07CiAgICAgUmV0YWluUHRyPHhw
Y19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKICAgICBjb25zdCBjaGFyKiBtX3NlcnZpY2VO
YW1lOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gbV9wdXNo
TWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hUb29sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0
aW9uLm1tCmluZGV4IGJkZTRlNTRlMTFlMC4uYTQzMzRkNjQ2Mzc3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVj
dGlvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0ICJX
ZWJQdXNoVG9vbENvbm5lY3Rpb24uaCIKIAorI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgorI2lt
cG9ydCAiRGFlbW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3RhbnRz
LmgiCiAjaW1wb3J0IDxtYWNoL21hY2hfaW5pdC5oPgogI2ltcG9ydCA8bWFjaC90YXNrLmg+CiAj
aW1wb3J0IDxwYWwvc3BpL2NvY29hL1NlcnZlcnNTUEkuaD4KQEAgLTExOCw2ICsxMjEsMjYgQEAg
dm9pZCBDb25uZWN0aW9uOjpzdGFydEFjdGlvbigpCiAgICAgICAgIHN0YXJ0RGVidWdTdHJlYW1B
Y3Rpb24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfTsKKworICAgIGlmIChtX3B1c2hNZXNzYWdl
KQorICAgICAgICBzZW5kUHVzaE1lc3NhZ2UoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpzZW5k
UHVzaE1lc3NhZ2UoKQoreworICAgIEFTU0VSVChtX3B1c2hNZXNzYWdlKTsKKworICAgIFdlYktp
dDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCAqbV9wdXNoTWVzc2Fn
ZTsKKworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRl
KG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRp
Y3Rpb25hcnkuZ2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvbktleSwgV2Vi
S2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworICAgIHhwY19kaWN0aW9uYXJ5
X3NldF92YWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2NvbEVu
Y29kZWRNZXNzYWdlS2V5LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShlbmNvZGVyLnRha2VCdWZm
ZXIoKSkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5n
ZXQoKSwgV2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGljX2Nh
c3Q8dWludDY0X3Q+KFdlYktpdDo6V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmplY3RQdXNoTWVz
c2FnZUZvclRlc3RpbmcpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRo
X3JlcGx5KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0
X21haW5fcXVldWUoKSwgXih4cGNfb2JqZWN0X3QgcmVzdWx0TWVzc2FnZSkgeworICAgICAgICAv
LyBUaGlzIHJlcGx5IGhhbmRsZXIgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCisgICAgfSk7CiB9
CiAKIHZvaWQgQ29ubmVjdGlvbjo6c3RhcnREZWJ1Z1N0cmVhbUFjdGlvbigpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbSBi
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1tCmlu
ZGV4IDYyZjY3OGY5ZmQ2Ni4uYTU4Nzk1OThkYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbQorKysgYi9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbQpAQCAtMjQsMTEgKzI0
LDE0IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQdXNoTWVzc2FnZUZv
clRlc3RpbmcuaCIKICNpbXBvcnQgIldlYlB1c2hUb29sQ29ubmVjdGlvbi5oIgogI2ltcG9ydCA8
Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvcHRpb25hbD4KICNpbXBvcnQgPHd0
Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIFdlYktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9y
VGVzdGluZzsKKwogX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKIHN0YXRpYyB2b2lkIHBy
aW50VXNhZ2VBbmRUZXJtaW5hdGUoTlNTdHJpbmcgKm1lc3NhZ2UpCiB7CkBAIC0zNiwxNSArMzks
NDMgQEAgc3RhdGljIHZvaWQgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShOU1N0cmluZyAqbWVzc2Fn
ZSkKIAogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHdlYnB1c2h0b29sIFtvcHRpb25zXVxu
Iik7CiAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAt
LWRldmVsb3BtZW50ICAgICAgICAgICAgICBDb25uZWN0cyB0byBtYWNoIHNlcnZpY2UgXCJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2VcIiAoRGVmYXVsdClcbiIpOwotICAgIGZw
cmludGYoc3RkZXJyLCAiICAtLXByb2R1Y3Rpb24gICAgICAgICAgICAgICBDb25uZWN0cyB0byBt
YWNoIHNlcnZpY2UgXCJjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnNlcnZpY2VcIlxuIik7Ci0g
ICAgZnByaW50ZihzdGRlcnIsICIgIC0tc3RyZWFtRGVidWdNZXNzYWdlcyAgICAgIFN0cmVhbSBk
ZWJ1ZyBtZXNzYWdlcyBmcm9tIHdlYnB1c2hkXG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
LS1yZWNvbm5lY3QgICAgICAgICAgICAgICAgUmVjb25uZWN0IGFmdGVyIGNvbm5lY3Rpb24gaXMg
bG9zdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tZGV2ZWxvcG1lbnRcbiIpOworICAg
IGZwcmludGYoc3RkZXJyLCAiICAgIENvbm5lY3RzIHRvIG1hY2ggc2VydmljZSBcIm9yZy53ZWJr
aXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZVwiIChEZWZhdWx0KVxuIik7CisgICAgZnByaW50
ZihzdGRlcnIsICIgIC0tcHJvZHVjdGlvblxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAg
Q29ubmVjdHMgdG8gbWFjaCBzZXJ2aWNlIFwiY29tLmFwcGxlLndlYmtpdC53ZWJwdXNoZC5zZXJ2
aWNlXCJcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXN0cmVhbURlYnVnTWVzc2FnZXNc
biIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAgIFN0cmVhbSBkZWJ1ZyBtZXNzYWdlcyBmcm9t
IHdlYnB1c2hkXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1yZWNvbm5lY3RcbiIpOwor
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgIFJlY29ubmVjdCBhZnRlciBjb25uZWN0aW9uIGlzIGxv
c3RcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXB1c2ggPHRhcmdldCBhcHAgaWRlbnRp
Zmllcj4gPHJlZ2lzdHJhdGlvbiBVUkw+IDxtZXNzYWdlPlxuIik7CisgICAgZnByaW50ZihzdGRl
cnIsICIgICAgSW5qZWN0IGEgdGVzdCBwdXNoIG1lc3Nhc2dlIHRvIHRoZSB0YXJnZXQgYXBwIGFu
ZCByZWdpc3RyYXRpb24gVVJMXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAKICAg
ICBleGl0KC0xKTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZvclRl
c3Rpbmc+IHB1c2hNZXNzYWdlRnJvbUFyZ3VtZW50cyhOU0VudW1lcmF0b3I8TlNTdHJpbmcgKj4g
KmVudW1lcmF0b3IpCit7CisgICAgTlNTdHJpbmcgKmFwcElkZW50aWZpZXIgPSBbZW51bWVyYXRv
ciBuZXh0T2JqZWN0XTsKKyAgICBpZiAoIWFwcElkZW50aWZpZXIpCisgICAgICAgIHJldHVybiBu
dWxscHRyOworCisgICAgTlNTdHJpbmcgKnJlZ2lzdHJhdGlvblN0cmluZyA9IFtlbnVtZXJhdG9y
IG5leHRPYmplY3RdOworICAgIGlmICghcmVnaXN0cmF0aW9uU3RyaW5nKQorICAgICAgICByZXR1
cm4gbnVsbHB0cjsKKworICAgIE5TVVJMICpyZWdpc3RyYXRpb25VUkwgPSBbTlNVUkwgVVJMV2l0
aFN0cmluZzpyZWdpc3RyYXRpb25TdHJpbmddOworICAgIGlmICghcmVnaXN0cmF0aW9uVVJMKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2VudW1l
cmF0b3IgbmV4dE9iamVjdF07CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4gbnVs
bHB0cjsKKworICAgIFB1c2hNZXNzYWdlRm9yVGVzdGluZyBwdXNoTWVzc2FnZSA9IHsgYXBwSWRl
bnRpZmllciwgcmVnaXN0cmF0aW9uVVJMLCBtZXNzYWdlIH07CisgICAgcmV0dXJuIG1ha2VVbmlx
dWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4oV1RGTW92ZShw
dXNoTWVzc2FnZSkpOworfQorCiBpbnQgbWFpbihpbnQsIGNvbnN0IGNoYXIgKiopCiB7CiAgICAg
V1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwpAQCAtNTIsMTMgKzgzLDE2IEBAIGludCBtYWlu
KGludCwgY29uc3QgY2hhciAqKikKICAgICBhdXRvIHByZWZlclRlc3RTZXJ2aWNlID0gV2ViUHVz
aFRvb2w6OlByZWZlclRlc3RTZXJ2aWNlOjpZZXM7CiAgICAgYXV0byByZWNvbm5lY3QgPSBXZWJQ
dXNoVG9vbDo6UmVjb25uZWN0OjpObzsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYlB1c2hUb29sOjpB
Y3Rpb24+IGFjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
PiBwdXNoTWVzc2FnZTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBOU0FycmF5
ICphcmd1bWVudHMgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGFyZ3VtZW50c107CiAg
ICAgICAgIGlmIChhcmd1bWVudHMuY291bnQgPT0gMSkKICAgICAgICAgICAgIHByaW50VXNhZ2VB
bmRUZXJtaW5hdGUoQCJObyBhcmd1bWVudHMgcHJvdmlkZWQiKTsKIAotICAgICAgICBmb3IgKE5T
U3RyaW5nICphcmd1bWVudCBpbiBbYXJndW1lbnRzIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJh
bmdlKDEsIGFyZ3VtZW50cy5jb3VudCAtIDEpXSkgeworICAgICAgICBOU0VudW1lcmF0b3I8TlNT
dHJpbmcgKj4gKmVudW1lcmF0b3IgPSBbW2FyZ3VtZW50cyBzdWJhcnJheVdpdGhSYW5nZTpOU01h
a2VSYW5nZSgxLCBhcmd1bWVudHMuY291bnQgLSAxKV0gb2JqZWN0RW51bWVyYXRvcl07CisgICAg
ICAgIE5TU3RyaW5nICphcmd1bWVudCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgICAg
ICB3aGlsZSAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChbYXJndW1lbnQgaXNFcXVhbFRv
U3RyaW5nOkAiLS1wcm9kdWN0aW9uIl0pCiAgICAgICAgICAgICAgICAgcHJlZmVyVGVzdFNlcnZp
Y2UgPSBXZWJQdXNoVG9vbDo6UHJlZmVyVGVzdFNlcnZpY2U6Ok5vOwogICAgICAgICAgICAgZWxz
ZSBpZiAoW2FyZ3VtZW50IGlzRXF1YWxUb1N0cmluZzpAIi0tZGV2ZWxvcG1lbnQiXSkKQEAgLTY3
LDE1ICsxMDEsMjQgQEAgaW50IG1haW4oaW50LCBjb25zdCBjaGFyICoqKQogICAgICAgICAgICAg
ICAgIGFjdGlvbiA9IFdlYlB1c2hUb29sOjpBY3Rpb246OlN0cmVhbURlYnVnTWVzc2FnZXM7CiAg
ICAgICAgICAgICBlbHNlIGlmIChbYXJndW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLS1yZWNvbm5l
Y3QiXSkKICAgICAgICAgICAgICAgICByZWNvbm5lY3QgPSBXZWJQdXNoVG9vbDo6UmVjb25uZWN0
OjpZZXM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChbYXJndW1lbnQg
aXNFcXVhbFRvU3RyaW5nOkAiLS1wdXNoIl0pIHsKKyAgICAgICAgICAgICAgICBwdXNoTWVzc2Fn
ZSA9IHB1c2hNZXNzYWdlRnJvbUFyZ3VtZW50cyhlbnVtZXJhdG9yKTsKKyAgICAgICAgICAgICAg
ICBpZiAoIXB1c2hNZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICBwcmludFVzYWdlQW5kVGVy
bWluYXRlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW52YWxpZCBwdXNoIGFyZ3VtZW50
cyBzcGVjaWZpZWQiXSk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBwcmlu
dFVzYWdlQW5kVGVybWluYXRlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW52YWxpZCBv
cHRpb24gcHJvdmlkZWQ6ICVAIiwgYXJndW1lbnRdKTsKKworICAgICAgICAgICAgYXJndW1lbnQg
PSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmICgh
YWN0aW9uKQorICAgIGlmICghYWN0aW9uICYmICFwdXNoTWVzc2FnZSkKICAgICAgICAgcHJpbnRV
c2FnZUFuZFRlcm1pbmF0ZShAIk5vIGFjdGlvbiBwcm92aWRlZCIpOwogCiAgICAgYXV0byBjb25u
ZWN0aW9uID0gV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OmNyZWF0ZSgqYWN0aW9uLCBwcmVmZXJU
ZXN0U2VydmljZSwgcmVjb25uZWN0KTsKKyAgICBpZiAocHVzaE1lc3NhZ2UpCisgICAgICAgIGNv
bm5lY3Rpb24tPnNldFB1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UpKTsKKwogICAgIGNv
bm5lY3Rpb24tPmNvbm5lY3RUb1NlcnZpY2UoKTsKIAogICAgIENGUnVuTG9vcFJ1bigpOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQxNTk2YzE1
MGZhOC4uMGYyNDFhN2QyYTIwIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9v
bHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNz
YWdlcyBpbnRvIHdlYnB1c2hkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMzM5ODgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1p
T1MuZW50aXRsZW1lbnRzOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMv
VGVzdFdlYktpdEFQSS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50
czoKKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5t
bToKKyAgICAgICAgKG1lc3NhZ2VEaWN0aW9uYXJ5KToKKworICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFRlc3RXZWJL
aXRBUEk6OmNyZWF0ZU1lc3NhZ2VEaWN0aW9uYXJ5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNlbmRNZXNzYWdlVG9EYWVtb24pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2VuZE1lc3Nh
Z2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZW5k
Q29uZmlndXJhdGlvbldpdGhBdWRpdFRva2VuKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmNy
ZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6ZW5jb2RlU3RyaW5nKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZnVuY3Rpb24pOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkv
Y29jb2EvVGVzdFdLV2ViVmlldy5oOgorCiAyMDIxLTEyLTA2ICBCcmFkeSBFaWRzb24gIDxiZWlk
c29uQGFwcGxlLmNvbT4KIAogICAgICAgICB3ZWJwdXNoZC93ZWJwdXNodG9vbCBkZWJ1Z2dpbmcg
YWRkaXRpb25zCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29u
ZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCmluZGV4IDJmZDBlYWYy
NTFhZS4uMWU1ZTg3YTI5YTM0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZp
Z3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cwpA
QCAtMTIsNiArMTIsOCBAQAogCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0
LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUu
eHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8L2tleT4KIAk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0
cmluZz4KIDwvZGljdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MtaW50ZXJuYWwu
ZW50aXRsZW1lbnRzCmluZGV4IGY2ZjU0ZTE3NDI1Zi4uNmZjMjRjNGEwNDU2IDEwMDY0NAotLS0g
YS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1Mt
aW50ZXJuYWwuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKQEAgLTYsNiAr
Niw4IEBACiAJPHN0cmluZz5UZXN0V2ViS2l0QVBJPC9zdHJpbmc+CiAJPGtleT5jb20uYXBwbGUu
cHJpdmF0ZS53ZWJraXQud2VicHVzaDwva2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5w
cml2YXRlLndlYmtpdC53ZWJwdXNoLmluamVjdDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5h
cHBsZS5oaWQubWFuYWdlci51c2VyLWFjY2Vzcy1kZXZpY2U8L2tleT4KIAk8dHJ1ZS8+CiAJPGtl
eT5jb20uYXBwbGUucHJpdmF0ZS5oaWQuY2xpZW50LmV2ZW50LWZpbHRlcjwva2V5PgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1h
Y09TLmVudGl0bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKaW5kZXggOWU2MTE3NjQ5YWNkLi5jYzk2MjEw
NGEzNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVz
dFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9D
b25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cwpAQCAtMTAsNiAr
MTAsOCBAQAogCTwvYXJyYXk+CiAJPGtleT5jb20uYXBwbGUucHJpdmF0ZS53ZWJraXQud2VicHVz
aDwva2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNo
LmluamVjdDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3Jh
cnktZXhjZXB0aW9uLnNicGw8L2tleT4KIAk8YXJyYXk+CiAJCTxzdHJpbmc+KGFsbG93IG1hY2gt
aXNzdWUtZXh0ZW5zaW9uIChyZXF1aXJlLWFsbCAoZXh0ZW5zaW9uLWNsYXNzICZxdW90O2NvbS5h
cHBsZS53ZWJraXQuZXh0ZW5zaW9uLm1hY2gmcXVvdDspKSk8L3N0cmluZz4KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCBjNGE3MzY0
ZDc1NGMuLmI2NzI5Njc4YWY5OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvUHVzaEFQSS5tbQpAQCAtMzQsNiArMzQsMTQgQEAKICNpbXBvcnQgPFdlYktp
dC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0
ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KIAorc3RhdGljIE5TRGljdGlvbmFyeSAqbWVzc2Fn
ZURpY3Rpb25hcnkoTlNEYXRhICpkYXRhLCBOU1VSTCAqcmVnaXN0cmF0aW9uKQoreworICAgIHJl
dHVybiBAeworICAgICAgICBAIldlYktpdFB1c2hEYXRhIiA6IGRhdGEsCisgICAgICAgIEAiV2Vi
S2l0UHVzaFJlZ2lzdHJhdGlvblVSTCIgOiByZWdpc3RyYXRpb24KKyAgICB9OworfQorCiBzdGF0
aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2FnZTsKIAogQGludGVyZmFjZSBQdXNoQVBJTWVzc2FnZUhh
bmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdlIDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRs
ZXI+CkBAIC0xNDYsNyArMTU0LDggQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQogICAg
IHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOwogICAgIE5TU3RyaW5nICptZXNzYWdlID0g
QCJTd2VldCBQb3RhdG9lcyI7CiAgICAgZXhwZWN0ZWRNZXNzYWdlID0gIlJlY2VpdmVkOiBTd2Vl
dCBQb3RhdG9lcyI7Ci0gICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9j
ZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddIHJlZ2lzdHJhdGlvbjpbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5k
bGVyOl4oYm9vbCByZXN1bHQpIHsKKworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0
b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJM
XSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBwdXNoTWVzc2Fn
ZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1
ZTsKICAgICB9XTsKQEAgLTE2MCw3ICsxNjksNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZl
bnQpCiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgbWVzc2FnZSA9IEAi
Um90dGVuIFBvdGF0b2VzIjsKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2ZWQ6IFJvdHRl
biBQb3RhdG9lcyI7Ci0gICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9j
ZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5j
b2RpbmddIHJlZ2lzdHJhdGlvbjpbc2VydmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5k
bGVyOl4oYm9vbCByZXN1bHQpIHsKKyAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9y
ZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTptZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNp
bmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0p
IGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKICAgICAgICAgcHVzaE1lc3NhZ2VT
dWNjZXNzZnVsID0gcmVzdWx0OwogICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7
CiAgICAgfV07CkBAIC0yMzQsNyArMjQzLDcgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50
V2l0aE5vUGFnZXNTdWNjZXNzZnVsKQogICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7
CiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgTlNTdHJpbmcgKm1lc3Nh
Z2UgPSBAIlN3ZWV0IFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFT
dG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VU
RjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29t
cGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJz
aXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNz
YWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1
ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBw
dXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vz
c2VkID0gdHJ1ZTsKICAgICB9XTsKQEAgLTI3OSw3ICsyODgsNyBAQCBURVNUKFB1c2hBUEksIGZp
cmVQdXNoRXZlbnRXaXRoTm9QYWdlc0ZhaWwpCiAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBm
YWxzZTsKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBOU1N0cmluZyAq
bWVzc2FnZSA9IEAiUm90dGVuIFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0
ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGlu
ZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVS
TF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlv
biB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5
KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZl
ci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAg
ICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdl
UHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9XTsKQEAgLTMzMiw3ICszNDEsNyBAQCBURVNUKFB1c2hB
UEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc1RpbWVvdXQpCiAgICAgcHVzaE1lc3NhZ2VQcm9j
ZXNzZWQgPSBmYWxzZTsKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBO
U1N0cmluZyAqbWVzc2FnZSA9IEAiVGltZWxlc3MgUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJh
dGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFV
c2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5y
ZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tj
b25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2Fn
ZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2Rp
bmddLCBbc2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVz
dWx0KSB7CiAgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAg
cHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDcz
ZjRjMjhmODk1MC4uNzI3NzY3ODc2ODUwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCkBAIC0yNiw2ICsyNiw3IEBA
CiAjaW1wb3J0ICJjb25maWcuaCIKIAogI2ltcG9ydCAiRGFlbW9uVGVzdFV0aWxpdGllcy5oIgor
I2ltcG9ydCAiSFRUUFNlcnZlci5oIgogI2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdFVS
TFNjaGVtZUhhbmRsZXIuaCIKICNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTM1LDcgKzM2
LDYgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1w
b3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVudGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19X
S1dlYnNpdGVEYXRhU3RvcmVDb25maWd1cmF0aW9uLmg+Ci0jaW1wb3J0IDxhcnJheT4KICNpbXBv
cnQgPG1hY2gvbWFjaF9pbml0Lmg+CiAjaW1wb3J0IDxtYWNoL3Rhc2suaD4KIApAQCAtMTYyLDYg
KzE2Miw4NiBAQCBzdGF0aWMgdm9pZCBjbGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGly
KQogICAgIEVYUEVDVF9OVUxMKGVycm9yKTsKIH0KIAorc3RhdGljIFJldGFpblB0cjx4cGNfb2Jq
ZWN0X3Q+IGNyZWF0ZU1lc3NhZ2VEaWN0aW9uYXJ5KHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0
IFZlY3Rvcjx1aW50OF90PiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9w
dE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVyc2lv
biIsIDEpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwg
Im1lc3NhZ2UgdHlwZSIsIG1lc3NhZ2VUeXBlKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfZGF0
YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5jb2RlZCBtZXNzYWdlIiwgbWVzc2FnZS5kYXRhKCksIG1l
c3NhZ2Uuc2l6ZSgpKTsKKyAgICByZXR1cm4gV1RGTW92ZShkaWN0aW9uYXJ5KTsKK30KKworLy8g
VXNlcyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIHRoZSBkYWVtb24gZm9yIGEgb25lLW9mZiBt
ZXNzYWdlCit2b2lkIHNlbmRNZXNzYWdlVG9EYWVtb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uLCB1aW50OF90IG1lc3NhZ2VUeXBlLCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2Up
Cit7CisgICAgYXV0byBkaWN0aW9uYXJ5ID0gY3JlYXRlTWVzc2FnZURpY3Rpb25hcnkobWVzc2Fn
ZVR5cGUsIG1lc3NhZ2UpOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLCBkaWN0aW9uYXJ5LmdldCgpKTsKK30KKworLy8gVXNlcyBhbiBleGlzdGluZyBjb25uZWN0
aW9uIHRvIHRoZSBkYWVtb24gZm9yIGEgb25lLW9mZiBtZXNzYWdlLCB3YWl0aW5nIGZvciB0aGUg
cmVwbHkKK3ZvaWQgc2VuZE1lc3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh4cGNfY29ubmVj
dGlvbl90IGNvbm5lY3Rpb24sIHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50
OF90PiYgbWVzc2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVNZXNzYWdlRGlj
dGlvbmFyeShtZXNzYWdlVHlwZSwgbWVzc2FnZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9
IGZhbHNlOworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KGNvbm5l
Y3Rpb24sIGRpY3Rpb25hcnkuZ2V0KCksIGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oeHBj
X29iamVjdF90IHJlcXVlc3QpIHsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfSk7CisKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworfQorCitzdGF0aWMgdm9pZCBzZW5k
Q29uZmlndXJhdGlvbldpdGhBdWRpdFRva2VuKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikK
K3sKKyAgICBhdWRpdF90b2tlbl90IHRva2VuID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07
CisgICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBhdWRpdFRva2VuQ291bnQgPSBUQVNLX0FVRElU
X1RPS0VOX0NPVU5UOworICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hf
dGFza19zZWxmKCksIFRBU0tfQVVESVRfVE9LRU4sICh0YXNrX2luZm9fdCkoJnRva2VuKSwgJmF1
ZGl0VG9rZW5Db3VudCk7CisgICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8g
U2VuZCBjb25maWd1cmF0aW9uIHdpdGggYXVkaXQgdG9rZW4KKyAgICB7CisgICAgICAgIFZlY3Rv
cjx1aW50OF90PiBlbmNvZGVkTWVzc2FnZSg0Mik7CisgICAgICAgIGVuY29kZWRNZXNzYWdlLmZp
bGwoMCk7CisgICAgICAgIGVuY29kZWRNZXNzYWdlWzFdID0gMTsKKyAgICAgICAgZW5jb2RlZE1l
c3NhZ2VbMl0gPSAzMjsKKyAgICAgICAgbWVtY3B5KCZlbmNvZGVkTWVzc2FnZVsxMF0sICZ0b2tl
biwgc2l6ZW9mKHRva2VuKSk7CisgICAgICAgIHNlbmRNZXNzYWdlVG9EYWVtb24oY29ubmVjdGlv
biwgNiwgZW5jb2RlZE1lc3NhZ2UpOworICAgIH0KK30KKworUmV0YWluUHRyPHhwY19jb25uZWN0
aW9uX3Q+IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UoY29uc3QgY2hhciog
c2VydmljZU5hbWUpCit7CisgICAgYXV0byBjb25uZWN0aW9uID0gYWRvcHROUyh4cGNfY29ubmVj
dGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNlKHNlcnZpY2VOYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9x
dWV1ZSgpLCAwKSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVj
dGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0X3QpIHsgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fYWN0
aXZhdGUoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgc2VuZENvbmZpZ3VyYXRpb25XaXRoQXVkaXRU
b2tlbihjb25uZWN0aW9uLmdldCgpKTsKKworICAgIHJldHVybiBXVEZNb3ZlKGNvbm5lY3Rpb24p
OworfQorCitzdGF0aWMgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcm
IG1lc3NhZ2UpCit7CisgICAgQVNTRVJUKG1lc3NhZ2UuaXM4Qml0KCkpOworICAgIGF1dG8gdXRm
OCA9IG1lc3NhZ2UudXRmOCgpOworCisgICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCh1dGY4Lmxl
bmd0aCgpICsgNSk7CisgICAgcmVzdWx0WzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odXRmOC5s
ZW5ndGgoKSk7CisgICAgcmVzdWx0WzFdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odXRmOC5sZW5n
dGgoKSA+PiA4KTsKKyAgICByZXN1bHRbMl0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih1dGY4Lmxl
bmd0aCgpID4+IDE2KTsKKyAgICByZXN1bHRbM10gPSBzdGF0aWNfY2FzdDx1aW50OF90CisgICAg
Pih1dGY4Lmxlbmd0aCgpID4+IDI0KTsKKyAgICByZXN1bHRbNF0gPSAweDAxOworCisgICAgYXV0
byBkYXRhID0gdXRmOC5kYXRhKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB1dGY4Lmxl
bmd0aCgpOyArK2kpCisgICAgICAgIHJlc3VsdFs1ICsgaV0gPSBkYXRhW2ldOworCisgICAgcmV0
dXJuIHJlc3VsdDsKK30KKwogLy8gRklYTUU6IFJlLWVuYWJsZSB0aGlzIHRlc3Qgb24gTWFjIG9u
Y2Ugd2Via2l0Lm9yZy8yMzI4NTcgaXMgcmVzb2x2ZWQuCiAjaWYgUExBVEZPUk0oTUFDKQogVEVT
VChXZWJQdXNoRCwgRElTQUJMRURfQmFzaWNDb21tdW5pY2F0aW9uKQpAQCAtMTk2LDQ0ICsyNzYs
MjAgQEAgVEVTVChXZWJQdXNoRCwgQmFzaWNDb21tdW5pY2F0aW9uKQogICAgIH0pOwogCiAgICAg
eHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUoY29ubmVjdGlvbi5nZXQoKSk7Ci0KLSAgICBhdWRpdF90
b2tlbl90IHRva2VuID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07Ci0gICAgbWFjaF9tc2df
dHlwZV9udW1iZXJfdCBhdWRpdFRva2VuQ291bnQgPSBUQVNLX0FVRElUX1RPS0VOX0NPVU5UOwot
ICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRB
U0tfQVVESVRfVE9LRU4sICh0YXNrX2luZm9fdCkoJnRva2VuKSwgJmF1ZGl0VG9rZW5Db3VudCk7
Ci0gICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUo
ZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gU2VuZCBjb25maWd1cmF0
aW9uIHdpdGggYXVkaXQgdG9rZW4KLSAgICB7Ci0gICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwg
NDI+IGVuY29kZWRNZXNzYWdlOwotICAgICAgICBlbmNvZGVkTWVzc2FnZS5maWxsKDApOwotICAg
ICAgICBlbmNvZGVkTWVzc2FnZVsxXSA9IDE7Ci0gICAgICAgIGVuY29kZWRNZXNzYWdlWzJdID0g
MzI7Ci0gICAgICAgIG1lbWNweSgmZW5jb2RlZE1lc3NhZ2VbMTBdLCAmdG9rZW4sIHNpemVvZih0
b2tlbikpOwotICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5
X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgInByb3RvY29sIHZlcnNpb24iLCAxKTsKLSAgICAg
ICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAibWVzc2FnZSB0
eXBlIiwgNik7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0
KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBlbmNvZGVkTWVzc2FnZS5kYXRhKCksIGVuY29kZWRNZXNz
YWdlLnNpemUoKSk7Ci0gICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0
aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKLSAgICB9CisgICAgc2VuZENvbmZpZ3VyYXRp
b25XaXRoQXVkaXRUb2tlbihjb25uZWN0aW9uLmdldCgpKTsKIAogICAgIC8vIEVuYWJsZSBkZWJ1
ZyBtZXNzYWdlcywgYW5kIHdhaXQgZm9yIHRoZSByZXN1bHRpbmcgZGVidWcgbWVzc2FnZQogICAg
IHsKICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVh
dGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAgICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDE+
IGVuY29kZWRNZXNzYWdlIHsgMSB9OwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0
KGRpY3Rpb25hcnkuZ2V0KCksICJwcm90b2NvbCB2ZXJzaW9uIiwgMSk7Ci0gICAgICAgIHhwY19k
aWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIsIDUp
OwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRfZGF0YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5j
b2RlZCBtZXNzYWdlIiwgZW5jb2RlZE1lc3NhZ2UuZGF0YSgpLCBlbmNvZGVkTWVzc2FnZS5zaXpl
KCkpOwotCi0gICAgICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdl
dCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICAgICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRN
ZXNzYWdlKDEpOworICAgICAgICBlbmNvZGVkTWVzc2FnZVswXSA9IDE7CisgICAgICAgIHNlbmRN
ZXNzYWdlVG9EYWVtb24oY29ubmVjdGlvbi5nZXQoKSwgNSwgZW5jb2RlZE1lc3NhZ2UpOwogICAg
ICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwogICAgIH0KIAogICAgIC8vIEVj
aG8gYW5kIHdhaXQgZm9yIGEgcmVwbHkKICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhw
Y19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgc3RkOjphcnJh
eTx1aW50OF90LCAxMD4gZW5jb2RlZFN0cmluZyB7IDUsIDAsIDAsIDAsIDEsICdoJywgJ2UnLCAn
bCcsICdsJywgJ28nIH07CisgICAgYXV0byBlbmNvZGVkU3RyaW5nID0gZW5jb2RlU3RyaW5nKCJo
ZWxsbyIpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwg
InByb3RvY29sIHZlcnNpb24iLCAxKTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRp
Y3Rpb25hcnkuZ2V0KCksICJtZXNzYWdlIHR5cGUiLCAxKTsKICAgICB4cGNfZGljdGlvbmFyeV9z
ZXRfZGF0YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5jb2RlZCBtZXNzYWdlIiwgZW5jb2RlZFN0cmlu
Zy5kYXRhKCksIGVuY29kZWRTdHJpbmcuc2l6ZSgpKTsKQEAgLTM0MSw2ICszOTcsMTQwIEBAIFRF
U1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2VtZW50KQogICAgIGNsZWFuVXBUZXN0V2ViUHVz
aEQodGVtcERpcmVjdG9yeSk7CiB9CiAKK3N0YXRpYyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9
IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2cobXNnKQoreworICAgIHdpbmRv
dy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBvc3RNZXNzYWdlKG1zZyk7Cit9CisKK2NvbnN0
IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwoKTsKK2NoYW5uZWwucG9ydDEub25tZXNzYWdl
ID0gKGV2ZW50KSA9PiBsb2coZXZlbnQuZGF0YSk7CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKChyZWdpc3RyYXRpb24pID0+IHsKKyAgICBpZiAocmVn
aXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICByZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNz
YWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICB3
b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVjaGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAg
ICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZhdGVkJykKKyAgICAgICAgICAgIHdvcmtlci5w
b3N0TWVzc2FnZSh7cG9ydDogY2hhbm5lbC5wb3J0Mn0sIFtjaGFubmVsLnBvcnQyXSk7CisgICAg
fSk7Cit9KS5jYXRjaChmdW5jdGlvbihlcnJvcikgeworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZh
aWxlZCB3aXRoOiAiICsgZXJyb3IpOworfSk7Cis8L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKwor
c3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVzID0gUiJTV1JFU09VUkNFKAorbGV0IHBvcnQ7
CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCAoZXZlbnQpID0+IHsKKyAgICBwb3J0
ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlYWR5Iik7Cit9KTsK
K3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaCIsIChldmVudCkgPT4geworICAgIHRyeSB7Cisg
ICAgICAgIGlmICghZXZlbnQuZGF0YSkgeworICAgICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgi
UmVjZWl2ZWQ6IG51bGwgZGF0YSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGF0YS50ZXh0KCk7CisgICAgICAgIHBvcnQucG9z
dE1lc3NhZ2UoIlJlY2VpdmVkOiAiICsgdmFsdWUpOworICAgICAgICBpZiAodmFsdWUgIT0gJ1N3
ZWV0IFBvdGF0b2VzJykKKyAgICAgICAgICAgIGV2ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVj
dCgnSSB3YW50IHN3ZWV0IHBvdGF0b2VzJykpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAg
cG9ydC5wb3N0TWVzc2FnZSgiR290IGV4Y2VwdGlvbiAiICsgZSk7CisgICAgfQorfSk7CispU1dS
RVNPVVJDRSI7CisKK3N0YXRpYyB2b2lkIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVE
YXRhU3RvcmUgKnN0b3JlKQoreworICAgIF9fYmxvY2sgYm9vbCBjbGVhcmVkU3RvcmUgPSBmYWxz
ZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRh
T2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVk
U2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29tcGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAg
ICAgY2xlYXJlZFN0b3JlID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGls
OjpydW4oJmNsZWFyZWRTdG9yZSk7Cit9CisKKy8vIEZJWE1FOiBSZS1lbmFibGUgdGhpcyB0ZXN0
IG9uIE1hYyBvbmNlIHdlYmtpdC5vcmcvMjMyODU3IGlzIHJlc29sdmVkLgorI2lmIFBMQVRGT1JN
KE1BQykKK1RFU1QoV2ViUHVzaEQsIERJU0FCTEVEX0hhbmRsZUluamVjdGVkUHVzaCkKKyNlbHNl
CitURVNUKFdlYlB1c2hELCBIYW5kbGVJbmplY3RlZFB1c2gpCisjZW5kaWYKK3sKKyAgICBbV0tX
ZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVEYXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOwor
CisgICAgTlNVUkwgKnRlbXBEaXJlY3RvcnkgPSBzZXRVcFRlc3RXZWJQdXNoRCgpOworCisgICAg
YXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0gYWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9y
ZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS53
ZWJQdXNoTWFjaFNlcnZpY2VOYW1lID0gQCJvcmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNl
cnZpY2UiOworICAgIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCkud2ViUHVzaERhZW1vblVz
ZXNNb2NrQnVuZGxlc0ZvclRlc3RpbmcgPSBZRVM7CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9w
dE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRh
dGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsKKworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29u
ZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0b3JlID0gZGF0YVN0b3JlLmdldCgpOworICAg
IGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7
CisKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5wcmVmZXJlbmNlcyBfc2V0Tm90aWZpY2F0aW9u
c0VuYWJsZWQ6WUVTXTsKKyAgICBmb3IgKF9XS0V4cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUg
aW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRhbEZlYXR1cmVzXSkgeworICAgICAgICBpZiAo
W2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpAIkJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxl
ZCJdKQorICAgICAgICAgICAgW1tjb25maWd1cmF0aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxl
ZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAgICB9CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5k
bGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFuZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtb
Y29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRyb2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5k
bGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6QCJzdyJdOworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgW21lc3NhZ2VIYW5kbGVyIGFkZE1lc3NhZ2U6QCJSZWFkeSIgd2l0
aEhhbmRsZXI6XnsKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgW21lc3NhZ2VI
YW5kbGVyIGFkZE1lc3NhZ2U6QCJSZWNlaXZlZDogSGVsbG8gV29ybGQiIHdpdGhIYW5kbGVyOl57
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworCisgICAgVGVzdFdlYktpdEFQSTo6SFRU
UFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIvIiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAg
ICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNj
cmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0KKyAgICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2Vy
dmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICAvLyBJbmplY3QgcHVzaCBtZXNzYWdlCisg
ICAgYXV0byBlbmNvZGVkTWVzc2FnZSA9IGVuY29kZVN0cmluZygiY29tLmFwcGxlLldlYktpdC5U
ZXN0V2ViS2l0QVBJIik7CisgICAgZW5jb2RlZE1lc3NhZ2UuYXBwZW5kVmVjdG9yKGVuY29kZVN0
cmluZyhzZXJ2ZXIucmVxdWVzdCgpLlVSTC5hYnNvbHV0ZVN0cmluZykpOworICAgIGVuY29kZWRN
ZXNzYWdlLmFwcGVuZFZlY3RvcihlbmNvZGVTdHJpbmcoIkhlbGxvIFdvcmxkIikpOworCisgICAg
YXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1Nl
cnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZSIpOworICAgIHNlbmRN
ZXNzYWdlVG9EYWVtb25XYWl0aW5nRm9yUmVwbHkodXRpbGl0eUNvbm5lY3Rpb24uZ2V0KCksIDcs
IGVuY29kZWRNZXNzYWdlKTsKKworICAgIC8vIEZldGNoIHB1c2ggbWVzc2FnZXMKKyAgICBfX2Js
b2NrIFJldGFpblB0cjxOU0FycmF5PE5TRGljdGlvbmFyeSAqPj4gbWVzc2FnZXM7CisgICAgW2Rh
dGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczpeKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+
ICpyYXdNZXNzYWdlcykgeworICAgICAgICBtZXNzYWdlcyA9IHJhd01lc3NhZ2VzOworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIEVYUEVDVF9FUShbbWVzc2FnZXMgY291bnRd
LCAxdSk7CisKKyAgICAvLyBIYW5kbGUgcHVzaCBtZXNzYWdlCisgICAgX19ibG9jayBib29sIHB1
c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CisgICAgW2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hN
ZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9iamVjdF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJl
c3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2VkKTsKKworICAgIGNsZWFuVXBUZXN0V2ViUHVz
aEQodGVtcERpcmVjdG9yeSk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAog
I2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExBVEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0
QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRleCBjMmI3MTE2ZTMwYjYuLjJjZTZlN2M5MGE1
OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgK
KysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTc4LDYg
Kzc4LDcgQEAKIAogQGludGVyZmFjZSBUZXN0TWVzc2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tT
Y3JpcHRNZXNzYWdlSGFuZGxlcj4KIC0gKHZvaWQpYWRkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNz
YWdlIHdpdGhIYW5kbGVyOihkaXNwYXRjaF9ibG9ja190KWhhbmRsZXI7CistICh2b2lkKXNldFdp
bGRjYXJkTWVzc2FnZUhhbmRsZXI6KHZvaWQgKF4pKE5TU3RyaW5nICopKWhhbmRsZXI7CiBAZW5k
CiAKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyA6IFdLV2ViVmlldwo=
</data>
<flag name="review"
          id="471807"
          type_id="1"
          status="+"
          setter="achristensen"
    />
    <flag name="commit-queue"
          id="471816"
          type_id="3"
          status="-"
          setter="achristensen"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446424</attachid>
            <date>2021-12-08 14:42:23 -0800</date>
            <delta_ts>2021-12-08 22:38:49 -0800</delta_ts>
            <desc>PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>72715</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggN2NmZGQ0NTFlMDEzLi40NzZkMzEyZGVjZTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQg
YnkgQVBJIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgICAtIEFkZHMgV0tX
ZWJzaXRlRGF0YVN0b3JlIFNQSSB0byBmZXRjaCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMgZm9yIHRo
ZSBlbWJlZGRpbmcgYXBwbGljYXRpb24KKyAgICAgICAgIC0gR2l2ZXMgd2VicHVzaGQgY29kZSB0
byBpbmplY3QgYSBwdXNoIG1lc3NhZ2UgZm9yIGEgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIKKyAg
ICAgICAgIC0gR2l2ZXMgd2VicHVzaHRvb2wgdGhlIGFiaWxpdHkgdG8gc2VuZCBvbmUgb2YgdGhl
c2UgZmFrZSBtZXNzYWdlcworICAgICAgICAgLSBHaXZlcyB3ZWJwdXNodG9vbCB0aGUgYWJpbGl0
eSB0byByZWNvbm5lY3QgdG8gdGhlIG5leHQgZGFlbW9uIGluc3RhbmNlIGFmdGVyIHRoZSBjdXJy
ZW50IGNvbm5lY3Rpb24gaXMgZHJvcHBlZAorICAgICAgICAgLSBUZXN0cyB0aGUgaW5qZWN0aW9u
IGFuZCBmZXRjaGluZyBvZiBwdXNoIG1lc3NhZ2VzIHZpYSBUZXN0V2ViS2l0QVBJCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBSZXNvdXJjZXMvd2VicHVz
aHRvb2wuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVz
aE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxW
ZWN0b3I8V2ViUHVzaE1lc3NhZ2U+OjpjYWxsUmVwbHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJQdXNoTWVzc2FnZUNvY29hLm1tOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZnJvbURpY3Rpb25hcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6dG9EaWN0aW9uYXJ5IGNvbnN0KToKKworICAgICAg
ICAqIFNoYXJlZC9QdXNoTWVzc2FnZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjpkZWNvZGUpOgorCisgICAg
ICAgICogU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHVzaEQ6Om1lc3NhZ2VUeXBlU2VuZHNSZXBseSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHVzaE1lc3NhZ2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNo
dG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaE1l
c3NhZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpk
ZWNvZGUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNz
YWdlczpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm9jZXNzUHVzaE1lc3Nh
Z2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOnJlZ2lzdHJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJv
Y2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CitcCisgICAgICAgICogd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24u
aDoKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbToKKyAgICAgICAg
KFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwSGFzUHVzaEVudGl0bGVtZW50KToK
KyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpob3N0QXBwSGFzUHVzaEluamVj
dEVudGl0bGVtZW50KToKKyAgICAgICAgKFdlYlB1c2hEOjpDbGllbnRDb25uZWN0aW9uOjpob3N0
SGFzRW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246OmJy
b2FkY2FzdERlYnVnTWVzc2FnZSk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lmg6CisgICAgICAgICogd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbToKKyAgICAgICAgKFdlYlB1
c2hEOjpNZXNzYWdlSW5mbzo6aW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjplbmNvZGVSZXBs
eSk6CisgICAgICAgIChXZWJQdXNoRDo6TWVzc2FnZUluZm86OmdldFBlbmRpbmdQdXNoTWVzc2Fn
ZXM6OmVuY29kZVJlcGx5KToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmRlY29kZUFuZEhh
bmRsZU1lc3NhZ2UpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6aW5qZWN0UHVzaE1lc3Nh
Z2VGb3JUZXN0aW5nKToKKyAgICAgICAgKFdlYlB1c2hEOjpEYWVtb246OmdldFBlbmRpbmdQdXNo
TWVzc2FnZXMpOgorCisgICAgICAgICogd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xD
b25uZWN0aW9uLmg6CisgICAgICAgIChXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6c2V0UHVzaE1l
c3NhZ2UpOgorCisgICAgICAgICogd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25u
ZWN0aW9uLm1tOgorICAgICAgICAoV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OnN0YXJ0QWN0aW9u
KToKKyAgICAgICAgKFdlYlB1c2hUb29sOjpDb25uZWN0aW9uOjpzZW5kUHVzaE1lc3NhZ2UpOgor
CisgICAgICAgICogd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1tOgorICAg
ICAgICAocHJpbnRVc2FnZUFuZFRlcm1pbmF0ZSk6CisgICAgICAgIChwdXNoTWVzc2FnZUZyb21B
cmd1bWVudHMpOgorICAgICAgICAobWFpbik6CisKIDIwMjEtMTItMDYgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHdlYnB1c2hkL3dlYnB1c2h0b29sIGRlYnVn
Z2luZyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMv
d2VicHVzaHRvb2wueGNjb25maWcgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1
c2h0b29sLnhjY29uZmlnCmluZGV4IDczNzFhMzM3MzRmNy4uN2NiN2Y4NWViNmY0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1c2h0b29sLnhjY29uZmlnCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ29uZmlndXJhdGlvbnMvd2VicHVzaHRvb2wueGNjb25maWcKQEAg
LTI5LDcgKzI5LDcgQEAgU0tJUF9JTlNUQUxMID0gWUVTOwogRVhDTFVERURfU09VUkNFX0ZJTEVf
TkFNRVNbc2RrPWFwcGxldHYqXSA9ICo7CiBFWENMVURFRF9TT1VSQ0VfRklMRV9OQU1FU1tzZGs9
d2F0Y2gqXSA9ICo7CiAKLU9USEVSX0xERkxBR1MgPSAtbCBXVEYgLWZyYW1ld29yayBGb3VuZGF0
aW9uIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb247CitPVEhFUl9MREZMQUdTID0gLWZyYW1ld29y
ayBXZWJLaXQgLWZyYW1ld29yayBKYXZhU2NyaXB0Q29yZQogTElCUkFSWV9TRUFSQ0hfUEFUSFMg
PSAkKEJVSUxUX1BST0RVQ1RTX0RJUik7CiAKIENPREVfU0lHTl9FTlRJVExFTUVOVFMgPSBSZXNv
dXJjZXMvd2VicHVzaHRvb2wuZW50aXRsZW1lbnRzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmNwcAppbmRleCA0NzJjOGI1N2MzMmMuLmQxNWM1NmI2
YjhlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vz
cy5jcHAKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJXZWJDb29raWVNYW5hZ2VyLmgiCiAj
aW5jbHVkZSAiV2ViUGFnZVByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9v
bE1lc3NhZ2VzLmgiCisjaW5jbHVkZSAiV2ViUHVzaE1lc3NhZ2UuaCIKICNpbmNsdWRlICJXZWJS
ZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbmNsdWRlICJXZWJTV09yaWdpblN0b3Jl
LmgiCiAjaW5jbHVkZSAiV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgiCkBAIC0yNTQ2LDEyICsyNTQ3
LDIwIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3M6OmFkZFNlcnZpY2VXb3JrZXJTZXNzaW9uKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCBwcm9jCiAgICAgICAgIFNhbmRib3hFeHRlbnNpb246
OmNvbnN1bWVQZXJtYW5lbnRseShoYW5kbGUpOwogfQogCi12b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBzdGQ6Om9w
dGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4mIGlwY0RhdGEsIFVSTCYmIHJlZ2lzdHJhdGlvblVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3ZvaWQgTmV0d29y
a1Byb2Nlc3M6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4m
JiBjYWxsYmFjaykKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPFZlY3Rvcjx1aW50OF90Pj4gZGF0YTsK
LSAgICBpZiAoaXBjRGF0YSkKLSAgICAgICAgZGF0YSA9IFZlY3Rvcjx1aW50OF90PiB7IGlwY0Rh
dGEtPmRhdGEoKSwgaXBjRGF0YS0+c2l6ZSgpIH07Ci0gICAgc3dTZXJ2ZXJGb3JTZXNzaW9uKHNl
c3Npb25JRCkucHJvY2Vzc1B1c2hNZXNzYWdlKFdURk1vdmUoZGF0YSksIFdURk1vdmUocmVnaXN0
cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykpOworI2lmIEVOQUJMRShCVUlMVF9JTl9OT1RJ
RklDQVRJT05TKQorICAgIGlmIChhdXRvKiBzZXNzaW9uID0gbmV0d29ya1Nlc3Npb24oc2Vzc2lv
bklEKSkgeworICAgICAgICBzZXNzaW9uLT5ub3RpZmljYXRpb25NYW5hZ2VyKCkuZ2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhXVEZNb3ZlKGNhbGxiYWNrKSk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisjZW5kaWYKKyAgICBjYWxsYmFjayh7IH0pOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpw
cm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJQdXNoTWVzc2Fn
ZSYmIHB1c2hNZXNzYWdlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNr
KQoreworICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLnByb2Nlc3NQdXNoTWVzc2Fn
ZShXVEZNb3ZlKHB1c2hNZXNzYWdlLnB1c2hEYXRhKSwgV1RGTW92ZShwdXNoTWVzc2FnZS5yZWdp
c3RyYXRpb25VUkwpLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNF
UlZJQ0VfV09SS0VSKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L05ldHdvcmtQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQ
cm9jZXNzLmgKaW5kZXggOWQzMmQ1Nzk3M2EwLi42YzYyNzcyMjNjNDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmgKQEAgLTExNyw2ICsxMTcsNyBA
QCBlbnVtIGNsYXNzIFN0b3JhZ2VBY2Nlc3NTdGF0dXMgOiB1aW50OF90OwogZW51bSBjbGFzcyBX
ZWJzaXRlRGF0YUZldGNoT3B0aW9uIDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFU
eXBlIDogdWludDMyX3Q7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CitzdHJ1Y3QgV2ViUHVzaE1lc3NhZ2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGFTdG9yZVBhcmFtZXRl
cnM7CiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCkBAIC0zOTYsNyArMzk3LDggQEAgcHVi
bGljOgogICAgIGJvb2wgZnRwRW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZnRwRW5hYmxlZDsg
fQogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNz
YWdlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5j
ZT4mLCBVUkwmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBn
ZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7CisgICAgdm9pZCBwcm9jZXNz
UHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQsIFdlYlB1c2hNZXNzYWdlJiYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmRO
b3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+
JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MubWVzc2FnZXMuaW4KaW5kZXggMzJhYjM4NDBiNjZhLi4yNGZlMzhiNDJkMzAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2Fn
ZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5t
ZXNzYWdlcy5pbgpAQCAtMjA2LDcgKzIwNiw4IEBAIG1lc3NhZ2VzIC0+IE5ldHdvcmtQcm9jZXNz
IExlZ2FjeVJlY2VpdmVyIHsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQot
ICAgIFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0ZDo6b3B0
aW9uYWw8SVBDOjpEYXRhUmVmZXJlbmNlPiBkYXRhLCBVUkwgcmVnaXN0cmF0aW9uVVJMKSAtPiAo
Ym9vbCBkaWRTdWNjZWVkKSBBc3luYworICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+IG1l
c3NhZ2VzKSBBc3luYworICAgIFByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIHN0cnVjdCBXZWJLaXQ6OldlYlB1c2hNZXNzYWdlIHB1c2hNZXNzYWdlKSAtPiAoYm9v
bCBkaWRTdWNjZWVkKSBBc3luYwogI2VuZGlmCiAgICAgRGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlv
blJlZ2lzdHJhdGlvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgb3JpZ2luKSAtPiAoU3RyaW5nIGVycm9yTWVzc2FnZSkgQXN5bmMK
ICAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9ucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQpIC0+IChWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
PiBvcmlnaW5zKSBBc3luYwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFu
YWdlci5jcHAKaW5kZXggZGZlMTUyMmUzNjBkLi5lMWEwMTg3YzE0MjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkRhZW1vbkVuY29kZXIuaCIKICNpbmNsdWRlICJOZXR3b3JrU2Vzc2lvbi5oIgog
I2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbi5oIgorI2luY2x1
ZGUgIldlYlB1c2hNZXNzYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbkRh
dGEuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC04OCw2ICs4OSwxNSBAQCB2b2lkIE5ldHdv
cmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25Q
ZXJtaXNzaW9ucyhDbwogICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdl
VHlwZTo6R2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM+KFdURk1v
dmUocmVwbHlIYW5kbGVyKSk7CiB9CiAKK3ZvaWQgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0
b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYpPiByZXBseUhhbmRsZXIg
PSBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKFZlY3Rv
cjxXZWJQdXNoTWVzc2FnZT4mJiBtZXNzYWdlcykgbXV0YWJsZSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKKyAgICB9OworCisgICAgc2VuZE1lc3NhZ2VX
aXRoUmVwbHk8V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzPihX
VEZNb3ZlKHJlcGx5SGFuZGxlcikpOworfQorCiB2b2lkIE5ldHdvcmtOb3RpZmljYXRpb25NYW5h
Z2VyOjpzaG93Tm90aWZpY2F0aW9uKGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIFdlYkNvcmU6Ok5vdGlmaWNh
dGlvbkRpcmVjdGlvbiwgY29uc3QgU3RyaW5nJiwgdWludDY0X3QpCiB7CiAgICAgaWYgKCFtX2Nv
bm5lY3Rpb24pCkBAIC0xODYsNiArMTk2LDE3IEBAIHRlbXBsYXRlPD4gc3RydWN0IFJlcGx5Q2Fs
bGVyPFZlY3RvcjxTdHJpbmc+JiY+IHsKICAgICB9CiB9OwogCit0ZW1wbGF0ZTw+IHN0cnVjdCBS
ZXBseUNhbGxlcjxWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiY+IHsKKyAgICBzdGF0aWMgdm9pZCBj
YWxsUmVwbHkoRGFlbW9uOjpEZWNvZGVyJiYgZGVjb2RlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQorICAgIHsK
KyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+PiBtZXNzYWdlczsK
KyAgICAgICAgZGVjb2RlciA+PiBtZXNzYWdlczsKKyAgICAgICAgaWYgKCFtZXNzYWdlcykKKyAg
ICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcih7IH0pOworICAgICAgICBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKCptZXNzYWdlcykpOworICAgIH0KK307CisKIHRlbXBsYXRlPFdl
YlB1c2hEOjpNZXNzYWdlVHlwZSBtZXNzYWdlVHlwZSwgdHlwZW5hbWUuLi4gQXJncywgdHlwZW5h
bWUuLi4gUmVwbHlBcmdzPgogdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2VuZE1l
c3NhZ2VXaXRoUmVwbHkoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXBseUFyZ3MuLi4pPiYmIGNv
bXBsZXRpb25IYW5kbGVyLCBBcmdzJiYuLi4gYXJncykgY29uc3QKIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5oIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L05ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgKaW5kZXggNmYxNjgxYTcyNTFjLi5kZmZmNWRi
ZjAyMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0
aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCkBA
IC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJOb3RpZmljYXRpb25NYW5hZ2VyTWVzc2FnZUhh
bmRsZXIuaCIKICNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbi5oIgorI2luY2x1ZGUg
IldlYlB1c2hNZXNzYWdlLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RpZmljYXRpb25EaXJlY3Rp
b24uaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApAQCAtNTIsNiArNTMsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIGRlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRp
b24oY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBTdHJpbmcmKT4mJik7CiAgICAgdm9pZCBnZXRPcmlnaW5zV2l0aFB1c2hBbmRO
b3RpZmljYXRpb25QZXJtaXNzaW9ucyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGE+Jik+JiYpOworICAgIHZvaWQgZ2V0UGVuZGlu
Z1B1c2hNZXNzYWdlcyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNo
TWVzc2FnZT4mKT4mJik7CiAKIHByaXZhdGU6CiAgICAgTmV0d29ya05vdGlmaWNhdGlvbk1hbmFn
ZXIoTmV0d29ya1Nlc3Npb24mLCBjb25zdCBTdHJpbmcmIHdlYlB1c2hNYWNoU2VydmljZU5hbWUp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50aXRs
ZW1lbnRzIGIvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50aXRsZW1lbnRz
CmluZGV4IDY0YTBiNTZiYzUwMC4uNjMyNGYwNWFkOTZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1Jlc291cmNlcy93ZWJwdXNodG9vbC5lbnRpdGxlbWVudHMKKysrIGIvU291cmNlL1dlYktp
dC9SZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50aXRsZW1lbnRzCkBAIC00LDUgKzQsNyBAQAogPGRp
Y3Q+CiAJPGtleT5jb20uYXBwbGUucHJpdmF0ZS53ZWJraXQud2VicHVzaDwva2V5PgogCTx0cnVl
Lz4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoLmluamVjdDwva2V5Pgor
CTx0cnVlLz4KIDwvZGljdD4KIDwvcGxpc3Q+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1No
YXJlZC9Db2NvYS9XZWJQdXNoTWVzc2FnZUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9TaGFyZWQv
Q29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAuLmYxMjkzOGJjNGRkZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJL
aXQvU2hhcmVkL0NvY29hL1dlYlB1c2hNZXNzYWdlQ29jb2EubW0KQEAgLTAsMCArMSw2MSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAiV2ViUHVzaE1lc3NhZ2Uu
aCIKKworI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
I2RlZmluZSBXZWJLaXRQdXNoRGF0YUtleSBAIldlYktpdFB1c2hEYXRhIgorI2RlZmluZSBXZWJL
aXRQdXNoUmVnaXN0cmF0aW9uVVJMS2V5IEAiV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTCIKKwor
c3RkOjpvcHRpb25hbDxXZWJQdXNoTWVzc2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmZyb21EaWN0aW9u
YXJ5KE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSkKK3sKKyAgICBOU1VSTCAqdXJsID0gW2RpY3Rp
b25hcnkgb2JqZWN0Rm9yS2V5OldlYktpdFB1c2hSZWdpc3RyYXRpb25VUkxLZXldOworICAgIGlm
ICghdXJsIHx8ICFbdXJsIGlzS2luZE9mQ2xhc3M6W05TVVJMIGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBOU0RhdGEgKnB1c2hEYXRhID0gW2RpY3Rpb25hcnkg
b2JqZWN0Rm9yS2V5OldlYktpdFB1c2hEYXRhS2V5XTsKKyAgICBpZiAoIXB1c2hEYXRhIHx8ICFb
cHVzaERhdGEgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4geyB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiB7
IHN0YXRpY19jYXN0PGNvbnN0IHVpbnQ4X3QqPihwdXNoRGF0YS5ieXRlcyksIHB1c2hEYXRhLmxl
bmd0aCB9LAorICAgICAgICBVUkwgeyB1cmwgfQorICAgIH0gfTsKK30KKworTlNEaWN0aW9uYXJ5
ICpXZWJQdXNoTWVzc2FnZTo6dG9EaWN0aW9uYXJ5KCkgY29uc3QKK3sKKyAgICBhdXRvIG5zRGF0
YSA9IGFkb3B0TlMoW1tOU0RhdGEgYWxsb2NdIGluaXRXaXRoQnl0ZXM6cHVzaERhdGEuZGF0YSgp
IGxlbmd0aDpwdXNoRGF0YS5zaXplKCldKTsKKyAgICByZXR1cm4gQHsKKyAgICAgICAgV2ViS2l0
UHVzaERhdGFLZXkgOiBuc0RhdGEuZ2V0KCksCisgICAgICAgIFdlYktpdFB1c2hSZWdpc3RyYXRp
b25VUkxLZXkgOiAoTlNVUkwgKilyZWdpc3RyYXRpb25VUkwKKyAgICB9OworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1B1c2hNZXNz
YWdlRm9yVGVzdGluZy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0
aW5nLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi4xYzc0N2UxNjI4
MjYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9QdXNoTWVzc2FnZUZv
clRlc3RpbmcuaApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlIDx3dGYvVVJMLmg+CisjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CisK
K25hbWVzcGFjZSBXZWJLaXQ6OldlYlB1c2hEIHsKKworc3RydWN0IFB1c2hNZXNzYWdlRm9yVGVz
dGluZyB7CisgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYp
IGNvbnN0OworICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFN0cmluZyB0
YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXI7CisgICAgVVJMIHJlZ2lzdHJhdGlvblVSTDsK
KyAgICBTdHJpbmcgbWVzc2FnZTsKK307CisKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lk
IFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7
CisgICAgZW5jb2RlciA8PCB0YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPDwgcmVnaXN0
cmF0aW9uVVJMIDw8IG1lc3NhZ2U7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gUHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjpk
ZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gdGFy
Z2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyOworICAgIGRlY29kZXIgPj4gdGFyZ2V0QXBwQ29k
ZVNpZ25pbmdJZGVudGlmaWVyOworICAgIGlmICghdGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlm
aWVyKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgc3RkOjpvcHRpb25hbDxV
Ukw+IHJlZ2lzdHJhdGlvblVSTDsKKyAgICBkZWNvZGVyID4+IHJlZ2lzdHJhdGlvblVSTDsKKyAg
ICBpZiAoIXJlZ2lzdHJhdGlvblVSTCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKwor
ICAgIHN0ZDo6b3B0aW9uYWw8U3RyaW5nPiBtZXNzYWdlOworICAgIGRlY29kZXIgPj4gbWVzc2Fn
ZTsKKyAgICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRp
ZmllciksCisgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvblVSTCksCisgICAgICAgIFdURk1v
dmUoKm1lc3NhZ2UpLAorICAgIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0OjpXZWJQ
dXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0
YW50cy5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCmlu
ZGV4IGE0ZGJjZDc3OTEyNC4uNTgwMmJiMDdjMzlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9XZWJQdXNoRGFlbW9uQ29uc3RhbnRzLmgKKysrIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oCkBAIC00Miw2ICs0Miw4IEBAIGVudW0gY2xhc3Mg
TWVzc2FnZVR5cGUgOiB1aW50OF90IHsKICAgICBHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmlj
YXRpb25QZXJtaXNzaW9ucywKICAgICBTZXREZWJ1Z01vZGVJc0VuYWJsZWQsCiAgICAgVXBkYXRl
Q29ubmVjdGlvbkNvbmZpZ3VyYXRpb24sCisgICAgSW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5n
LAorICAgIEdldFBlbmRpbmdQdXNoTWVzc2FnZXMsCiB9OwogCiBpbmxpbmUgYm9vbCBtZXNzYWdl
VHlwZVNlbmRzUmVwbHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCkBAIC01MSw2ICs1Myw4IEBA
IGlubGluZSBib29sIG1lc3NhZ2VUeXBlU2VuZHNSZXBseShNZXNzYWdlVHlwZSBtZXNzYWdlVHlw
ZSkKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpHZXRPcmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRp
b25QZXJtaXNzaW9uczoKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpEZWxldGVQdXNoQW5kTm90aWZp
Y2F0aW9uUmVnaXN0cmF0aW9uOgogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlJlcXVlc3RTeXN0ZW1O
b3RpZmljYXRpb25QZXJtaXNzaW9uOgorICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFBlbmRpbmdQ
dXNoTWVzc2FnZXM6CisgICAgY2FzZSBNZXNzYWdlVHlwZTo6SW5qZWN0UHVzaE1lc3NhZ2VGb3JU
ZXN0aW5nOgogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIE1lc3NhZ2VUeXBlOjpTZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQ6CiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6VXBkYXRlQ29ubmVjdGlv
bkNvbmZpZ3VyYXRpb246CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQdXNo
TWVzc2FnZS5oIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaE1lc3NhZ2UuaApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmY5ZTQzZjMzM2Q1NgotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hNZXNzYWdlLmgKQEAgLTAsMCAr
MSw3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8b3B0aW9uYWw+
CisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworT0JKQ19D
TEFTUyBOU0RpY3Rpb25hcnk7CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdHJ1Y3QgV2ViUHVz
aE1lc3NhZ2UgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29k
ZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxXZWJQdXNoTWVzc2FnZT4gZGVjb2RlKERlY29kZXImKTsKKworICAgIFZlY3Rvcjx1aW50
OF90PiBwdXNoRGF0YTsKKyAgICBVUkwgcmVnaXN0cmF0aW9uVVJMOworCisjaWYgUExBVEZPUk0o
Q09DT0EpCisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3NhZ2U+IGZyb21EaWN0
aW9uYXJ5KE5TRGljdGlvbmFyeSAqKTsKKyAgICBOU0RpY3Rpb25hcnkgKnRvRGljdGlvbmFyeSgp
IGNvbnN0OworI2VuZGlmCit9OworCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBXZWJQ
dXNoTWVzc2FnZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0Cit7CisgICAgZW5jb2Rl
ciA8PCBwdXNoRGF0YSA8PCByZWdpc3RyYXRpb25VUkw7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERl
Y29kZXI+CitzdGQ6Om9wdGlvbmFsPFdlYlB1c2hNZXNzYWdlPiBXZWJQdXNoTWVzc2FnZTo6ZGVj
b2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8dWludDhf
dD4+IHB1c2hEYXRhOworICAgIGRlY29kZXIgPj4gcHVzaERhdGE7CisgICAgaWYgKCFwdXNoRGF0
YSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJM
PiByZWdpc3RyYXRpb25VUkw7CisgICAgZGVjb2RlciA+PiByZWdpc3RyYXRpb25VUkw7CisgICAg
aWYgKCFyZWdpc3RyYXRpb25VUkwpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICByZXR1cm4geyB7CisgICAgICAgIFdURk1vdmUoKnB1c2hEYXRhKSwKKyAgICAgICAgV1RGTW92
ZSgqcmVnaXN0cmF0aW9uVVJMKQorICAgIH0gfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRl
RGF0YVN0b3JlLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0
ZURhdGFTdG9yZS5tbQppbmRleCA3ZWYwNjk1MGFiMDcuLjYyOTY5MDc5ZDlkNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0
b3JlLm1tCkBAIC0zOSw2ICszOSw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgog
I2ltcG9ydCAiV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgiCiAjaW1wb3J0ICJXZWJQYWdl
UHJveHkuaCIKKyNpbXBvcnQgIldlYlB1c2hNZXNzYWdlLmgiCiAjaW1wb3J0ICJXZWJSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzU3RvcmUuaCIKICNpbXBvcnQgIldlYnNpdGVEYXRhRmV0Y2hPcHRpb24u
aCIKICNpbXBvcnQgIl9XS1Jlc291cmNlTG9hZFN0YXRpc3RpY3NUaGlyZFBhcnR5SW50ZXJuYWwu
aCIKQEAgLTc2MSwxMyArNzYyLDI5IEBAIHN0YXRpYyBWZWN0b3I8V2ViS2l0OjpXZWJzaXRlRGF0
YVJlY29yZD4gdG9XZWJzaXRlRGF0YVJlY29yZHMoTlNBcnJheSAqZGF0YVJlY29yCiAgICAgcmV0
dXJuIF93ZWJzaXRlRGF0YVN0b3JlLT5oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5
Rm9yVGVzdGluZygpOwogfQogCi0tKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZTooTlNEYXRhKikg
bWVzc2FnZSByZWdpc3RyYXRpb246KE5TVVJMICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKGJvb2wgd2FzUHJvY2Vzc2VkKSljb21wbGV0aW9uSGFuZGxlcgorLSh2b2lk
KV9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOih2b2lkKF4pKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+
ICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQotICAg
IHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0YTsKLSAgICBpZiAobWVzc2Fn
ZSkKLSAgICAgICAgZGF0YSA9IFNwYW48Y29uc3QgdWludDhfdD4geyByZWludGVycHJldF9jYXN0
PGNvbnN0IHVpbnQ4X3QqPihtZXNzYWdlLmJ5dGVzKSwgbWVzc2FnZS5sZW5ndGggfTsKLSAgICBf
d2Vic2l0ZURhdGFTdG9yZS0+bmV0d29ya1Byb2Nlc3MoKS5wcm9jZXNzUHVzaE1lc3NhZ2UoX3dl
YnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBkYXRhLCByZWdpc3RyYXRpb24sIFtjb21wbGV0
aW9uSGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildIChib29sIHdhc1By
b2Nlc3NlZCkgeworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3JrUHJvY2VzcygpLmdldFBl
bmRpbmdQdXNoTWVzc2FnZXMoX3dlYnNpdGVEYXRhU3RvcmUtPnNlc3Npb25JRCgpLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoY29uc3QgVmVj
dG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+JiBtZXNzYWdlcykgeworICAgICAgICBhdXRvIHJl
c3VsdCA9IGFkb3B0TlMoW1tOU011dGFibGVBcnJheSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTpt
ZXNzYWdlcy5zaXplKCldKTsKKyAgICAgICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2FnZXMp
CisgICAgICAgICAgICBbcmVzdWx0IGFkZE9iamVjdDptZXNzYWdlLnRvRGljdGlvbmFyeSgpXTsK
KworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihyZXN1bHQuZ2V0KCkpOworICAgIH0pOworI2Vu
ZGlmCit9CisKKy0odm9pZClfcHJvY2Vzc1B1c2hNZXNzYWdlOihOU0RpY3Rpb25hcnkgKilwdXNo
TWVzc2FnZURpY3Rpb25hcnkgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoYm9vbCB3YXNQcm9j
ZXNzZWQpKWNvbXBsZXRpb25IYW5kbGVyCit7CisjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQor
ICAgIGF1dG8gcHVzaE1lc3NhZ2UgPSBXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpmcm9tRGljdGlv
bmFyeShwdXNoTWVzc2FnZURpY3Rpb25hcnkpOworICAgIGlmICghcHVzaE1lc3NhZ2UpIHsKKyAg
ICAgICAgY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNzKCkucHJvY2Vzc1B1c2hNZXNz
YWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgKnB1c2hNZXNzYWdlLCBbY29tcGxl
dGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQ
cm9jZXNzZWQpIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIod2FzUHJvY2Vzc2VkKTsKICAg
ICB9KTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKaW5kZXggYTEyYzZlYzIwYTgz
Li4xMWYwNmYyNDRjMDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaApAQCAtMTA4LDcgKzEw
OCw4IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tXZWJzaXRlRGF0YVN0b3Jl
RmV0Y2hPcHRpb25zKSB7CiAtICh2b2lkKV9jb3VudE5vbkRlZmF1bHRTZXNzaW9uU2V0czoodm9p
ZCheKShzaXplX3QpKWNvbXBsZXRpb25IYW5kbGVyOwogCiAtKGJvb2wpX2hhc1NlcnZpY2VXb3Jr
ZXJCYWNrZ3JvdW5kQWN0aXZpdHlGb3JUZXN0aW5nIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tKHZvaWQpX3Byb2Nlc3NQdXNoTWVzc2FnZToo
TlNEYXRhKilkYXRhIHJlZ2lzdHJhdGlvbjooTlNVUkwgKilyZWdpc3RyYXRpb24gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoYm9vbCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClfZ2V0UGVuZGlu
Z1B1c2hNZXNzYWdlczoodm9pZCheKShOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKSljb21wbGV0
aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9T
X1RCQSkpOworLSh2b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGljdGlvbmFyeSAqKXB1c2hN
ZXNzYWdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wpKWNvbXBsZXRpb25IYW5kbGVy
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAt
KHZvaWQpX2RlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb246KFdLU2VjdXJpdHlP
cmlnaW4gKilzZWN1cml0eU9yaWdpbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShOU0Vycm9y
ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSk7CiAtKHZvaWQpX2dldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlmaWNh
dGlvblBlcm1pc3Npb25zOih2b2lkKF4pKE5TU2V0PFdLU2VjdXJpdHlPcmlnaW4gKj4gKikpY29t
cGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IGVjOWIzNTM3NmI5YS4uMGY2YmM5
NTRkODQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTE2ODQsMTIgKzE2ODQsMTQgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpkaWRFeGNlZWRNZW1vcnlMaW1pdCgpCiAjZW5kaWYKIAogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLXZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1B1
c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNv
bnN0IHVpbnQ4X3Q+PiBkYXRhLCBjb25zdCBVUkwmIHJlZ2lzdHJhdGlvblVSTCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2FsbGJhY2spCit2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJQdXNoTWVzc2Fn
ZT4mKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0
YVJlZmVyZW5jZT4gaXBjRGF0YTsKLSAgICBpZiAoZGF0YSkKLSAgICAgICAgaXBjRGF0YSA9IElQ
Qzo6RGF0YVJlZmVyZW5jZSB7IGRhdGEtPmRhdGEoKSwgZGF0YS0+c2l6ZSgpIH07Ci0gICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJvY2Vzc1B1c2hNZXNz
YWdlIHsgc2Vzc2lvbklELCBpcGNEYXRhLCByZWdpc3RyYXRpb25VUkwgfSwgV1RGTW92ZShjYWxs
YmFjaykpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OkdldFBlbmRpbmdQdXNoTWVzc2FnZXMgeyBzZXNzaW9uSUQgfSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworfQorCit2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVz
c2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiBwdXNo
TWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYgY2Fs
bGJhY2spCit7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UHJvY2Vzc1B1c2hNZXNzYWdlIHsgc2Vzc2lvbklELCBwdXNoTWVzc2FnZSB9LCBXVEZNb3Zl
KGNhbGxiYWNrKSk7CiB9CiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IDQ0MWI4NmUxODljMi4uZWMwOWMzNmZlMDUxIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaApAQCAtOTIs
NiArOTIsNyBAQCBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90Owogc3RydWN0
IEZyYW1lSW5mb0RhdGE7CiBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM7
CiBzdHJ1Y3QgUmVzb3VyY2VMb2FkSW5mbzsKK3N0cnVjdCBXZWJQdXNoTWVzc2FnZTsKIHN0cnVj
dCBXZWJzaXRlRGF0YTsKIHN0cnVjdCBXZWJzaXRlRGF0YVN0b3JlUGFyYW1ldGVyczsKIApAQCAt
MjcyLDcgKzI3Myw4IEBAIHB1YmxpYzoKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09S
S0VSKQotICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBzdGQ6Om9w
dGlvbmFsPFNwYW48Y29uc3QgdWludDhfdD4+LCBjb25zdCBVUkwmLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKGJvb2wgd2FzUHJvY2Vzc2VkKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3Rv
cjxXZWJQdXNoTWVzc2FnZT4mKT4mJik7CisgICAgdm9pZCBwcm9jZXNzUHVzaE1lc3NhZ2UoUEFM
OjpTZXNzaW9uSUQsIGNvbnN0IFdlYlB1c2hNZXNzYWdlJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOwogI2VuZGlmCiAKICAgICB2b2lkIGRlbGV0ZVB1c2hB
bmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggOGI0YTQ2ZDAzM2MxLi44NDUyYzE1ZGRiMDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTAzMyw2ICsxMDMzLDEyIEBA
CiAJCTUxN0I1Rjg0Mjc1RTk3QjYwMDJEQzIyRCAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxRjdCQjc0
Mjc0NDk4QkEwMEM0NUE3MiAvKiBNb2NrQXBwQnVuZGxlRm9yVGVzdGluZy5tbSAqLzsgfTsKIAkJ
NTE3QjVGODUyNzVFOTdCNjAwMkRDMjJEIC8qIEFwcEJ1bmRsZVJlcXVlc3QuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNjBFOTU0Mjc0Qjg4NzEwMDU2
NzM4OCAvKiBBcHBCdW5kbGVSZXF1ZXN0LmggKi87IH07CiAJCTUxN0I1Rjg2Mjc1RTk3QjYwMDJE
QzIyRCAvKiBNb2NrQXBwQnVuZGxlUmVnaXN0cnkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTYwRTk1RjI3NEMyQTNGMDA1NjczODggLyogTW9ja0Fw
cEJ1bmRsZVJlZ2lzdHJ5Lm1tICovOyB9OworCQk1MTdCNUY5NTI3NUVCQTYzMDAyREMyMkQgLyog
UHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTdCNUY5NDI3NUVCQTYyMDAyREMyMkQgLyogUHVzaE1lc3NhZ2VGb3JU
ZXN0aW5nLmggKi87IH07CisJCTUxN0I1Rjk3Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNoTWVz
c2FnZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3
QjVGOTYyNzVFQzVFNTAwMkRDMjJEIC8qIFdlYlB1c2hNZXNzYWdlLmggKi87IH07CisJCTUxN0I1
Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjVGOTgyNzVFQzYwMDAwMkRD
MjJEIC8qIFdlYlB1c2hNZXNzYWdlQ29jb2EubW0gKi87IH07CisJCTUxN0I1RjlBMjc1RjNBODYw
MDJEQzIyRCAvKiBBcmd1bWVudENvZGVycy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAxQTNENjEwNDEzQTdGMDNBMDBGOTVENEUgLyogQXJndW1lbnRD
b2RlcnMuY3BwICovOyB9OworCQk1MTdCNUY5QjI3NUYzQTk4MDAyREMyMkQgLyogRGFlbW9uVXRp
bGl0aWVzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUMxNTc5RjkyNzE3QUY1MDAwRUQ1MjgwIC8qIERhZW1vblV0aWxpdGllcy5tbSAqLzsgfTsKKwkJ
NTE3QjVGOUMyNzVGM0MzNzAwMkRDMjJEIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMxNTc5RTgyNzE3MkE4QTAwRUQ1
MjgwIC8qIERhZW1vbkVuY29kZXIuY3BwICovOyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1
MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0NGMEUxMTYzQTQ4NkMw
MEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwICov
OyB9OwogCQk1MTdDRjBFMzE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdlRW5naW5lQ29u
bmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEYgLyogQ2FjaGVTdG9yYWdl
RW5naW5lQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi87IH07CiAJCTUxN0NGMEU0MTYz
QTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTIxNjNBNDg2
QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CkBA
IC00NDA3LDYgKzQ0MTMsOSBAQAogCQk1MTdCNUY2QjI3NUFFNTBCMDAyREMyMkQgLyogd2VicHVz
aHRvb2wuZW50aXRsZW1lbnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IG5h
bWUgPSB3ZWJwdXNodG9vbC5lbnRpdGxlbWVudHM7IHBhdGggPSBSZXNvdXJjZXMvd2VicHVzaHRv
b2wuZW50aXRsZW1lbnRzOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCNUY3MjI3
NUU5NjA5MDAyREMyMkQgLyogV2ViUHVzaERhZW1vbk1haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gV2ViUHVzaERhZW1vbk1haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTE3QjVGNzcyNzVFOTc5NTAwMkRDMjJEIC8qIHdlYnB1c2hkLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHdlYnB1c2hkLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNTE3QjVGOTQyNzVFQkE2MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdl
Rm9yVGVzdGluZy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoTWVzc2Fn
ZUZvclRlc3RpbmcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3QjVGOTYyNzVF
QzVFNTAwMkRDMjJEIC8qIFdlYlB1c2hNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFdlYlB1c2hNZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaE1lc3NhZ2VDb2NvYS5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBF
IC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNz
YWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9E
VUNUU19ESVI7IH07CiAJCTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VF
bmdpbmVDb25uZWN0aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2
ZXIuY3BwOyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L0NhY2hlU3RvcmFnZUVuZ2luZUNv
bm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNf
RElSOyB9OwogCQk1MTdDRjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25u
ZWN0aW9uTWVzc2FnZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29y
a1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktp
dC9OZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRf
UFJPRFVDVFNfRElSOyB9OwpAQCAtNjQ3Miw2ICs2NDgxLDcgQEAKIAkJCWlzYSA9IFBCWEZyYW1l
d29ya3NCdWlsZFBoYXNlOwogCQkJYnVpbGRBY3Rpb25NYXNrID0gMjE0NzQ4MzY0NzsKIAkJCWZp
bGVzID0gKAorCQkJCTUxN0I1RjlFMjc1RjNGNTQwMDJEQzIyRCAvKiBsaWJpY3Vjb3JlLnRiZCBp
biBGcmFtZXdvcmtzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nl
c3NpbmcgPSAwOwogCQl9OwpAQCAtNzEzMyw2ICs3MTQzLDcgQEAKIAkJCQlFMThDOTJGMzEyREI5
RTcxMDBDRjJBRUIgLyogUHJpbnRJbmZvLmNwcCAqLywKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2
MjU4MzggLyogUHJpbnRJbmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8q
IFByb2Nlc3NUZXJtaW5hdGlvblJlYXNvbi5oICovLAorCQkJCTUxN0I1Rjk0Mjc1RUJBNjIwMDJE
QzIyRCAvKiBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVF
MDA4Q0E3NTEgLyogUmVtb3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKIAkJCQk3
MjAzNDQ5QjI2QTZDNDc2MDAwQTVGNTQgLyogUmVuZGVyaW5nVXBkYXRlSUQuaCAqLywKIAkJCQk1
Q0I3QUZFNjIzQzY4MUIwMDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLApAQCAtNzIz
OSw2ICs3MjUwLDcgQEAKIAkJCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vz
c0RhdGFTdG9yZVBhcmFtZXRlcnMuaCAqLywKIAkJCQk1MTdCNUYyRDI3NTczODJBMDAyREMyMkQg
LyogV2ViUHVzaERhZW1vbkNvbm5lY3Rpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTEyQ0Q2
OTkyNzIxRjA0OTAwRjdGOEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAqLywKKwkJCQk1
MTdCNUY5NjI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCAqLywKIAkJCQk1QzhE
RDM3RjFGRTQ1MTkyMDBGMkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJ
NUM4REQzODExRkU0NTVDQTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCiAJ
CQkJNTExRjdEM0YxRUIxQkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJz
LmNwcCAqLywKQEAgLTg5MzUsNiArODk0Nyw3IEBACiAJCQkJN0FGMjM2MjIxRTc5QTQzMTAwNDM4
QTA1IC8qIFdlYkVycm9yc0NvY29hLm1tICovLAogCQkJCTQ2NTI1MEU1MUVDRjUyQ0QwMDIwMjVD
QiAvKiBXZWJLaXQySW5pdGlhbGl6ZUNvY29hLm1tICovLAogCQkJCTFERTA3NkQ5MjQ2MENDQkQw
MEIyMTFFOCAvKiBXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbSAqLywKKwkJCQk1
MTdCNUY5ODI3NUVDNjAwMDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSAqLywKIAkJ
CQkzN0M0QzA5MjE4MTRCM0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggKi8sCiAJCQkJMzdDNEMw
OTExODE0QjNBRjAwMzY4OEI5IC8qIFdLTlNBcnJheS5tbSAqLywKIAkJCQkzNzNDRUFENDE4NTQx
N0FFMDA4QzM2M0QgLyogV0tOU0RhdGEuaCAqLywKQEAgLTk2OTcsNiArOTcxMCw3IEBACiAJCTU3
NTBGMzI5MjAzMkQ0RTMwMDM4OTM0NyAvKiBGcmFtZXdvcmtzICovID0gewogCQkJaXNhID0gUEJY
R3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk1MTdCNUY5RDI3NUYzRjU0MDAyREMyMkQgLyog
bGliaWN1Y29yZS50YmQgKi8sCiAJCQkJNTdBOUZGMTUyNTJDNkFFRjAwNkEyMDQwIC8qIGxpYldU
Ri5hICovLAogCQkJCTU3NTBGMzJBMjAzMkQ0RTUwMDM4OTM0NyAvKiBMb2NhbEF1dGhlbnRpY2F0
aW9uLmZyYW1ld29yayAqLywKIAkJCQk1NzBEQUFCMDIzMDI3M0QyMDBFOEZDMDQgLyogTmVhckZp
ZWxkLmZyYW1ld29yayAqLywKQEAgLTEzMDA2LDYgKzEzMDIwLDcgQEAKIAkJCQk1MzIxNTk1NjFE
QkFFNzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAog
CQkJCTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50Lmgg
aW4gSGVhZGVycyAqLywKKwkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1l
c3NhZ2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBO
ZXR3b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMz
MUMwMDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
NTE0NTI2RUQyNzFFMTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmgg
aW4gSGVhZGVycyAqLywKQEAgLTEzNTEyLDYgKzEzNTI3LDcgQEAKIAkJCQk5MzU2RjJEQzIxNTJC
NkI1MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk1MTdBNTMxMDFGNDdBODYyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2Fn
ZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3QjVGOTUy
NzVFQkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNDMjE0MDM1RjgwMENG
QjIwQSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTZG
MkRFMjE1MkI3MTAwMEU2RDVERiAvKiBXZWJTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywK
QEAgLTE1MDc1LDcgKzE1MDkxLDEwIEBACiAJCQlpc2EgPSBQQlhTb3VyY2VzQnVpbGRQaGFzZTsK
IAkJCWJ1aWxkQWN0aW9uTWFzayA9IDIxNDc0ODM2NDc7CiAJCQlmaWxlcyA9ICgKKwkJCQk1MTdC
NUY5QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTE3QjVGNjgyNzVBOUE3ODAwMkRDMjJEIC8qIFdlYlB1c2hUb29sQ29ubmVjdGlvbi5t
bSBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1RjlCMjc1RjNBOTgwMDJEQzIyRCAvKiBEYWVtb25V
dGlsaXRpZXMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY5QzI3NUYzQzM3MDAyREMyMkQg
LyogRGFlbW9uRW5jb2Rlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MTdCNUY2NTI3NUE4RDdG
MDAyREMyMkQgLyogV2ViUHVzaFRvb2xNYWluLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkpOwogCQkJ
cnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CkBAIC0xNTE3MSw2ICsxNTE5
MCw3IEBACiAJCQkJQ0RBOTNEQjEyMkY4QkNGNDAwNDkwQTY5IC8qIEZ1bGxzY3JlZW5Ub3VjaFNl
Y2hldXJpc3RpY1BhcmFtZXRlcnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzFBMTUyRDcyNEU1
QTI5QTAwOTc4QzhCIC8qIEhhbmRsZVhQQ0VuZHBvaW50TWVzc2FnZXMubW0gaW4gU291cmNlcyAq
LywKIAkJCQkyNzQ5RjY0NDIxNDY1NjFCMDA4MzgwQkYgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFu
ZGxlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUxN0I1Rjk5Mjc1RUM2MDEwMDJEQzIyRCAvKiBX
ZWJQdXNoTWVzc2FnZUNvY29hLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDUyMTQ2NTYx
RTAwODM4MEJGIC8qIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJOUJGNUVDNjQyNTQxMTQ1NjAwOTg0RTc3IC8qIEpTSVBDQmluZGluZy5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQlDMTREMzdGRTI0QUNFMDg2MDA3RkYwMTQgLyogTGF1bmNoU2VydmljZXNE
YXRhYmFzZU1hbmFnZXIubW0gaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvUHVzaENsaWVudENvbm5lY3Rpb24uaAppbmRleCA3NjA1M2VmYzJkOTEuLjdmYTQzZmQ5ZTA5
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlv
bi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24uaApA
QCAtNTYsNiArNTYsNyBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBTdHJpbmcmIGhvc3RBcHBDb2Rl
U2lnbmluZ0lkZW50aWZpZXIoKTsKICAgICBib29sIGhvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQo
KTsKKyAgICBib29sIGhvc3RBcHBIYXNQdXNoSW5qZWN0RW50aXRsZW1lbnQoKTsKIAogICAgIGJv
b2wgZGVidWdNb2RlSXNFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9kZWJ1Z01vZGVFbmFibGVk
OyB9CiAgICAgdm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCk7CkBAIC03NSw2ICs3Niw4
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBtYXliZVN0YXJ0TmV4dEFwcEJ1bmRsZVJlcXVlc3QoKTsK
ICAgICB2b2lkIHNldEhvc3RBcHBBdWRpdFRva2VuRGF0YShjb25zdCBWZWN0b3I8dWludDhfdD4m
KTsKIAorICAgIGJvb2wgaG9zdEhhc0VudGl0bGVtZW50KGNvbnN0IGNoYXIqKTsKKwogICAgIE9T
T2JqZWN0UHRyPHhwY19jb25uZWN0aW9uX3Q+IG1feHBjQ29ubmVjdGlvbjsKIAogICAgIHN0ZDo6
b3B0aW9uYWw8YXVkaXRfdG9rZW5fdD4gbV9ob3N0QXBwQXVkaXRUb2tlbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0gYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tCmluZGV4IDQ1YzQxYWZlMTkw
My4uZjg5ZWYyODIzYmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1B1c2hD
bGllbnRDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24ubW0KQEAgLTg5LDE1ICs4OSwyNCBAQCBjb25zdCBTdHJpbmcmIENsaWVudENv
bm5lY3Rpb246Omhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKQogCiBib29sIENsaWVudENv
bm5lY3Rpb246Omhvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQoKQogewotICAgIGlmICghbV9ob3N0
QXBwSGFzUHVzaEVudGl0bGVtZW50KSB7Ci0gICAgICAgIGlmICghbV9ob3N0QXBwQXVkaXRUb2tl
bikKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgbV9ob3N0QXBwSGFzUHVzaEVu
dGl0bGVtZW50ID0gV1RGOjpoYXNFbnRpdGxlbWVudCgqbV9ob3N0QXBwQXVkaXRUb2tlbiwgImNv
bS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoIik7Ci0gICAgfQorICAgIGlmICghbV9ob3N0
QXBwSGFzUHVzaEVudGl0bGVtZW50KQorICAgICAgICBtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1l
bnQgPSBob3N0SGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNo
Il9zKTsKIAogICAgIHJldHVybiAqbV9ob3N0QXBwSGFzUHVzaEVudGl0bGVtZW50OwogfQogCiti
b29sIENsaWVudENvbm5lY3Rpb246Omhvc3RBcHBIYXNQdXNoSW5qZWN0RW50aXRsZW1lbnQoKQor
eworICAgIHJldHVybiBob3N0SGFzRW50aXRsZW1lbnQoImNvbS5hcHBsZS5wcml2YXRlLndlYmtp
dC53ZWJwdXNoLmluamVjdCJfcyk7Cit9CisKK2Jvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEhh
c0VudGl0bGVtZW50KGNvbnN0IGNoYXIqIGVudGl0bGVtZW50KQoreworICAgIGlmICghbV9ob3N0
QXBwQXVkaXRUb2tlbikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIHJldHVybiBXVEY6Omhh
c0VudGl0bGVtZW50KCptX2hvc3RBcHBBdWRpdFRva2VuLCBlbnRpdGxlbWVudCk7Cit9CisKIHZv
aWQgQ2xpZW50Q29ubmVjdGlvbjo6c2V0RGVidWdNb2RlSXNFbmFibGVkKGJvb2wgZW5hYmxlZCkK
IHsKICAgICBpZiAoZW5hYmxlZCA9PSBtX2RlYnVnTW9kZUVuYWJsZWQpCkBAIC0xMTIsOSArMTIx
LDkgQEAgdm9pZCBDbGllbnRDb25uZWN0aW9uOjpicm9hZGNhc3REZWJ1Z01lc3NhZ2UoY29uc3Qg
U3RyaW5nJiBtZXNzYWdlKQogICAgIFN0cmluZyBtZXNzYWdlSWRlbnRpZmllcjsKICAgICBhdXRv
IHNpZ25pbmdJZGVudGlmZXIgPSBob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7CiAgICAg
aWYgKHNpZ25pbmdJZGVudGlmZXIuaXNFbXB0eSgpKQotICAgICAgICBtZXNzYWdlSWRlbnRpZmll
ciA9IG1ha2VTdHJpbmcgKCJbKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1f
eHBjQ29ubmVjdGlvbi5nZXQoKSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSks
ICIpXSAiKTsKKyAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBtYWtlU3RyaW5nKCJbKDB4Iiwg
aGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVjdGlvbi5nZXQoKSksIFdU
Rjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsKICAgICBlbHNlCi0gICAg
ICAgIG1lc3NhZ2VJZGVudGlmaWVyID0gbWFrZVN0cmluZyAoIlsiLCBzaWduaW5nSWRlbnRpZmVy
LCAiICgweCIsIGhleChyZWludGVycHJldF9jYXN0PHVpbnQ2NF90PihtX3hwY0Nvbm5lY3Rpb24u
Z2V0KCkpLCBXVEY6OkhleENvbnZlcnNpb25Nb2RlOjpMb3dlcmNhc2UpLCAiKV0gIik7CisgICAg
ICAgIG1lc3NhZ2VJZGVudGlmaWVyID0gbWFrZVN0cmluZygiWyIsIHNpZ25pbmdJZGVudGlmZXIs
ICIgKDB4IiwgaGV4KHJlaW50ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVjdGlvbi5n
ZXQoKSksIFdURjo6SGV4Q29udmVyc2lvbk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsKIAogICAg
IERhZW1vbjo6c2luZ2xldG9uKCkuYnJvYWRjYXN0RGVidWdNZXNzYWdlKEpTQzo6TWVzc2FnZUxl
dmVsOjpJbmZvLCBtYWtlU3RyaW5nKG1lc3NhZ2VJZGVudGlmaWVyLCBtZXNzYWdlKSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaCBiL1NvdXJj
ZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCmluZGV4IDJhMTJjYTM0NDNlNC4uMzNj
Y2Q1MzY0NjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVt
b24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL1dlYlB1c2hEYWVtb24uaApAQCAtMjYs
OCArMjYsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUHVzaENsaWVudENvbm5lY3Rp
b24uaCIKKyNpbmNsdWRlICJQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCIKICNpbmNsdWRlICJXZWJQ
dXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24uaCIKICNpbmNsdWRlICJXZWJQdXNoRGFl
bW9uQ29uc3RhbnRzLmgiCisjaW5jbHVkZSAiV2ViUHVzaE1lc3NhZ2UuaCIKKyNpbmNsdWRlIDx3
dGYvRGVxdWUuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNo
TWFwLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hTZXQuaD4KQEAgLTQwLDYgKzQzLDcgQEAgbmFtZXNw
YWNlIEpTQyB7CiBlbnVtIGNsYXNzIE1lc3NhZ2VMZXZlbCA6IHVpbnQ4X3Q7CiB9CiAKK3VzaW5n
IFdlYktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdlRm9yVGVzdGluZzsKIHVzaW5nIFdlYktpdDo6
V2ViUHVzaEQ6OldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbjsKIAogbmFtZXNw
YWNlIFdlYlB1c2hEIHsKQEAgLTYyLDYgKzY2LDggQEAgcHVibGljOgogICAgIHZvaWQgZGVsZXRl
UHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbihDbGllbnRDb25uZWN0aW9uKiwgY29uc3Qg
U3RyaW5nJiBvcmlnaW5TdHJpbmcsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5n
Jik+JiYgcmVwbHlTZW5kZXIpOwogICAgIHZvaWQgc2V0RGVidWdNb2RlSXNFbmFibGVkKENsaWVu
dENvbm5lY3Rpb24qLCBib29sKTsKICAgICB2b2lkIHVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0
aW9uKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24mKTsKKyAgICB2b2lkIGluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZyhDbGllbnRD
b25uZWN0aW9uKiwgY29uc3QgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJik7CisgICAgdm9pZCBnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENsaWVu
dENvbm5lY3Rpb24qLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxXZWJLaXQ6
OldlYlB1c2hNZXNzYWdlPiYpPiYmIHJlcGx5U2VuZGVyKTsKIAogICAgIHZvaWQgYnJvYWRjYXN0
RGVidWdNZXNzYWdlKEpTQzo6TWVzc2FnZUxldmVsLCBjb25zdCBTdHJpbmcmKTsKIApAQCAtNzUs
NiArODEsOCBAQCBwcml2YXRlOgogCiAgICAgQ2xpZW50Q29ubmVjdGlvbiogdG9DbGllbnRDb25u
ZWN0aW9uKHhwY19jb25uZWN0aW9uX3QpOwogICAgIEhhc2hNYXA8eHBjX2Nvbm5lY3Rpb25fdCwg
UmVmPENsaWVudENvbm5lY3Rpb24+PiBtX2Nvbm5lY3Rpb25NYXA7CisKKyAgICBIYXNoTWFwPFN0
cmluZywgRGVxdWU8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPj4gbV90ZXN0aW5nUHVzaE1lc3NhZ2Vz
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvV2Vi
UHVzaERhZW1vbi5tbQppbmRleCBmZDdiMjUwMDUwOWIuLjQyNDI2YmU0YjZhNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5tbQpAQCAtNzAsNiArNzAsMTEgQEAgQVJHVU1F
TlRTKFN0cmluZykKIFJFUExZKGJvb2wpCiBFTkQKIAorRlVOQ1RJT04oZ2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcykKK0FSR1VNRU5UUygpCitSRVBMWShjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNo
TWVzc2FnZT4mKQorRU5ECisKIEZVTkNUSU9OKHNldERlYnVnTW9kZUlzRW5hYmxlZCkKIEFSR1VN
RU5UUyhib29sKQogRU5ECkBAIC03OCw2ICs4MywxMSBAQCBGVU5DVElPTih1cGRhdGVDb25uZWN0
aW9uQ29uZmlndXJhdGlvbikKIEFSR1VNRU5UUyhXZWJQdXNoRGFlbW9uQ29ubmVjdGlvbkNvbmZp
Z3VyYXRpb24pCiBFTkQKIAorRlVOQ1RJT04oaW5qZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nKQor
QVJHVU1FTlRTKFB1c2hNZXNzYWdlRm9yVGVzdGluZykKK1JFUExZKGJvb2wpCitFTkQKKwogI3Vu
ZGVmIEZVTkNUSU9OCiAjdW5kZWYgQVJHVU1FTlRTCiAjdW5kZWYgUkVQTFkKQEAgLTExMSw2ICsx
MjEsMjAgQEAgV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIHJlcXVlc3RTeXN0ZW1Ob3RpZmljYXRp
b25QZXJtaXNzaW9uOjplbmNvZGVSZXBseShib29sIHIKICAgICByZXR1cm4gZW5jb2Rlci50YWtl
QnVmZmVyKCk7CiB9CiAKK1dlYlB1c2hEOjpFbmNvZGVkTWVzc2FnZSBpbmplY3RQdXNoTWVzc2Fn
ZUZvclRlc3Rpbmc6OmVuY29kZVJlcGx5KGJvb2wgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVt
b246OkVuY29kZXIgZW5jb2RlcjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBl
bmNvZGVyLnRha2VCdWZmZXIoKTsKK30KKworV2ViUHVzaEQ6OkVuY29kZWRNZXNzYWdlIGdldFBl
bmRpbmdQdXNoTWVzc2FnZXM6OmVuY29kZVJlcGx5KGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1
c2hNZXNzYWdlPiYgcmVwbHkpCit7CisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5jb2Rl
cjsKKyAgICBlbmNvZGVyIDw8IHJlcGx5OworICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgTWVzc2FnZUluZm8KIAogdGVtcGxhdGU8dHlwZW5hbWUg
SW5mbz4KQEAgLTIzMyw2ICsyNTcsMTIgQEAgdm9pZCBEYWVtb246OmRlY29kZUFuZEhhbmRsZU1l
c3NhZ2UoeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCBNZXNzYWdlVHlwZSBtZXMKICAgICBj
YXNlIE1lc3NhZ2VUeXBlOjpVcGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlvbjoKICAgICAgICAg
aGFuZGxlV2ViUHVzaERNZXNzYWdlPE1lc3NhZ2VJbmZvOjp1cGRhdGVDb25uZWN0aW9uQ29uZmln
dXJhdGlvbj4oY2xpZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2UpOwogICAgICAgICBicmVh
azsKKyAgICBjYXNlIE1lc3NhZ2VUeXBlOjpJbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc6Cisg
ICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6aW5qZWN0
UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPihjbGllbnRDb25uZWN0aW9uLCBlbmNvZGVkTWVzc2FnZSwg
V1RGTW92ZShyZXBseVNlbmRlcikpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIE1lc3NhZ2VU
eXBlOjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOgorICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3Nh
Z2VXaXRoUmVwbHk8TWVzc2FnZUluZm86OmdldFBlbmRpbmdQdXNoTWVzc2FnZXM+KGNsaWVudENv
bm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7CisgICAgICAg
IGJyZWFrOwogICAgIH0KIH0KIApAQCAtMjk3LDYgKzMyNyw1NSBAQCB2b2lkIERhZW1vbjo6dXBk
YXRlQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiogY2xpZW50Q29ubmVj
dGlvbiwgYwogICAgIGNsaWVudENvbm5lY3Rpb24tPnVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0
aW9uKGNvbmZpZ3VyYXRpb24pOwogfQogCit2b2lkIERhZW1vbjo6aW5qZWN0UHVzaE1lc3NhZ2VG
b3JUZXN0aW5nKENsaWVudENvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIGNvbnN0IFB1c2hNZXNzYWdl
Rm9yVGVzdGluZyYgbWVzc2FnZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiByZXBs
eVNlbmRlcikKK3sKKyAgICBpZiAoIWNvbm5lY3Rpb24tPmhvc3RBcHBIYXNQdXNoSW5qZWN0RW50
aXRsZW1lbnQoKSkgeworICAgICAgICBjb25uZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01lc3NhZ2Uo
IkF0dGVtcHRpbmcgdG8gaW5qZWN0IGEgcHVzaCBtZXNzYWdlIGZyb20gYW4gdW5lbnRpdGxlZCBw
cm9jZXNzIik7CisgICAgICAgIHJlcGx5U2VuZGVyKGZhbHNlKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGlmIChtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllci5p
c0VtcHR5KCkgfHwgIW1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMLmlzVmFsaWQoKSkgeworICAgICAg
ICBjb25uZWN0aW9uLT5icm9hZGNhc3REZWJ1Z01lc3NhZ2UoIkF0dGVtcHRpbmcgdG8gaW5qZWN0
IGFuIGludmFsaWQgcHVzaCBtZXNzYWdlIik7CisgICAgICAgIHJlcGx5U2VuZGVyKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVn
TWVzc2FnZShtYWtlU3RyaW5nKCJJbmplY3RlZCBhIHRlc3QgcHVzaCBtZXNzYXNnZSBmb3IgIiwg
bWVzc2FnZS50YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIsICIgYXQgIiwgbWVzc2FnZS5y
ZWdpc3RyYXRpb25VUkwuc3RyaW5nKCkpKTsKKyAgICBjb25uZWN0aW9uLT5icm9hZGNhc3REZWJ1
Z01lc3NhZ2UobWVzc2FnZS5tZXNzYWdlKTsKKworICAgIGF1dG8gYWRkUmVzdWx0ID0gbV90ZXN0
aW5nUHVzaE1lc3NhZ2VzLmVuc3VyZShtZXNzYWdlLnRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRp
ZmllciwgW10geworICAgICAgICByZXR1cm4gRGVxdWU8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPiB7
IH07CisgICAgfSk7CisgICAgYWRkUmVzdWx0Lml0ZXJhdG9yLT52YWx1ZS5hcHBlbmQobWVzc2Fn
ZSk7CisKKyAgICByZXBseVNlbmRlcih0cnVlKTsKK30KKwordm9pZCBEYWVtb246OmdldFBlbmRp
bmdQdXNoTWVzc2FnZXMoQ2xpZW50Q29ubmVjdGlvbiogY29ubmVjdGlvbiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViS2l0OjpXZWJQdXNoTWVzc2FnZT4mKT4mJiByZXBs
eVNlbmRlcikKK3sKKyAgICBhdXRvIGhvc3RBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIgPSBjb25u
ZWN0aW9uLT5ob3N0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyKCk7CisgICAgaWYgKGhvc3RBcHBD
b2RlU2lnbmluZ0lkZW50aWZpZXIuaXNFbXB0eSgpKSB7CisgICAgICAgIHJlcGx5U2VuZGVyKHsg
fSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBWZWN0b3I8V2ViS2l0OjpXZWJQdXNo
TWVzc2FnZT4gcmVzdWx0TWVzc2FnZXM7CisKKyAgICBhdXRvIGl0ZXJhdG9yID0gbV90ZXN0aW5n
UHVzaE1lc3NhZ2VzLmZpbmQoaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcik7CisgICAgaWYg
KGl0ZXJhdG9yICE9IG1fdGVzdGluZ1B1c2hNZXNzYWdlcy5lbmQoKSkgeworICAgICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBpdGVyYXRvci0+dmFsdWUpIHsKKyAgICAgICAgICAgIGF1dG8gZGF0
YSA9IG1lc3NhZ2UubWVzc2FnZS51dGY4KCk7CisgICAgICAgICAgICByZXN1bHRNZXNzYWdlcy5h
cHBlbmQoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZSB7IFZlY3Rvcjx1aW50OF90PiB7IHJlaW50ZXJw
cmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGRhdGEuZGF0YSgpKSwgZGF0YS5sZW5ndGgoKSB9LCBt
ZXNzYWdlLnJlZ2lzdHJhdGlvblVSTCB9KTsKKyAgICAgICAgfQorICAgICAgICBtX3Rlc3RpbmdQ
dXNoTWVzc2FnZXMucmVtb3ZlKGl0ZXJhdG9yKTsKKyAgICB9CisKKyAgICBjb25uZWN0aW9uLT5i
cm9hZGNhc3REZWJ1Z01lc3NhZ2UobWFrZVN0cmluZygiRmV0Y2hpbmcgIiwgU3RyaW5nOjpudW1i
ZXIocmVzdWx0TWVzc2FnZXMuc2l6ZSgpKSwgIiBwZW5kaW5nIHB1c2ggbWVzc2FnZXMiKSk7CisK
KyAgICByZXBseVNlbmRlcihXVEZNb3ZlKHJlc3VsdE1lc3NhZ2VzKSk7Cit9CisKIENsaWVudENv
bm5lY3Rpb24qIERhZW1vbjo6dG9DbGllbnRDb25uZWN0aW9uKHhwY19jb25uZWN0aW9uX3QgY29u
bmVjdGlvbikKIHsKICAgICBhdXRvIGNsaWVudENvbm5lY3Rpb24gPSBtX2Nvbm5lY3Rpb25NYXAu
Z2V0KGNvbm5lY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJw
dXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
d2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmgKaW5kZXggZmY2MjM2YjdiZWU3Li5i
ZTJmMTc5OTFjNDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRv
b2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93
ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaApAQCAtMjUsMTEgKzI1LDE1IEBACiAK
ICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmgiCiAjaW5j
bHVkZSA8bWVtb3J5PgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KKyNpbmNsdWRlIDx3dGYv
VVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KICNpbmNsdWRlIDx3dGYvc3BpL2Rhcndp
bi9YUENTUEkuaD4KIAordXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0
aW5nOworCiBuYW1lc3BhY2UgV2ViUHVzaFRvb2wgewogCiBlbnVtIGNsYXNzIEFjdGlvbiB7CkBA
IC01NCwxOSArNTgsMjQgQEAgcHVibGljOgogCiAgICAgdm9pZCBjb25uZWN0VG9TZXJ2aWNlKCk7
CiAKKyAgICB2b2lkIHNldFB1c2hNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZv
clRlc3Rpbmc+JiYgbWVzc2FnZSkgeyBtX3B1c2hNZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKTsg
fQorCiBwcml2YXRlOgogICAgIHZvaWQgbWVzc2FnZVJlY2VpdmVkKHhwY19vYmplY3RfdCk7CiAg
ICAgdm9pZCBjb25uZWN0aW9uRHJvcHBlZCgpOwogCiAgICAgdm9pZCBzdGFydEFjdGlvbigpOwog
ICAgIHZvaWQgc3RhcnREZWJ1Z1N0cmVhbUFjdGlvbigpOworICAgIHZvaWQgc2VuZFB1c2hNZXNz
YWdlKCk7CiAKICAgICB2b2lkIHNlbmRBdWRpdFRva2VuKCk7Ci0gICAgCisKICAgICBBY3Rpb24g
bV9hY3Rpb247CiAgICAgYm9vbCBtX3JlY29ubmVjdCB7IGZhbHNlIH07CiAgICAgUmV0YWluUHRy
PHhwY19jb25uZWN0aW9uX3Q+IG1fY29ubmVjdGlvbjsKICAgICBjb25zdCBjaGFyKiBtX3NlcnZp
Y2VOYW1lOworCisgICAgc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gbV9w
dXNoTWVzc2FnZTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYlB1c2hUb29sCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlv
bi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25u
ZWN0aW9uLm1tCmluZGV4IGJkZTRlNTRlMTFlMC4uYTQzMzRkNjQ2Mzc3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29u
bmVjdGlvbi5tbQpAQCAtMjYsNiArMjYsOSBAQAogI2ltcG9ydCAiY29uZmlnLmgiCiAjaW1wb3J0
ICJXZWJQdXNoVG9vbENvbm5lY3Rpb24uaCIKIAorI2ltcG9ydCAiRGFlbW9uRW5jb2Rlci5oIgor
I2ltcG9ydCAiRGFlbW9uVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJXZWJQdXNoRGFlbW9uQ29uc3Rh
bnRzLmgiCiAjaW1wb3J0IDxtYWNoL21hY2hfaW5pdC5oPgogI2ltcG9ydCA8bWFjaC90YXNrLmg+
CiAjaW1wb3J0IDxwYWwvc3BpL2NvY29hL1NlcnZlcnNTUEkuaD4KQEAgLTExOCw2ICsxMjEsMjYg
QEAgdm9pZCBDb25uZWN0aW9uOjpzdGFydEFjdGlvbigpCiAgICAgICAgIHN0YXJ0RGVidWdTdHJl
YW1BY3Rpb24oKTsKICAgICAgICAgYnJlYWs7CiAgICAgfTsKKworICAgIGlmIChtX3B1c2hNZXNz
YWdlKQorICAgICAgICBzZW5kUHVzaE1lc3NhZ2UoKTsKK30KKwordm9pZCBDb25uZWN0aW9uOjpz
ZW5kUHVzaE1lc3NhZ2UoKQoreworICAgIEFTU0VSVChtX3B1c2hNZXNzYWdlKTsKKworICAgIFdl
YktpdDo6RGFlbW9uOjpFbmNvZGVyIGVuY29kZXI7CisgICAgZW5jb2RlciA8PCAqbV9wdXNoTWVz
c2FnZTsKKworICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3Jl
YXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0
KGRpY3Rpb25hcnkuZ2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnByb3RvY29sVmVyc2lvbktleSwg
V2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uVmFsdWUpOworICAgIHhwY19kaWN0aW9u
YXJ5X3NldF92YWx1ZShkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2Nv
bEVuY29kZWRNZXNzYWdlS2V5LCBXZWJLaXQ6OnZlY3RvclRvWFBDRGF0YShlbmNvZGVyLnRha2VC
dWZmZXIoKSkuZ2V0KCkpOworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFy
eS5nZXQoKSwgV2ViS2l0OjpXZWJQdXNoRDo6cHJvdG9jb2xNZXNzYWdlVHlwZUtleSwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KFdlYktpdDo6V2ViUHVzaEQ6Ok1lc3NhZ2VUeXBlOjpJbmplY3RQdXNo
TWVzc2FnZUZvclRlc3RpbmcpKTsKKworICAgIHhwY19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZV93
aXRoX3JlcGx5KG1fY29ubmVjdGlvbi5nZXQoKSwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgXih4cGNfb2JqZWN0X3QgcmVzdWx0TWVzc2FnZSkgeworICAgICAg
ICAvLyBUaGlzIHJlcGx5IGhhbmRsZXIgaW50ZW50aW9uYWxseSBsZWZ0IGJsYW5rCisgICAgfSk7
CiB9CiAKIHZvaWQgQ29ubmVjdGlvbjo6c3RhcnREZWJ1Z1N0cmVhbUFjdGlvbigpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5t
bSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1t
CmluZGV4IDYyZjY3OGY5ZmQ2Ni4uYTU4Nzk1OThkYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sTWFpbi5tbQpAQCAtMjQsMTEg
KzI0LDE0IEBACiAgKi8KIAogI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJQdXNoTWVzc2Fn
ZUZvclRlc3RpbmcuaCIKICNpbXBvcnQgIldlYlB1c2hUb29sQ29ubmVjdGlvbi5oIgogI2ltcG9y
dCA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CiAjaW1wb3J0IDxvcHRpb25hbD4KICNpbXBvcnQg
PHd0Zi9NYWluVGhyZWFkLmg+CiAKK3VzaW5nIFdlYktpdDo6V2ViUHVzaEQ6OlB1c2hNZXNzYWdl
Rm9yVGVzdGluZzsKKwogX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkKIHN0YXRpYyB2b2lk
IHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoTlNTdHJpbmcgKm1lc3NhZ2UpCiB7CkBAIC0zNiwxNSAr
MzksNDMgQEAgc3RhdGljIHZvaWQgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShOU1N0cmluZyAqbWVz
c2FnZSkKIAogICAgIGZwcmludGYoc3RkZXJyLCAiVXNhZ2U6IHdlYnB1c2h0b29sIFtvcHRpb25z
XVxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICJcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAi
ICAtLWRldmVsb3BtZW50ICAgICAgICAgICAgICBDb25uZWN0cyB0byBtYWNoIHNlcnZpY2UgXCJv
cmcud2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2VcIiAoRGVmYXVsdClcbiIpOwotICAg
IGZwcmludGYoc3RkZXJyLCAiICAtLXByb2R1Y3Rpb24gICAgICAgICAgICAgICBDb25uZWN0cyB0
byBtYWNoIHNlcnZpY2UgXCJjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnNlcnZpY2VcIlxuIik7
Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC0tc3RyZWFtRGVidWdNZXNzYWdlcyAgICAgIFN0cmVh
bSBkZWJ1ZyBtZXNzYWdlcyBmcm9tIHdlYnB1c2hkXG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwg
IiAgLS1yZWNvbm5lY3QgICAgICAgICAgICAgICAgUmVjb25uZWN0IGFmdGVyIGNvbm5lY3Rpb24g
aXMgbG9zdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgIC0tZGV2ZWxvcG1lbnRcbiIpOwor
ICAgIGZwcmludGYoc3RkZXJyLCAiICAgIENvbm5lY3RzIHRvIG1hY2ggc2VydmljZSBcIm9yZy53
ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2VydmljZVwiIChEZWZhdWx0KVxuIik7CisgICAgZnBy
aW50ZihzdGRlcnIsICIgIC0tcHJvZHVjdGlvblxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIg
ICAgQ29ubmVjdHMgdG8gbWFjaCBzZXJ2aWNlIFwiY29tLmFwcGxlLndlYmtpdC53ZWJwdXNoZC5z
ZXJ2aWNlXCJcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXN0cmVhbURlYnVnTWVzc2Fn
ZXNcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAgIFN0cmVhbSBkZWJ1ZyBtZXNzYWdlcyBm
cm9tIHdlYnB1c2hkXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1yZWNvbm5lY3RcbiIp
OworICAgIGZwcmludGYoc3RkZXJyLCAiICAgIFJlY29ubmVjdCBhZnRlciBjb25uZWN0aW9uIGlz
IGxvc3RcbiIpOworICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXB1c2ggPHRhcmdldCBhcHAgaWRl
bnRpZmllcj4gPHJlZ2lzdHJhdGlvbiBVUkw+IDxtZXNzYWdlPlxuIik7CisgICAgZnByaW50Zihz
dGRlcnIsICIgICAgSW5qZWN0IGEgdGVzdCBwdXNoIG1lc3Nhc2dlIHRvIHRoZSB0YXJnZXQgYXBw
IGFuZCByZWdpc3RyYXRpb24gVVJMXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIlxuIik7CiAK
ICAgICBleGl0KC0xKTsKIH0KIAorc3RhdGljIHN0ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZv
clRlc3Rpbmc+IHB1c2hNZXNzYWdlRnJvbUFyZ3VtZW50cyhOU0VudW1lcmF0b3I8TlNTdHJpbmcg
Kj4gKmVudW1lcmF0b3IpCit7CisgICAgTlNTdHJpbmcgKmFwcElkZW50aWZpZXIgPSBbZW51bWVy
YXRvciBuZXh0T2JqZWN0XTsKKyAgICBpZiAoIWFwcElkZW50aWZpZXIpCisgICAgICAgIHJldHVy
biBudWxscHRyOworCisgICAgTlNTdHJpbmcgKnJlZ2lzdHJhdGlvblN0cmluZyA9IFtlbnVtZXJh
dG9yIG5leHRPYmplY3RdOworICAgIGlmICghcmVnaXN0cmF0aW9uU3RyaW5nKQorICAgICAgICBy
ZXR1cm4gbnVsbHB0cjsKKworICAgIE5TVVJMICpyZWdpc3RyYXRpb25VUkwgPSBbTlNVUkwgVVJM
V2l0aFN0cmluZzpyZWdpc3RyYXRpb25TdHJpbmddOworICAgIGlmICghcmVnaXN0cmF0aW9uVVJM
KQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2Vu
dW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICByZXR1cm4g
bnVsbHB0cjsKKworICAgIFB1c2hNZXNzYWdlRm9yVGVzdGluZyBwdXNoTWVzc2FnZSA9IHsgYXBw
SWRlbnRpZmllciwgcmVnaXN0cmF0aW9uVVJMLCBtZXNzYWdlIH07CisgICAgcmV0dXJuIG1ha2VV
bmlxdWVXaXRob3V0RmFzdE1hbGxvY0NoZWNrPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4oV1RGTW92
ZShwdXNoTWVzc2FnZSkpOworfQorCiBpbnQgbWFpbihpbnQsIGNvbnN0IGNoYXIgKiopCiB7CiAg
ICAgV1RGOjppbml0aWFsaXplTWFpblRocmVhZCgpOwpAQCAtNTIsMTMgKzgzLDE2IEBAIGludCBt
YWluKGludCwgY29uc3QgY2hhciAqKikKICAgICBhdXRvIHByZWZlclRlc3RTZXJ2aWNlID0gV2Vi
UHVzaFRvb2w6OlByZWZlclRlc3RTZXJ2aWNlOjpZZXM7CiAgICAgYXV0byByZWNvbm5lY3QgPSBX
ZWJQdXNoVG9vbDo6UmVjb25uZWN0OjpObzsKICAgICBzdGQ6Om9wdGlvbmFsPFdlYlB1c2hUb29s
OjpBY3Rpb24+IGFjdGlvbjsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8UHVzaE1lc3NhZ2VGb3JUZXN0
aW5nPiBwdXNoTWVzc2FnZTsKIAogICAgIEBhdXRvcmVsZWFzZXBvb2wgewogICAgICAgICBOU0Fy
cmF5ICphcmd1bWVudHMgPSBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIGFyZ3VtZW50c107
CiAgICAgICAgIGlmIChhcmd1bWVudHMuY291bnQgPT0gMSkKICAgICAgICAgICAgIHByaW50VXNh
Z2VBbmRUZXJtaW5hdGUoQCJObyBhcmd1bWVudHMgcHJvdmlkZWQiKTsKIAotICAgICAgICBmb3Ig
KE5TU3RyaW5nICphcmd1bWVudCBpbiBbYXJndW1lbnRzIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFr
ZVJhbmdlKDEsIGFyZ3VtZW50cy5jb3VudCAtIDEpXSkgeworICAgICAgICBOU0VudW1lcmF0b3I8
TlNTdHJpbmcgKj4gKmVudW1lcmF0b3IgPSBbW2FyZ3VtZW50cyBzdWJhcnJheVdpdGhSYW5nZTpO
U01ha2VSYW5nZSgxLCBhcmd1bWVudHMuY291bnQgLSAxKV0gb2JqZWN0RW51bWVyYXRvcl07Cisg
ICAgICAgIE5TU3RyaW5nICphcmd1bWVudCA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAg
ICAgICB3aGlsZSAoYXJndW1lbnQpIHsKICAgICAgICAgICAgIGlmIChbYXJndW1lbnQgaXNFcXVh
bFRvU3RyaW5nOkAiLS1wcm9kdWN0aW9uIl0pCiAgICAgICAgICAgICAgICAgcHJlZmVyVGVzdFNl
cnZpY2UgPSBXZWJQdXNoVG9vbDo6UHJlZmVyVGVzdFNlcnZpY2U6Ok5vOwogICAgICAgICAgICAg
ZWxzZSBpZiAoW2FyZ3VtZW50IGlzRXF1YWxUb1N0cmluZzpAIi0tZGV2ZWxvcG1lbnQiXSkKQEAg
LTY3LDE1ICsxMDEsMjQgQEAgaW50IG1haW4oaW50LCBjb25zdCBjaGFyICoqKQogICAgICAgICAg
ICAgICAgIGFjdGlvbiA9IFdlYlB1c2hUb29sOjpBY3Rpb246OlN0cmVhbURlYnVnTWVzc2FnZXM7
CiAgICAgICAgICAgICBlbHNlIGlmIChbYXJndW1lbnQgaXNFcXVhbFRvU3RyaW5nOkAiLS1yZWNv
bm5lY3QiXSkKICAgICAgICAgICAgICAgICByZWNvbm5lY3QgPSBXZWJQdXNoVG9vbDo6UmVjb25u
ZWN0OjpZZXM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICBlbHNlIGlmIChbYXJndW1l
bnQgaXNFcXVhbFRvU3RyaW5nOkAiLS1wdXNoIl0pIHsKKyAgICAgICAgICAgICAgICBwdXNoTWVz
c2FnZSA9IHB1c2hNZXNzYWdlRnJvbUFyZ3VtZW50cyhlbnVtZXJhdG9yKTsKKyAgICAgICAgICAg
ICAgICBpZiAoIXB1c2hNZXNzYWdlKQorICAgICAgICAgICAgICAgICAgICBwcmludFVzYWdlQW5k
VGVybWluYXRlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW52YWxpZCBwdXNoIGFyZ3Vt
ZW50cyBzcGVjaWZpZWQiXSk7CisgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICBw
cmludFVzYWdlQW5kVGVybWluYXRlKFtOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiSW52YWxp
ZCBvcHRpb24gcHJvdmlkZWQ6ICVAIiwgYXJndW1lbnRdKTsKKworICAgICAgICAgICAgYXJndW1l
bnQgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
ICghYWN0aW9uKQorICAgIGlmICghYWN0aW9uICYmICFwdXNoTWVzc2FnZSkKICAgICAgICAgcHJp
bnRVc2FnZUFuZFRlcm1pbmF0ZShAIk5vIGFjdGlvbiBwcm92aWRlZCIpOwogCiAgICAgYXV0byBj
b25uZWN0aW9uID0gV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OmNyZWF0ZSgqYWN0aW9uLCBwcmVm
ZXJUZXN0U2VydmljZSwgcmVjb25uZWN0KTsKKyAgICBpZiAocHVzaE1lc3NhZ2UpCisgICAgICAg
IGNvbm5lY3Rpb24tPnNldFB1c2hNZXNzYWdlKFdURk1vdmUocHVzaE1lc3NhZ2UpKTsKKwogICAg
IGNvbm5lY3Rpb24tPmNvbm5lY3RUb1NlcnZpY2UoKTsKIAogICAgIENGUnVuTG9vcFJ1bigpOwpk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGQxNTk2
YzE1MGZhOC4uZDljZDE2Yzg4OTljIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIv
VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAKKzIwMjEtMTItMDggIEJyYWR5IEVpZHNv
biAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBt
ZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMzM5ODgKKworICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVu
c2VuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLWlPUy5lbnRpdGxlbWVudHM6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9Db25maWd1cmF0
aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50czoKKyAgICAgICAg
KiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRs
ZW1lbnRzOgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNo
QVBJLm1tOgorICAgICAgICAobWVzc2FnZURpY3Rpb25hcnkpOgorCisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoVGVz
dFdlYktpdEFQSTo6Y3JlYXRlTWVzc2FnZURpY3Rpb25hcnkpOgorICAgICAgICAoVGVzdFdlYktp
dEFQSTo6c2VuZE1lc3NhZ2VUb0RhZW1vbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZW5k
TWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OnNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4pOgorICAgICAgICAoVGVzdFdlYktpdEFQ
STo6Y3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZSk6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjplbmNvZGVTdHJpbmcpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpmdW5jdGlvbik6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lmg6CisKIDIwMjEtMTItMDYgIEJyYWR5IEVpZHNvbiAg
PGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIHdlYnB1c2hkL3dlYnB1c2h0b29sIGRlYnVn
Z2luZyBhZGRpdGlvbnMKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLWlPUy5lbnRpdGxlbWVudHMKaW5kZXggMmZk
MGVhZjI1MWFlLi4xZTVlODdhMjlhMzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
Q29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1lbnRzCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1pT1MuZW50aXRsZW1l
bnRzCkBAIC0xMiw2ICsxMiw4IEBACiAJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUu
d2Via2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUucHJpdmF0ZS53
ZWJraXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiAJPGtleT5jb20uYXBwbGUucHJp
dmF0ZS54cGMubGF1bmNoZC5qb2ItbWFuYWdlcjwva2V5PgogCTxzdHJpbmc+VGVzdFdlYktpdEFQ
STwvc3RyaW5nPgogPC9kaWN0PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50cyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy1pbnRl
cm5hbC5lbnRpdGxlbWVudHMKaW5kZXggZjZmNTRlMTc0MjVmLi42ZmMyNGM0YTA0NTYgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1t
YWNPUy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25m
aWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLWludGVybmFsLmVudGl0bGVtZW50cwpAQCAt
Niw2ICs2LDggQEAKIAk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0cmluZz4KIAk8a2V5PmNvbS5h
cHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFw
cGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxrZXk+
Y29tLmFwcGxlLmhpZC5tYW5hZ2VyLnVzZXItYWNjZXNzLWRldmljZTwva2V5PgogCTx0cnVlLz4K
IAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLmhpZC5jbGllbnQuZXZlbnQtZmlsdGVyPC9rZXk+CmRp
ZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRB
UEktbWFjT1MuZW50aXRsZW1lbnRzIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cwppbmRleCA5ZTYxMTc2NDlhY2QuLmNj
OTYyMTA0YTM0OSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9u
cy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2ViS2l0
QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MuZW50aXRsZW1lbnRzCkBAIC0x
MCw2ICsxMCw4IEBACiAJPC9hcnJheT4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53
ZWJwdXNoPC9rZXk+CiAJPHRydWUvPgorCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0Lndl
YnB1c2guaW5qZWN0PC9rZXk+CisJPHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnNlY3VyaXR5LnRl
bXBvcmFyeS1leGNlcHRpb24uc2JwbDwva2V5PgogCTxhcnJheT4KIAkJPHN0cmluZz4oYWxsb3cg
bWFjaC1pc3N1ZS1leHRlbnNpb24gKHJlcXVpcmUtYWxsIChleHRlbnNpb24tY2xhc3MgJnF1b3Q7
Y29tLmFwcGxlLndlYmtpdC5leHRlbnNpb24ubWFjaCZxdW90OykpKTwvc3RyaW5nPgpkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tIGIv
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCmluZGV4IGM0
YTczNjRkNzU0Yy4uYjY3Mjk2NzhhZjk5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1tCkBAIC0zNCw2ICszNCwxNCBAQAogI2ltcG9ydCA8
V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4KICNpbXBvcnQgPFdlYktpdC9fV0tX
ZWJzaXRlRGF0YVN0b3JlQ29uZmlndXJhdGlvbi5oPgogCitzdGF0aWMgTlNEaWN0aW9uYXJ5ICpt
ZXNzYWdlRGljdGlvbmFyeShOU0RhdGEgKmRhdGEsIE5TVVJMICpyZWdpc3RyYXRpb24pCit7Cisg
ICAgcmV0dXJuIEB7CisgICAgICAgIEAiV2ViS2l0UHVzaERhdGEiIDogZGF0YSwKKyAgICAgICAg
QCJXZWJLaXRQdXNoUmVnaXN0cmF0aW9uVVJMIiA6IHJlZ2lzdHJhdGlvbgorICAgIH07Cit9CisK
IHN0YXRpYyBTdHJpbmcgZXhwZWN0ZWRNZXNzYWdlOwogCiBAaW50ZXJmYWNlIFB1c2hBUElNZXNz
YWdlSGFuZGxlcldpdGhFeHBlY3RlZE1lc3NhZ2UgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdl
SGFuZGxlcj4KQEAgLTE0Niw3ICsxNTQsOCBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnQp
CiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gZmFsc2U7CiAgICAgTlNTdHJpbmcgKm1lc3Nh
Z2UgPSBAIlN3ZWV0IFBvdGF0b2VzIjsKICAgICBleHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2ZWQ6
IFN3ZWV0IFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0g
X3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlv
bkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworCisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVE
YXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2Ug
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3Qo
KSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIHB1c2hN
ZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQg
PSB0cnVlOwogICAgIH1dOwpAQCAtMTYwLDcgKzE2OSw3IEBAIFRFU1QoUHVzaEFQSSwgZmlyZVB1
c2hFdmVudCkKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBtZXNzYWdl
ID0gQCJSb3R0ZW4gUG90YXRvZXMiOwogICAgIGV4cGVjdGVkTWVzc2FnZSA9ICJSZWNlaXZlZDog
Um90dGVuIFBvdGF0b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0g
X3Byb2Nlc3NQdXNoTWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJp
bmdFbmNvZGluZ10gcmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlv
bkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0
YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRh
dGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkg
VVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBwdXNoTWVz
c2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0g
dHJ1ZTsKICAgICB9XTsKQEAgLTIzNCw3ICsyNDMsNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNo
RXZlbnRXaXRoTm9QYWdlc1N1Y2Nlc3NmdWwpCiAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBm
YWxzZTsKICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBOU1N0cmluZyAq
bWVzc2FnZSA9IEAiU3dlZXQgUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRl
RGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5n
Ok5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkgVVJM
XSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tjb25maWd1cmF0aW9u
IHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnko
W21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVy
LnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAgICAg
ICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQ
cm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMjc5LDcgKzI4OCw3IEBAIFRFU1QoUHVzaEFQ
SSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzRmFpbCkKICAgICBwdXNoTWVzc2FnZVByb2Nlc3Nl
ZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOwogICAgIE5TU3Ry
aW5nICptZXNzYWdlID0gQCJSb3R0ZW4gUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJhdGlvbiB3
ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0Vu
Y29kaW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0
KCkgVVJMXSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tjb25maWd1
cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rp
b25hcnkoW21lc3NhZ2UgZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBb
c2VydmVyLnJlcXVlc3QoKSBVUkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7
CiAgICAgICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1l
c3NhZ2VQcm9jZXNzZWQgPSB0cnVlOwogICAgIH1dOwpAQCAtMzMyLDcgKzM0MSw3IEBAIFRFU1Qo
UHVzaEFQSSwgZmlyZVB1c2hFdmVudFdpdGhOb1BhZ2VzVGltZW91dCkKICAgICBwdXNoTWVzc2Fn
ZVByb2Nlc3NlZCA9IGZhbHNlOwogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9IGZhbHNlOwog
ICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJUaW1lbGVzcyBQb3RhdG9lcyI7Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2Ug
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJhdGlvbjpbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpt
ZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9v
bCByZXN1bHQpIHsKICAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OwogICAg
ICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CiAgICAgfV07CmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0gYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KaW5k
ZXggNzNmNGMyOGY4OTUwLi5kNjZlNDQwYjYzZDYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV2ViUHVzaERhZW1vbi5tbQorKysgYi9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1c2hEYWVtb24ubW0KQEAgLTI2LDYgKzI2
LDcgQEAKICNpbXBvcnQgImNvbmZpZy5oIgogCiAjaW1wb3J0ICJEYWVtb25UZXN0VXRpbGl0aWVz
LmgiCisjaW1wb3J0ICJIVFRQU2VydmVyLmgiCiAjaW1wb3J0ICJUZXN0LmgiCiAjaW1wb3J0ICJU
ZXN0VVJMU2NoZW1lSGFuZGxlci5oIgogI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgpAQCAtMzUs
NyArMzYsNiBAQAogI2ltcG9ydCA8V2ViS2l0L1dLV2Vic2l0ZURhdGFTdG9yZVByaXZhdGUuaD4K
ICNpbXBvcnQgPFdlYktpdC9fV0tFeHBlcmltZW50YWxGZWF0dXJlLmg+CiAjaW1wb3J0IDxXZWJL
aXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24uaD4KLSNpbXBvcnQgPGFycmF5Pgog
I2ltcG9ydCA8bWFjaC9tYWNoX2luaXQuaD4KICNpbXBvcnQgPG1hY2gvdGFzay5oPgogCkBAIC0x
NjIsNiArMTYyLDg1IEBAIHN0YXRpYyB2b2lkIGNsZWFuVXBUZXN0V2ViUHVzaEQoTlNVUkwgKnRl
bXBEaXIpCiAgICAgRVhQRUNUX05VTEwoZXJyb3IpOwogfQogCitzdGF0aWMgUmV0YWluUHRyPHhw
Y19vYmplY3RfdD4gY3JlYXRlTWVzc2FnZURpY3Rpb25hcnkodWludDhfdCBtZXNzYWdlVHlwZSwg
Y29uc3QgVmVjdG9yPHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9
IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksICJwcm90b2NvbCB2
ZXJzaW9uIiwgMSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5Lmdl
dCgpLCAibWVzc2FnZSB0eXBlIiwgbWVzc2FnZVR5cGUpOworICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBtZXNzYWdlLmRhdGEo
KSwgbWVzc2FnZS5zaXplKCkpOworICAgIHJldHVybiBXVEZNb3ZlKGRpY3Rpb25hcnkpOworfQor
CisvLyBVc2VzIGFuIGV4aXN0aW5nIGNvbm5lY3Rpb24gdG8gdGhlIGRhZW1vbiBmb3IgYSBvbmUt
b2ZmIG1lc3NhZ2UKK3ZvaWQgc2VuZE1lc3NhZ2VUb0RhZW1vbih4cGNfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24sIHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVz
c2FnZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVNZXNzYWdlRGljdGlvbmFyeSht
ZXNzYWdlVHlwZSwgbWVzc2FnZSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNv
bm5lY3Rpb24sIGRpY3Rpb25hcnkuZ2V0KCkpOworfQorCisvLyBVc2VzIGFuIGV4aXN0aW5nIGNv
bm5lY3Rpb24gdG8gdGhlIGRhZW1vbiBmb3IgYSBvbmUtb2ZmIG1lc3NhZ2UsIHdhaXRpbmcgZm9y
IHRoZSByZXBseQordm9pZCBzZW5kTWVzc2FnZVRvRGFlbW9uV2FpdGluZ0ZvclJlcGx5KHhwY19j
b25uZWN0aW9uX3QgY29ubmVjdGlvbiwgdWludDhfdCBtZXNzYWdlVHlwZSwgY29uc3QgVmVjdG9y
PHVpbnQ4X3Q+JiBtZXNzYWdlKQoreworICAgIGF1dG8gZGljdGlvbmFyeSA9IGNyZWF0ZU1lc3Nh
Z2VEaWN0aW9uYXJ5KG1lc3NhZ2VUeXBlLCBtZXNzYWdlKTsKKworICAgIF9fYmxvY2sgYm9vbCBk
b25lID0gZmFsc2U7CisgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHko
Y29ubmVjdGlvbiwgZGljdGlvbmFyeS5nZXQoKSwgZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwg
Xih4cGNfb2JqZWN0X3QgcmVxdWVzdCkgeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9KTsK
KworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKK3N0YXRpYyB2b2lk
IHNlbmRDb25maWd1cmF0aW9uV2l0aEF1ZGl0VG9rZW4oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0
aW9uKQoreworICAgIGF1ZGl0X3Rva2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAs
IDAgfTsKKyAgICBtYWNoX21zZ190eXBlX251bWJlcl90IGF1ZGl0VG9rZW5Db3VudCA9IFRBU0tf
QVVESVRfVE9LRU5fQ09VTlQ7CisgICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8o
bWFjaF90YXNrX3NlbGYoKSwgVEFTS19BVURJVF9UT0tFTiwgKHRhc2tfaW5mb190KSgmdG9rZW4p
LCAmYXVkaXRUb2tlbkNvdW50KTsKKyAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykgewor
ICAgICAgICBFWFBFQ1RfVFJVRShmYWxzZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAg
ICAvLyBTZW5kIGNvbmZpZ3VyYXRpb24gd2l0aCBhdWRpdCB0b2tlbgorICAgIHsKKyAgICAgICAg
VmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKDQyKTsKKyAgICAgICAgZW5jb2RlZE1lc3Nh
Z2UuZmlsbCgwKTsKKyAgICAgICAgZW5jb2RlZE1lc3NhZ2VbMV0gPSAxOworICAgICAgICBlbmNv
ZGVkTWVzc2FnZVsyXSA9IDMyOworICAgICAgICBtZW1jcHkoJmVuY29kZWRNZXNzYWdlWzEwXSwg
JnRva2VuLCBzaXplb2YodG9rZW4pKTsKKyAgICAgICAgc2VuZE1lc3NhZ2VUb0RhZW1vbihjb25u
ZWN0aW9uLCA2LCBlbmNvZGVkTWVzc2FnZSk7CisgICAgfQorfQorCitSZXRhaW5QdHI8eHBjX2Nv
bm5lY3Rpb25fdD4gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2VydmljZShjb25zdCBj
aGFyKiBzZXJ2aWNlTmFtZSkKK3sKKyAgICBhdXRvIGNvbm5lY3Rpb24gPSBhZG9wdE5TKHhwY19j
b25uZWN0aW9uX2NyZWF0ZV9tYWNoX3NlcnZpY2Uoc2VydmljZU5hbWUsIGRpc3BhdGNoX2dldF9t
YWluX3F1ZXVlKCksIDApKTsKKyAgICB4cGNfY29ubmVjdGlvbl9zZXRfZXZlbnRfaGFuZGxlcihj
b25uZWN0aW9uLmdldCgpLCBeKHhwY19vYmplY3RfdCkgeyB9KTsKKyAgICB4cGNfY29ubmVjdGlv
bl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpKTsKKyAgICBzZW5kQ29uZmlndXJhdGlvbldpdGhB
dWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0KCkpOworCisgICAgcmV0dXJuIFdURk1vdmUoY29ubmVj
dGlvbik7Cit9CisKK3N0YXRpYyBWZWN0b3I8dWludDhfdD4gZW5jb2RlU3RyaW5nKGNvbnN0IFN0
cmluZyYgbWVzc2FnZSkKK3sKKyAgICBBU1NFUlQobWVzc2FnZS5pczhCaXQoKSk7CisgICAgYXV0
byB1dGY4ID0gbWVzc2FnZS51dGY4KCk7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcmVzdWx0KHV0
ZjgubGVuZ3RoKCkgKyA1KTsKKyAgICByZXN1bHRbMF0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih1
dGY4Lmxlbmd0aCgpKTsKKyAgICByZXN1bHRbMV0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih1dGY4
Lmxlbmd0aCgpID4+IDgpOworICAgIHJlc3VsdFsyXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+KHV0
ZjgubGVuZ3RoKCkgPj4gMTYpOworICAgIHJlc3VsdFszXSA9IHN0YXRpY19jYXN0PHVpbnQ4X3Q+
KHV0ZjgubGVuZ3RoKCkgPj4gMjQpOworICAgIHJlc3VsdFs0XSA9IDB4MDE7CisKKyAgICBhdXRv
IGRhdGEgPSB1dGY4LmRhdGEoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHV0ZjgubGVu
Z3RoKCk7ICsraSkKKyAgICAgICAgcmVzdWx0WzUgKyBpXSA9IGRhdGFbaV07CisKKyAgICByZXR1
cm4gcmVzdWx0OworfQorCiAvLyBGSVhNRTogUmUtZW5hYmxlIHRoaXMgdGVzdCBvbiBNYWMgb25j
ZSB3ZWJraXQub3JnLzIzMjg1NyBpcyByZXNvbHZlZC4KICNpZiBQTEFURk9STShNQUMpCiBURVNU
KFdlYlB1c2hELCBESVNBQkxFRF9CYXNpY0NvbW11bmljYXRpb24pCkBAIC0xOTYsNDQgKzI3NSwy
MCBAQCBURVNUKFdlYlB1c2hELCBCYXNpY0NvbW11bmljYXRpb24pCiAgICAgfSk7CiAKICAgICB4
cGNfY29ubmVjdGlvbl9hY3RpdmF0ZShjb25uZWN0aW9uLmdldCgpKTsKLQotICAgIGF1ZGl0X3Rv
a2VuX3QgdG9rZW4gPSB7IDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAgfTsKLSAgICBtYWNoX21zZ190
eXBlX251bWJlcl90IGF1ZGl0VG9rZW5Db3VudCA9IFRBU0tfQVVESVRfVE9LRU5fQ09VTlQ7Ci0g
ICAga2Vybl9yZXR1cm5fdCByZXN1bHQgPSB0YXNrX2luZm8obWFjaF90YXNrX3NlbGYoKSwgVEFT
S19BVURJVF9UT0tFTiwgKHRhc2tfaW5mb190KSgmdG9rZW4pLCAmYXVkaXRUb2tlbkNvdW50KTsK
LSAgICBpZiAocmVzdWx0ICE9IEtFUk5fU1VDQ0VTUykgewotICAgICAgICBFWFBFQ1RfVFJVRShm
YWxzZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBTZW5kIGNvbmZpZ3VyYXRp
b24gd2l0aCBhdWRpdCB0b2tlbgotICAgIHsKLSAgICAgICAgc3RkOjphcnJheTx1aW50OF90LCA0
Mj4gZW5jb2RlZE1lc3NhZ2U7Ci0gICAgICAgIGVuY29kZWRNZXNzYWdlLmZpbGwoMCk7Ci0gICAg
ICAgIGVuY29kZWRNZXNzYWdlWzFdID0gMTsKLSAgICAgICAgZW5jb2RlZE1lc3NhZ2VbMl0gPSAz
MjsKLSAgICAgICAgbWVtY3B5KCZlbmNvZGVkTWVzc2FnZVsxMF0sICZ0b2tlbiwgc2l6ZW9mKHRv
a2VuKSk7Ci0gICAgICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBjX2RpY3Rpb25hcnlf
Y3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0
X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVyc2lvbiIsIDEpOwotICAgICAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksICJtZXNzYWdlIHR5
cGUiLCA2KTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2RhdGEoZGljdGlvbmFyeS5nZXQo
KSwgImVuY29kZWQgbWVzc2FnZSIsIGVuY29kZWRNZXNzYWdlLmRhdGEoKSwgZW5jb2RlZE1lc3Nh
Z2Uuc2l6ZSgpKTsKLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rp
b24uZ2V0KCksIGRpY3Rpb25hcnkuZ2V0KCkpOwotICAgIH0KKyAgICBzZW5kQ29uZmlndXJhdGlv
bldpdGhBdWRpdFRva2VuKGNvbm5lY3Rpb24uZ2V0KCkpOwogCiAgICAgLy8gRW5hYmxlIGRlYnVn
IG1lc3NhZ2VzLCBhbmQgd2FpdCBmb3IgdGhlIHJlc3VsdGluZyBkZWJ1ZyBtZXNzYWdlCiAgICAg
ewogICAgICAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7Ci0gICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgMT4g
ZW5jb2RlZE1lc3NhZ2UgeyAxIH07Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQo
ZGljdGlvbmFyeS5nZXQoKSwgInByb3RvY29sIHZlcnNpb24iLCAxKTsKLSAgICAgICAgeHBjX2Rp
Y3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAibWVzc2FnZSB0eXBlIiwgNSk7
Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNv
ZGVkIG1lc3NhZ2UiLCBlbmNvZGVkTWVzc2FnZS5kYXRhKCksIGVuY29kZWRNZXNzYWdlLnNpemUo
KSk7Ci0KLSAgICAgICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlKGNvbm5lY3Rpb24uZ2V0
KCksIGRpY3Rpb25hcnkuZ2V0KCkpOworICAgICAgICBWZWN0b3I8dWludDhfdD4gZW5jb2RlZE1l
c3NhZ2UoMSk7CisgICAgICAgIGVuY29kZWRNZXNzYWdlWzBdID0gMTsKKyAgICAgICAgc2VuZE1l
c3NhZ2VUb0RhZW1vbihjb25uZWN0aW9uLmdldCgpLCA1LCBlbmNvZGVkTWVzc2FnZSk7CiAgICAg
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CiAgICAgfQogCiAgICAgLy8gRWNo
byBhbmQgd2FpdCBmb3IgYSByZXBseQogICAgIGF1dG8gZGljdGlvbmFyeSA9IGFkb3B0TlMoeHBj
X2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKLSAgICBzdGQ6OmFycmF5
PHVpbnQ4X3QsIDEwPiBlbmNvZGVkU3RyaW5nIHsgNSwgMCwgMCwgMCwgMSwgJ2gnLCAnZScsICds
JywgJ2wnLCAnbycgfTsKKyAgICBhdXRvIGVuY29kZWRTdHJpbmcgPSBlbmNvZGVTdHJpbmcoImhl
bGxvIik7CiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCAi
cHJvdG9jb2wgdmVyc2lvbiIsIDEpOwogICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGlj
dGlvbmFyeS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIsIDEpOwogICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBlbmNvZGVkU3RyaW5n
LmRhdGEoKSwgZW5jb2RlZFN0cmluZy5zaXplKCkpOwpAQCAtMzQxLDYgKzM5NiwxNDAgQEAgVEVT
VChXZWJQdXNoRCwgUGVybWlzc2lvbk1hbmFnZW1lbnQpCiAgICAgY2xlYW5VcFRlc3RXZWJQdXNo
RCh0ZW1wRGlyZWN0b3J5KTsKIH0KIAorc3RhdGljIGNvbnN0IGNoYXIqIG1haW5TV0J5dGVzID0g
UiJTV1JFU09VUkNFKAorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvZyhtc2cpCit7CisgICAgd2luZG93
LndlYmtpdC5tZXNzYWdlSGFuZGxlcnMuc3cucG9zdE1lc3NhZ2UobXNnKTsKK30KKworY29uc3Qg
Y2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpOworY2hhbm5lbC5wb3J0MS5vbm1lc3NhZ2Ug
PSAoZXZlbnQpID0+IGxvZyhldmVudC5kYXRhKTsKKworbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoJy9zdy5qcycpLnRoZW4oKHJlZ2lzdHJhdGlvbikgPT4geworICAgIGlmIChyZWdp
c3RyYXRpb24uYWN0aXZlKSB7CisgICAgICAgIHJlZ2lzdHJhdGlvbi5hY3RpdmUucG9zdE1lc3Nh
Z2Uoe3BvcnQ6IGNoYW5uZWwucG9ydDJ9LCBbY2hhbm5lbC5wb3J0Ml0pOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworICAgIHdv
cmtlci5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZScsIGZ1bmN0aW9uKCkgeworICAgICAg
ICBpZiAod29ya2VyLnN0YXRlID09ICdhY3RpdmF0ZWQnKQorICAgICAgICAgICAgd29ya2VyLnBv
c3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2NoYW5uZWwucG9ydDJdKTsKKyAgICB9
KTsKK30pLmNhdGNoKGZ1bmN0aW9uKGVycm9yKSB7CisgICAgbG9nKCJSZWdpc3RyYXRpb24gZmFp
bGVkIHdpdGg6ICIgKyBlcnJvcik7Cit9KTsKKzwvc2NyaXB0PgorKVNXUkVTT1VSQ0UiOworCitz
dGF0aWMgY29uc3QgY2hhciogc2NyaXB0Qnl0ZXMgPSBSIlNXUkVTT1VSQ0UoCitsZXQgcG9ydDsK
K3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIChldmVudCkgPT4geworICAgIHBvcnQg
PSBldmVudC5kYXRhLnBvcnQ7CisgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVhZHkiKTsKK30pOwor
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJwdXNoIiwgKGV2ZW50KSA9PiB7CisgICAgdHJ5IHsKKyAg
ICAgICAgaWYgKCFldmVudC5kYXRhKSB7CisgICAgICAgICAgICBwb3J0LnBvc3RNZXNzYWdlKCJS
ZWNlaXZlZDogbnVsbCBkYXRhIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAg
ICAgICAgY29uc3QgdmFsdWUgPSBldmVudC5kYXRhLnRleHQoKTsKKyAgICAgICAgcG9ydC5wb3N0
TWVzc2FnZSgiUmVjZWl2ZWQ6ICIgKyB2YWx1ZSk7CisgICAgICAgIGlmICh2YWx1ZSAhPSAnU3dl
ZXQgUG90YXRvZXMnKQorICAgICAgICAgICAgZXZlbnQud2FpdFVudGlsKFByb21pc2UucmVqZWN0
KCdJIHdhbnQgc3dlZXQgcG90YXRvZXMnKSk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBw
b3J0LnBvc3RNZXNzYWdlKCJHb3QgZXhjZXB0aW9uICIgKyBlKTsKKyAgICB9Cit9KTsKKylTV1JF
U09VUkNFIjsKKworc3RhdGljIHZvaWQgY2xlYXJXZWJzaXRlRGF0YVN0b3JlKFdLV2Vic2l0ZURh
dGFTdG9yZSAqc3RvcmUpCit7CisgICAgX19ibG9jayBib29sIGNsZWFyZWRTdG9yZSA9IGZhbHNl
OworICAgIFtbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdIHJlbW92ZURhdGFP
ZlR5cGVzOltXS1dlYnNpdGVEYXRhU3RvcmUgYWxsV2Vic2l0ZURhdGFUeXBlc10gbW9kaWZpZWRT
aW5jZTpbTlNEYXRlIGRpc3RhbnRQYXN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKCkgeworICAgICAg
ICBjbGVhcmVkU3RvcmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmY2xlYXJlZFN0b3JlKTsKK30KKworLy8gRklYTUU6IFJlLWVuYWJsZSB0aGlzIHRlc3Qg
b24gTWFjIG9uY2Ugd2Via2l0Lm9yZy8yMzI4NTcgaXMgcmVzb2x2ZWQuCisjaWYgUExBVEZPUk0o
TUFDKQorVEVTVChXZWJQdXNoRCwgRElTQUJMRURfSGFuZGxlSW5qZWN0ZWRQdXNoKQorI2Vsc2UK
K1RFU1QoV2ViUHVzaEQsIEhhbmRsZUluamVjdGVkUHVzaCkKKyNlbmRpZgoreworICAgIFtXS1dl
YnNpdGVEYXRhU3RvcmUgX2FsbG93V2Vic2l0ZURhdGFSZWNvcmRzRm9yQWxsT3JpZ2luc107CisK
KyAgICBOU1VSTCAqdGVtcERpcmVjdG9yeSA9IHNldFVwVGVzdFdlYlB1c2hEKCk7CisKKyAgICBh
dXRvIGRhdGFTdG9yZUNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tXZWJzaXRlRGF0YVN0b3Jl
Q29uZmlndXJhdGlvbiBuZXddKTsKKyAgICBkYXRhU3RvcmVDb25maWd1cmF0aW9uLmdldCgpLndl
YlB1c2hNYWNoU2VydmljZU5hbWUgPSBAIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVtb24uc2Vy
dmljZSI7CisgICAgZGF0YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS53ZWJQdXNoRGFlbW9uVXNl
c01vY2tCdW5kbGVzRm9yVGVzdGluZyA9IFlFUzsKKyAgICBhdXRvIGRhdGFTdG9yZSA9IGFkb3B0
TlMoW1tXS1dlYnNpdGVEYXRhU3RvcmUgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246ZGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKV0pOworCisgICAgYXV0byBjb25maWd1cmF0aW9uID0g
YWRvcHROUyhbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25m
aWd1cmF0aW9uLmdldCgpLndlYnNpdGVEYXRhU3RvcmUgPSBkYXRhU3RvcmUuZ2V0KCk7CisgICAg
Y2xlYXJXZWJzaXRlRGF0YVN0b3JlKFtjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdKTsK
KworICAgIFtjb25maWd1cmF0aW9uLmdldCgpLnByZWZlcmVuY2VzIF9zZXROb3RpZmljYXRpb25z
RW5hYmxlZDpZRVNdOworICAgIGZvciAoX1dLRXhwZXJpbWVudGFsRmVhdHVyZSAqZmVhdHVyZSBp
biBbV0tQcmVmZXJlbmNlcyBfZXhwZXJpbWVudGFsRmVhdHVyZXNdKSB7CisgICAgICAgIGlmIChb
ZmVhdHVyZS5rZXkgaXNFcXVhbFRvU3RyaW5nOkAiQnVpbHRJbk5vdGlmaWNhdGlvbnNFbmFibGVk
Il0pCisgICAgICAgICAgICBbW2NvbmZpZ3VyYXRpb24gcHJlZmVyZW5jZXNdIF9zZXRFbmFibGVk
OllFUyBmb3JGZWF0dXJlOmZlYXR1cmVdOworICAgIH0KKworICAgIGF1dG8gbWVzc2FnZUhhbmRs
ZXIgPSBhZG9wdE5TKFtbVGVzdE1lc3NhZ2VIYW5kbGVyIGFsbG9jXSBpbml0XSk7CisgICAgW1tj
b25maWd1cmF0aW9uIHVzZXJDb250ZW50Q29udHJvbGxlcl0gYWRkU2NyaXB0TWVzc2FnZUhhbmRs
ZXI6bWVzc2FnZUhhbmRsZXIuZ2V0KCkgbmFtZTpAInN3Il07CisgICAgX19ibG9jayBib29sIGRv
bmUgPSBmYWxzZTsKKyAgICBbbWVzc2FnZUhhbmRsZXIgYWRkTWVzc2FnZTpAIlJlYWR5IiB3aXRo
SGFuZGxlcjpeeworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBbbWVzc2FnZUhh
bmRsZXIgYWRkTWVzc2FnZTpAIlJlY2VpdmVkOiBIZWxsbyBXb3JsZCIgd2l0aEhhbmRsZXI6XnsK
KyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpIVFRQ
U2VydmVyIHNlcnZlcih7CisgICAgICAgIHsgIi8iLCB7IG1haW5TV0J5dGVzIH0gfSwKKyAgICAg
ICAgeyAiL3N3LmpzIiwgeyB7IHsgIkNvbnRlbnQtVHlwZSIsICJhcHBsaWNhdGlvbi9qYXZhc2Ny
aXB0IiB9IH0sIHNjcmlwdEJ5dGVzIH0gfQorICAgIH0sIFRlc3RXZWJLaXRBUEk6OkhUVFBTZXJ2
ZXI6OlByb3RvY29sOjpIdHRwKTsKKworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dl
YlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29u
ZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpXSk7CisgICAgW3dlYlZpZXcgbG9hZFJlcXVl
c3Q6c2VydmVyLnJlcXVlc3QoKV07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIC8vIEluamVjdCBwdXNoIG1lc3NhZ2UKKyAg
ICBhdXRvIGVuY29kZWRNZXNzYWdlID0gZW5jb2RlU3RyaW5nKCJjb20uYXBwbGUuV2ViS2l0LlRl
c3RXZWJLaXRBUEkiKTsKKyAgICBlbmNvZGVkTWVzc2FnZS5hcHBlbmRWZWN0b3IoZW5jb2RlU3Ry
aW5nKHNlcnZlci5yZXF1ZXN0KCkuVVJMLmFic29sdXRlU3RyaW5nKSk7CisgICAgZW5jb2RlZE1l
c3NhZ2UuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZygiSGVsbG8gV29ybGQiKSk7CisKKyAgICBh
dXRvIHV0aWxpdHlDb25uZWN0aW9uID0gY3JlYXRlQW5kQ29uZmlndXJlQ29ubmVjdGlvblRvU2Vy
dmljZSgib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5zZXJ2aWNlIik7CisgICAgc2VuZE1l
c3NhZ2VUb0RhZW1vbldhaXRpbmdGb3JSZXBseSh1dGlsaXR5Q29ubmVjdGlvbi5nZXQoKSwgNywg
ZW5jb2RlZE1lc3NhZ2UpOworCisgICAgLy8gRmV0Y2ggcHVzaCBtZXNzYWdlcworICAgIF9fYmxv
Y2sgUmV0YWluUHRyPE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+PiBtZXNzYWdlczsKKyAgICBbZGF0
YVN0b3JlIF9nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOl4oTlNBcnJheTxOU0RpY3Rpb25hcnkgKj4g
KnJhd01lc3NhZ2VzKSB7CisgICAgICAgIG1lc3NhZ2VzID0gcmF3TWVzc2FnZXM7CisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgRVhQRUNUX0VRKFttZXNzYWdlcyBjb3VudF0s
IDF1KTsKKworICAgIC8vIEhhbmRsZSBwdXNoIG1lc3NhZ2UKKyAgICBfX2Jsb2NrIGJvb2wgcHVz
aE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKKyAgICBbZGF0YVN0b3JlIF9wcm9jZXNzUHVzaE1l
c3NhZ2U6W21lc3NhZ2VzIGZpcnN0T2JqZWN0XSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVz
dWx0KSB7CisgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmcHVzaE1lc3NhZ2VQcm9jZXNzZWQpOworCisgICAgY2xlYW5VcFRlc3RXZWJQdXNo
RCh0ZW1wRGlyZWN0b3J5KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgVGVzdFdlYktpdEFQSQogCiAj
ZW5kaWYgLy8gUExBVEZPUk0oTUFDKSB8fCBQTEFURk9STShJT1MpCmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmluZGV4IGMyYjcxMTZlMzBiNi4uMmNlNmU3YzkwYTU4
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAor
KysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaApAQCAtNzgsNiAr
NzgsNyBAQAogCiBAaW50ZXJmYWNlIFRlc3RNZXNzYWdlSGFuZGxlciA6IE5TT2JqZWN0IDxXS1Nj
cmlwdE1lc3NhZ2VIYW5kbGVyPgogLSAodm9pZClhZGRNZXNzYWdlOihOU1N0cmluZyAqKW1lc3Nh
Z2Ugd2l0aEhhbmRsZXI6KGRpc3BhdGNoX2Jsb2NrX3QpaGFuZGxlcjsKKy0gKHZvaWQpc2V0V2ls
ZGNhcmRNZXNzYWdlSGFuZGxlcjoodm9pZCAoXikoTlNTdHJpbmcgKikpaGFuZGxlcjsKIEBlbmQK
IAogQGludGVyZmFjZSBUZXN0V0tXZWJWaWV3IDogV0tXZWJWaWV3Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>446561</attachid>
            <date>2021-12-09 10:08:43 -0800</date>
            <delta_ts>2021-12-09 10:59:50 -0800</delta_ts>
            <desc>New PFL</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>73997</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYWYzMGRkOTRmNDIwLi43NTQ3MmZmM2M2ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsODcgQEAKKzIwMjEtMTItMDkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgor
CisgICAgICAgIEFkZCBhYmlsaXR5IHRvIGluamVjdCBtZXNzYWdlcyBpbnRvIHdlYnB1c2hkCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzM5ODgKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIENvdmVyZWQg
YnkgQVBJIHRlc3RzLgorCisgICAgICAgIFRoaXMgcGF0Y2g6CisgICAgICAgICAtIEFkZHMgV0tX
ZWJzaXRlRGF0YVN0b3JlIFNQSSB0byBmZXRjaCBwZW5kaW5nIHB1c2ggbWVzc2FnZXMgZm9yIHRo
ZSBlbWJlZGRpbmcgYXBwbGljYXRpb24KKyAgICAgICAgIC0gR2l2ZXMgd2VicHVzaGQgY29kZSB0
byBpbmplY3QgYSBwdXNoIG1lc3NhZ2UgZm9yIGEgZ2l2ZW4gYnVuZGxlIGlkZW50aWZpZXIKKyAg
ICAgICAgIC0gR2l2ZXMgd2VicHVzaHRvb2wgdGhlIGFiaWxpdHkgdG8gc2VuZCBvbmUgb2YgdGhl
c2UgZmFrZSBtZXNzYWdlcworICAgICAgICAgLSBHaXZlcyB3ZWJwdXNodG9vbCB0aGUgYWJpbGl0
eSB0byByZWNvbm5lY3QgdG8gdGhlIG5leHQgZGFlbW9uIGluc3RhbmNlIGFmdGVyIHRoZSBjdXJy
ZW50IGNvbm5lY3Rpb24gaXMgZHJvcHBlZAorICAgICAgICAgLSBUZXN0cyB0aGUgaW5qZWN0aW9u
IGFuZCBmZXRjaGluZyBvZiBwdXNoIG1lc3NhZ2VzIHZpYSBUZXN0V2ViS2l0QVBJCisKKyAgICAg
ICAgKiBDb25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZzoKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBSZXNvdXJjZXMvd2VicHVz
aHRvb2wuZW50aXRsZW1lbnRzOgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1By
b2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6Z2V0UGVuZGluZ1B1
c2hNZXNzYWdlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzOjpwcm9jZXNzUHVz
aE1lc3NhZ2UpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLmg6Cisg
ICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW46CisKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05ldHdvcmtOb3RpZmljYXRpb25N
YW5hZ2VyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXI6
OmdldFBlbmRpbmdQdXNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViS2l0OjpSZXBseUNhbGxlcjxW
ZWN0b3I8V2ViUHVzaE1lc3NhZ2U+OjpjYWxsUmVwbHkpOgorICAgICAgICAqIE5ldHdvcmtQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaDoKKworICAgICAg
ICAqIFNoYXJlZC9Db2NvYS9XZWJQdXNoTWVzc2FnZUNvY29hLm1tOiBDb3BpZWQgZnJvbSBTb3Vy
Y2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVjdGlvbi5oLgor
ICAgICAgICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6ZnJvbURpY3Rpb25hcnkpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQdXNoTWVzc2FnZTo6dG9EaWN0aW9uYXJ5IGNvbnN0KToKKworICAgICAg
ICAqIFNoYXJlZC9QdXNoTWVzc2FnZUZvclRlc3RpbmcuaDogQ29waWVkIGZyb20gU291cmNlL1dl
YktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5oLgorICAgICAgICAoV2ViS2l0OjpX
ZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjplbmNvZGUgY29uc3QpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOjpkZWNvZGUpOgorCisgICAg
ICAgICogU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaDoKKyAgICAgICAgKFdlYktpdDo6
V2ViUHVzaEQ6Om1lc3NhZ2VUeXBlU2VuZHNSZXBseSk6CisKKyAgICAgICAgKiBTaGFyZWQvV2Vi
UHVzaE1lc3NhZ2UuaDogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNo
dG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24uaC4KKyAgICAgICAgKFdlYktpdDo6V2ViUHVzaE1l
c3NhZ2U6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlB1c2hNZXNzYWdlOjpk
ZWNvZGUpOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmUubW06CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNz
YWdlczpdKToKKyAgICAgICAgKC1bV0tXZWJzaXRlRGF0YVN0b3JlIF9wcm9jZXNzUHVzaE1lc3Nh
Z2U6Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW1dLV2Vic2l0ZURhdGFTdG9yZSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOnJlZ2lzdHJhdGlvbjpjb21wbGV0aW9uSGFuZGxlcjpdKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZVBy
aXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRQZW5kaW5n
UHVzaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cHJv
Y2Vzc1B1c2hNZXNzYWdlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5Lmg6CisKKyAgICAgICAgKiB3ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5o
OgorICAgICAgICAqIHdlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLm1tOgorICAgICAgICAo
V2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246Omhvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpOgor
ICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246Omhvc3RBcHBIYXNQdXNoSW5qZWN0
RW50aXRsZW1lbnQpOgorICAgICAgICAoV2ViUHVzaEQ6OkNsaWVudENvbm5lY3Rpb246Omhvc3RI
YXNFbnRpdGxlbWVudCk6CisgICAgICAgIChXZWJQdXNoRDo6Q2xpZW50Q29ubmVjdGlvbjo6YnJv
YWRjYXN0RGVidWdNZXNzYWdlKToKKworICAgICAgICAqIHdlYnB1c2hkL1dlYlB1c2hEYWVtb24u
aDoKKyAgICAgICAgKiB3ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tOgorICAgICAgICAoV2ViUHVz
aEQ6Ok1lc3NhZ2VJbmZvOjppbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc6OmVuY29kZVJlcGx5
KToKKyAgICAgICAgKFdlYlB1c2hEOjpNZXNzYWdlSW5mbzo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdl
czo6ZW5jb2RlUmVwbHkpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6ZGVjb2RlQW5kSGFu
ZGxlTWVzc2FnZSk6CisgICAgICAgIChXZWJQdXNoRDo6RGFlbW9uOjppbmplY3RQdXNoTWVzc2Fn
ZUZvclRlc3RpbmcpOgorICAgICAgICAoV2ViUHVzaEQ6OkRhZW1vbjo6Z2V0UGVuZGluZ1B1c2hN
ZXNzYWdlcyk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKFdlYlB1c2hUb29sOjpDb25uZWN0aW9uOjpzZXRQdXNoTWVz
c2FnZSk6CisKKyAgICAgICAgKiB3ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5l
Y3Rpb24ubW06CisgICAgICAgIChXZWJQdXNoVG9vbDo6Q29ubmVjdGlvbjo6c3RhcnRBY3Rpb24p
OgorICAgICAgICAoV2ViUHVzaFRvb2w6OkNvbm5lY3Rpb246OnNlbmRQdXNoTWVzc2FnZSk6CisK
KyAgICAgICAgKiB3ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbE1haW4ubW06CisgICAg
ICAgIChwcmludFVzYWdlQW5kVGVybWluYXRlKToKKyAgICAgICAgKHB1c2hNZXNzYWdlRnJvbUFy
Z3VtZW50cyk6CisgICAgICAgIChtYWluKToKKwogMjAyMS0xMi0wOSAgQ2hyaXMgRHVtZXogIDxj
ZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgZml4IGFmdGVyIHIyODY3Nzgg
dG8gYWRkcmVzcyBXZWJDb250ZW50IGNyYXNoZXMgb24gbGF1bmNoCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25zL3dlYnB1c2h0b29sLnhjY29uZmlnIGIvU291cmNlL1dl
YktpdC9Db25maWd1cmF0aW9ucy93ZWJwdXNodG9vbC54Y2NvbmZpZwppbmRleCA3MzcxYTMzNzM0
ZjcuLjdjYjdmODVlYjZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Db25maWd1cmF0aW9u
cy93ZWJwdXNodG9vbC54Y2NvbmZpZworKysgYi9Tb3VyY2UvV2ViS2l0L0NvbmZpZ3VyYXRpb25z
L3dlYnB1c2h0b29sLnhjY29uZmlnCkBAIC0yOSw3ICsyOSw3IEBAIFNLSVBfSU5TVEFMTCA9IFlF
UzsKIEVYQ0xVREVEX1NPVVJDRV9GSUxFX05BTUVTW3Nkaz1hcHBsZXR2Kl0gPSAqOwogRVhDTFVE
RURfU09VUkNFX0ZJTEVfTkFNRVNbc2RrPXdhdGNoKl0gPSAqOwogCi1PVEhFUl9MREZMQUdTID0g
LWwgV1RGIC1mcmFtZXdvcmsgRm91bmRhdGlvbiAtZnJhbWV3b3JrIENvcmVGb3VuZGF0aW9uOwor
T1RIRVJfTERGTEFHUyA9IC1mcmFtZXdvcmsgV2ViS2l0IC1mcmFtZXdvcmsgSmF2YVNjcmlwdENv
cmUKIExJQlJBUllfU0VBUkNIX1BBVEhTID0gJChCVUlMVF9QUk9EVUNUU19ESVIpOwogCiBDT0RF
X1NJR05fRU5USVRMRU1FTlRTID0gUmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50czsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3Mu
Y3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5jcHAKaW5k
ZXggNDNmNWJiZTdiMWFiLi4xZWYzM2E2ZTYyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MuY3BwCkBAIC01OCw2ICs1OCw3IEBACiAjaW5jbHVk
ZSAiV2ViQ29va2llTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eU1lc3NhZ2VzLmgi
CiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Bvb2xNZXNzYWdlcy5oIgorI2luY2x1ZGUgIldlYlB1c2hN
ZXNzYWdlLmgiCiAjaW5jbHVkZSAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAj
aW5jbHVkZSAiV2ViU1dPcmlnaW5TdG9yZS5oIgogI2luY2x1ZGUgIldlYlNXU2VydmVyQ29ubmVj
dGlvbi5oIgpAQCAtMjU1NSwxMiArMjU1NiwyMCBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzOjphZGRT
ZXJ2aWNlV29ya2VyU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgcHJvYwog
ICAgICAgICBTYW5kYm94RXh0ZW5zaW9uOjpjb25zdW1lUGVybWFuZW50bHkoaGFuZGxlKTsKIH0K
IAotdm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3Qgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiBpcGNE
YXRhLCBVUkwmJiByZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+
JiYgY2FsbGJhY2spCit2b2lkIE5ldHdvcmtQcm9jZXNzOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2Vz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBW
ZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY2FsbGJhY2spCiB7Ci0gICAgc3RkOjpvcHRpb25h
bDxWZWN0b3I8dWludDhfdD4+IGRhdGE7Ci0gICAgaWYgKGlwY0RhdGEpCi0gICAgICAgIGRhdGEg
PSBWZWN0b3I8dWludDhfdD4geyBpcGNEYXRhLT5kYXRhKCksIGlwY0RhdGEtPnNpemUoKSB9Owot
ICAgIHN3U2VydmVyRm9yU2Vzc2lvbihzZXNzaW9uSUQpLnByb2Nlc3NQdXNoTWVzc2FnZShXVEZN
b3ZlKGRhdGEpLCBXVEZNb3ZlKHJlZ2lzdHJhdGlvblVSTCksIFdURk1vdmUoY2FsbGJhY2spKTsK
KyNpZiBFTkFCTEUoQlVJTFRfSU5fTk9USUZJQ0FUSU9OUykKKyAgICBpZiAoYXV0byogc2Vzc2lv
biA9IG5ldHdvcmtTZXNzaW9uKHNlc3Npb25JRCkpIHsKKyAgICAgICAgc2Vzc2lvbi0+bm90aWZp
Y2F0aW9uTWFuYWdlcigpLmdldFBlbmRpbmdQdXNoTWVzc2FnZXMoV1RGTW92ZShjYWxsYmFjaykp
OworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCisgICAgY2FsbGJhY2soeyB9KTsKK30K
Kwordm9pZCBOZXR3b3JrUHJvY2Vzczo6cHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgV2ViUHVzaE1lc3NhZ2UmJiBwdXNoTWVzc2FnZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzd1NlcnZlckZvclNlc3Npb24oc2Vz
c2lvbklEKS5wcm9jZXNzUHVzaE1lc3NhZ2UoV1RGTW92ZShwdXNoTWVzc2FnZS5wdXNoRGF0YSks
IFdURk1vdmUocHVzaE1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMKSwgV1RGTW92ZShjYWxsYmFjaykp
OwogfQogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzcy5oCmluZGV4IDliYzU3ZWUzN2ViNi4uODgw
MTdjNDRhMTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJv
Y2Vzcy5oCkBAIC0xMTcsNiArMTE3LDcgQEAgZW51bSBjbGFzcyBTdG9yYWdlQWNjZXNzU3RhdHVz
IDogdWludDhfdDsKIGVudW0gY2xhc3MgV2Vic2l0ZURhdGFGZXRjaE9wdGlvbiA6IHVpbnQ4X3Q7
CiBlbnVtIGNsYXNzIFdlYnNpdGVEYXRhVHlwZSA6IHVpbnQzMl90Owogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOworc3RydWN0IFdlYlB1c2hNZXNzYWdlOwogc3RydWN0
IFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzOwogCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VS
KQpAQCAtMzk2LDcgKzM5Nyw4IEBAIHB1YmxpYzoKICAgICBib29sIGZ0cEVuYWJsZWQoKSBjb25z
dCB7IHJldHVybiBtX2Z0cEVuYWJsZWQ7IH0KIAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
LSAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCwgY29uc3Qgc3RkOjpv
cHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+JiwgVVJMJiYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Np
b25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+
Jik+JiYpOworICAgIHZvaWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBXZWJQ
dXNoTWVzc2FnZSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKICNlbmRpZgog
CiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6U2Vz
c2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
TmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IDhkMzRlNzEz
OTY2Yy4uZjNjMjNkMWMxODQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3MubWVzc2FnZXMuaW4KQEAgLTIwNyw3ICsyMDcsOCBAQCBt
ZXNzYWdlcyAtPiBOZXR3b3JrUHJvY2VzcyBMZWdhY3lSZWNlaXZlciB7CiAjZW5kaWYKIAogI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBQcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklELCBzdGQ6Om9wdGlvbmFsPElQQzo6RGF0YVJlZmVyZW5jZT4gZGF0YSwg
VVJMIHJlZ2lzdHJhdGlvblVSTCkgLT4gKGJvb2wgZGlkU3VjY2VlZCkgQXN5bmMKKyAgICBHZXRQ
ZW5kaW5nUHVzaE1lc3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCkgLT4gKFZlY3RvcjxX
ZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiBtZXNzYWdlcykgQXN5bmMKKyAgICBQcm9jZXNzUHVzaE1l
c3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBzdHJ1Y3QgV2ViS2l0OjpXZWJQdXNoTWVz
c2FnZSBwdXNoTWVzc2FnZSkgLT4gKGJvb2wgZGlkU3VjY2VlZCkgQXN5bmMKICNlbmRpZgogICAg
IERlbGV0ZVB1c2hBbmROb3RpZmljYXRpb25SZWdpc3RyYXRpb24oUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIG9yaWdpbikgLT4gKFN0
cmluZyBlcnJvck1lc3NhZ2UpIEFzeW5jCiAgICAgR2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZp
Y2F0aW9uUGVybWlzc2lvbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKSAtPiAoVmVjdG9yPFdl
YkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YT4gb3JpZ2lucykgQXN5bmMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0
aW9uTWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlv
bnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCmluZGV4IGRmZTE1MjJlMzYwZC4uZTFh
MDE4N2MxNDI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdl
ci5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJEYWVtb25FbmNvZGVyLmgiCiAjaW5j
bHVkZSAiTmV0d29ya1Nlc3Npb24uaCIKICNpbmNsdWRlICJXZWJQdXNoRGFlbW9uQ29ubmVjdGlv
bkNvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
ODgsNiArODksMTUgQEAgdm9pZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6Z2V0T3JpZ2lu
c1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ28KICAgICBzZW5kTWVzc2FnZVdp
dGhSZXBseTxXZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkdldE9yaWdpbnNXaXRoUHVzaEFuZE5vdGlm
aWNhdGlvblBlcm1pc3Npb25zPihXVEZNb3ZlKHJlcGx5SGFuZGxlcikpOwogfQogCit2b2lkIE5l
dHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyOjpnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hN
ZXNzYWdlPiYmKT4gcmVwbHlIYW5kbGVyID0gW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildIChWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+JiYgbWVzc2FnZXMpIG11
dGFibGUgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2VzKSk7Cisg
ICAgfTsKKworICAgIHNlbmRNZXNzYWdlV2l0aFJlcGx5PFdlYlB1c2hEOjpNZXNzYWdlVHlwZTo6
R2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oV1RGTW92ZShyZXBseUhhbmRsZXIpKTsKK30KKwogdm9p
ZCBOZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlcjo6c2hvd05vdGlmaWNhdGlvbihjb25zdCBTdHJp
bmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBT
dHJpbmcmLCBXZWJDb3JlOjpOb3RpZmljYXRpb25EaXJlY3Rpb24sIGNvbnN0IFN0cmluZyYsIHVp
bnQ2NF90KQogewogICAgIGlmICghbV9jb25uZWN0aW9uKQpAQCAtMTg2LDYgKzE5NiwxNyBAQCB0
ZW1wbGF0ZTw+IHN0cnVjdCBSZXBseUNhbGxlcjxWZWN0b3I8U3RyaW5nPiYmPiB7CiAgICAgfQog
fTsKIAordGVtcGxhdGU8PiBzdHJ1Y3QgUmVwbHlDYWxsZXI8VmVjdG9yPFdlYlB1c2hNZXNzYWdl
PiYmPiB7CisgICAgc3RhdGljIHZvaWQgY2FsbFJlcGx5KERhZW1vbjo6RGVjb2RlciYmIGRlY29k
ZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYlB1c2hNZXNzYWdlPiYmKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKKyAgICB7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVjdG9yPFdl
YlB1c2hNZXNzYWdlPj4gbWVzc2FnZXM7CisgICAgICAgIGRlY29kZXIgPj4gbWVzc2FnZXM7Cisg
ICAgICAgIGlmICghbWVzc2FnZXMpCisgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRs
ZXIoeyB9KTsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZSgqbWVzc2FnZXMpKTsK
KyAgICB9Cit9OworCiB0ZW1wbGF0ZTxXZWJQdXNoRDo6TWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUs
IHR5cGVuYW1lLi4uIEFyZ3MsIHR5cGVuYW1lLi4uIFJlcGx5QXJncz4KIHZvaWQgTmV0d29ya05v
dGlmaWNhdGlvbk1hbmFnZXI6OnNlbmRNZXNzYWdlV2l0aFJlcGx5KENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoUmVwbHlBcmdzLi4uKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgQXJncyYmLi4uIGFyZ3Mp
IGNvbnN0CiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIuaCBiL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTm90aWZpY2F0aW9ucy9OZXR3b3JrTm90aWZpY2F0aW9uTWFuYWdlci5oCmlu
ZGV4IDZmMTY4MWE3MjUxYy4uZGZmZjVkYmYwMjE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29ya05vdGlmaWNhdGlvbk1hbmFnZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05vdGlmaWNhdGlvbnMvTmV0d29y
a05vdGlmaWNhdGlvbk1hbmFnZXIuaApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAiTm90
aWZpY2F0aW9uTWFuYWdlck1lc3NhZ2VIYW5kbGVyLmgiCiAjaW5jbHVkZSAiV2ViUHVzaERhZW1v
bkNvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJXZWJQdXNoTWVzc2FnZS5oIgogI2luY2x1ZGUgPFdl
YkNvcmUvTm90aWZpY2F0aW9uRGlyZWN0aW9uLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3Ry
aW5nLmg+CiAKQEAgLTUyLDYgKzUzLDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBkZWxldGVQdXNo
QW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2lu
RGF0YSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgU3RyaW5nJik+JiYpOwogICAgIHZv
aWQgZ2V0T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMoQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhPiYp
PiYmKTsKKyAgICB2b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOwogCiBwcml2YXRlOgogICAg
IE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyKE5ldHdvcmtTZXNzaW9uJiwgY29uc3QgU3RyaW5n
JiB3ZWJQdXNoTWFjaFNlcnZpY2VOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvUmVz
b3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVtZW50cyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2Vz
L3dlYnB1c2h0b29sLmVudGl0bGVtZW50cwppbmRleCA2NGEwYjU2YmM1MDAuLjYzMjRmMDVhZDk2
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9SZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50aXRs
ZW1lbnRzCisrKyBiL1NvdXJjZS9XZWJLaXQvUmVzb3VyY2VzL3dlYnB1c2h0b29sLmVudGl0bGVt
ZW50cwpAQCAtNCw1ICs0LDcgQEAKIDxkaWN0PgogCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Vi
a2l0LndlYnB1c2g8L2tleT4KIAk8dHJ1ZS8+CisJPGtleT5jb20uYXBwbGUucHJpdmF0ZS53ZWJr
aXQud2VicHVzaC5pbmplY3Q8L2tleT4KKwk8dHJ1ZS8+CiA8L2RpY3Q+CiA8L3BsaXN0PgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvQ29jb2EvV2ViUHVzaE1lc3NhZ2VDb2NvYS5t
bSBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL0NvY29hL1dlYlB1c2hNZXNzYWdlQ29jb2EubW0KbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi5mMTI5MzhiYzRkZGYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9Db2NvYS9XZWJQdXNoTWVzc2FnZUNv
Y29hLm1tCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIK
KyNpbXBvcnQgIldlYlB1c2hNZXNzYWdlLmgiCisKKyNpbXBvcnQgPHd0Zi9SZXRhaW5QdHIuaD4K
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNkZWZpbmUgV2ViS2l0UHVzaERhdGFLZXkgQCJXZWJL
aXRQdXNoRGF0YSIKKyNkZWZpbmUgV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTEtleSBAIldlYktp
dFB1c2hSZWdpc3RyYXRpb25VUkwiCisKK3N0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3NhZ2U+IFdl
YlB1c2hNZXNzYWdlOjpmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnkpCit7
CisgICAgTlNVUkwgKnVybCA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRQdXNoUmVn
aXN0cmF0aW9uVVJMS2V5XTsKKyAgICBpZiAoIXVybCB8fCAhW3VybCBpc0tpbmRPZkNsYXNzOltO
U1VSTCBjbGFzc11dKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgTlNEYXRh
ICpwdXNoRGF0YSA9IFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTpXZWJLaXRQdXNoRGF0YUtleV07
CisgICAgaWYgKCFwdXNoRGF0YSB8fCAhW3B1c2hEYXRhIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBj
bGFzc11dKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgewor
ICAgICAgICBWZWN0b3I8dWludDhfdD4geyBzdGF0aWNfY2FzdDxjb25zdCB1aW50OF90Kj4ocHVz
aERhdGEuYnl0ZXMpLCBwdXNoRGF0YS5sZW5ndGggfSwKKyAgICAgICAgVVJMIHsgdXJsIH0KKyAg
ICB9IH07Cit9CisKK05TRGljdGlvbmFyeSAqV2ViUHVzaE1lc3NhZ2U6OnRvRGljdGlvbmFyeSgp
IGNvbnN0Cit7CisgICAgYXV0byBuc0RhdGEgPSBhZG9wdE5TKFtbTlNEYXRhIGFsbG9jXSBpbml0
V2l0aEJ5dGVzOnB1c2hEYXRhLmRhdGEoKSBsZW5ndGg6cHVzaERhdGEuc2l6ZSgpXSk7CisgICAg
cmV0dXJuIEB7CisgICAgICAgIFdlYktpdFB1c2hEYXRhS2V5IDogbnNEYXRhLmdldCgpLAorICAg
ICAgICBXZWJLaXRQdXNoUmVnaXN0cmF0aW9uVVJMS2V5IDogKE5TVVJMICopcmVnaXN0cmF0aW9u
VVJMCisgICAgfTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9QdXNoTWVzc2FnZUZvclRlc3RpbmcuaCBiL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1B1c2hNZXNzYWdlRm9yVGVzdGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uMWM3NDdlMTYyODI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9TaGFyZWQvUHVzaE1lc3NhZ2VGb3JUZXN0aW5nLmgKQEAgLTAsMCArMSw3MyBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1VSTC5oPgorI2luY2x1ZGUg
PHd0Zi90ZXh0L1dURlN0cmluZy5oPgorCituYW1lc3BhY2UgV2ViS2l0OjpXZWJQdXNoRCB7CisK
K3N0cnVjdCBQdXNoTWVzc2FnZUZvclRlc3RpbmcgeworICAgIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNv
ZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+IGRlY29kZShE
ZWNvZGVyJik7CisKKyAgICBTdHJpbmcgdGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyOwor
ICAgIFVSTCByZWdpc3RyYXRpb25VUkw7CisgICAgU3RyaW5nIG1lc3NhZ2U7Cit9OworCit0ZW1w
bGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBQdXNoTWVzc2FnZUZvclRlc3Rpbmc6OmVuY29kZShF
bmNvZGVyJiBlbmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgdGFyZ2V0QXBwQ29kZVNp
Z25pbmdJZGVudGlmaWVyIDw8IHJlZ2lzdHJhdGlvblVSTCA8PCBtZXNzYWdlOworfQorCit0ZW1w
bGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+
IFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAg
c3RkOjpvcHRpb25hbDxTdHJpbmc+IHRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllcjsKKyAg
ICBkZWNvZGVyID4+IHRhcmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllcjsKKyAgICBpZiAoIXRh
cmdldEFwcENvZGVTaWduaW5nSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgIHN0ZDo6b3B0aW9uYWw8VVJMPiByZWdpc3RyYXRpb25VUkw7CisgICAgZGVjb2Rl
ciA+PiByZWdpc3RyYXRpb25VUkw7CisgICAgaWYgKCFyZWdpc3RyYXRpb25VUkwpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBzdGQ6Om9wdGlvbmFsPFN0cmluZz4gbWVzc2Fn
ZTsKKyAgICBkZWNvZGVyID4+IG1lc3NhZ2U7CisgICAgaWYgKCFtZXNzYWdlKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCp0
YXJnZXRBcHBDb2RlU2lnbmluZ0lkZW50aWZpZXIpLAorICAgICAgICBXVEZNb3ZlKCpyZWdpc3Ry
YXRpb25VUkwpLAorICAgICAgICBXVEZNb3ZlKCptZXNzYWdlKSwKKyAgICB9IH07Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdDo6V2ViUHVzaEQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dl
YlB1c2hEYWVtb25Db25zdGFudHMuaAppbmRleCBhNGRiY2Q3NzkxMjQuLjU4MDJiYjA3YzM5YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaERhZW1vbkNvbnN0YW50cy5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlB1c2hEYWVtb25Db25zdGFudHMuaApAQCAt
NDIsNiArNDIsOCBAQCBlbnVtIGNsYXNzIE1lc3NhZ2VUeXBlIDogdWludDhfdCB7CiAgICAgR2V0
T3JpZ2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnMsCiAgICAgU2V0RGVidWdN
b2RlSXNFbmFibGVkLAogICAgIFVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uLAorICAgIElu
amVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZywKKyAgICBHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzLAog
fTsKIAogaW5saW5lIGJvb2wgbWVzc2FnZVR5cGVTZW5kc1JlcGx5KE1lc3NhZ2VUeXBlIG1lc3Nh
Z2VUeXBlKQpAQCAtNTEsNiArNTMsOCBAQCBpbmxpbmUgYm9vbCBtZXNzYWdlVHlwZVNlbmRzUmVw
bHkoTWVzc2FnZVR5cGUgbWVzc2FnZVR5cGUpCiAgICAgY2FzZSBNZXNzYWdlVHlwZTo6R2V0T3Jp
Z2luc1dpdGhQdXNoQW5kTm90aWZpY2F0aW9uUGVybWlzc2lvbnM6CiAgICAgY2FzZSBNZXNzYWdl
VHlwZTo6RGVsZXRlUHVzaEFuZE5vdGlmaWNhdGlvblJlZ2lzdHJhdGlvbjoKICAgICBjYXNlIE1l
c3NhZ2VUeXBlOjpSZXF1ZXN0U3lzdGVtTm90aWZpY2F0aW9uUGVybWlzc2lvbjoKKyAgICBjYXNl
IE1lc3NhZ2VUeXBlOjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzOgorICAgIGNhc2UgTWVzc2FnZVR5
cGU6OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzoKICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgY2FzZSBNZXNzYWdlVHlwZTo6U2V0RGVidWdNb2RlSXNFbmFibGVkOgogICAgIGNhc2UgTWVz
c2FnZVR5cGU6OlVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHVzaE1lc3NhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvU2hhcmVk
L1dlYlB1c2hNZXNzYWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
Li5mOWU0M2YzMzNkNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9X
ZWJQdXNoTWVzc2FnZS5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MjEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJ
QlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9u
Y2UKKworI2luY2x1ZGUgPG9wdGlvbmFsPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CisKK09CSkNfQ0xBU1MgTlNEaWN0aW9uYXJ5OworCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworc3RydWN0IFdlYlB1c2hNZXNzYWdlIHsKKyAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgdGVtcGxhdGU8Y2xhc3Mg
RGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaE1lc3NhZ2U+IGRlY29kZShEZWNv
ZGVyJik7CisKKyAgICBWZWN0b3I8dWludDhfdD4gcHVzaERhdGE7CisgICAgVVJMIHJlZ2lzdHJh
dGlvblVSTDsKKworI2lmIFBMQVRGT1JNKENPQ09BKQorICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFdlYlB1c2hNZXNzYWdlPiBmcm9tRGljdGlvbmFyeShOU0RpY3Rpb25hcnkgKik7CisgICAgTlNE
aWN0aW9uYXJ5ICp0b0RpY3Rpb25hcnkoKSBjb25zdDsKKyNlbmRpZgorfTsKKwordGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgV2ViUHVzaE1lc3NhZ2U6OmVuY29kZShFbmNvZGVyJiBlbmNv
ZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcHVzaERhdGEgPDwgcmVnaXN0cmF0aW9uVVJM
OworfQorCit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxXZWJQdXNoTWVz
c2FnZT4gV2ViUHVzaE1lc3NhZ2U6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0
ZDo6b3B0aW9uYWw8VmVjdG9yPHVpbnQ4X3Q+PiBwdXNoRGF0YTsKKyAgICBkZWNvZGVyID4+IHB1
c2hEYXRhOworICAgIGlmICghcHVzaERhdGEpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBzdGQ6Om9wdGlvbmFsPFVSTD4gcmVnaXN0cmF0aW9uVVJMOworICAgIGRlY29kZXIg
Pj4gcmVnaXN0cmF0aW9uVVJMOworICAgIGlmICghcmVnaXN0cmF0aW9uVVJMKQorICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgcmV0dXJuIHsgeworICAgICAgICBXVEZNb3ZlKCpw
dXNoRGF0YSksCisgICAgICAgIFdURk1vdmUoKnJlZ2lzdHJhdGlvblVSTCkKKyAgICB9IH07Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KaW5kZXggN2VmMDY5NTBhYjA3
Li42Mjk2OTA3OWQ5ZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYnNpdGVEYXRhU3RvcmUubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2Vic2l0ZURhdGFTdG9yZS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9y
dCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oIgogI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCisjaW1wb3J0ICJXZWJQdXNoTWVzc2Fn
ZS5oIgogI2ltcG9ydCAiV2ViUmVzb3VyY2VMb2FkU3RhdGlzdGljc1N0b3JlLmgiCiAjaW1wb3J0
ICJXZWJzaXRlRGF0YUZldGNoT3B0aW9uLmgiCiAjaW1wb3J0ICJfV0tSZXNvdXJjZUxvYWRTdGF0
aXN0aWNzVGhpcmRQYXJ0eUludGVybmFsLmgiCkBAIC03NjEsMTMgKzc2MiwyOSBAQCBzdGF0aWMg
VmVjdG9yPFdlYktpdDo6V2Vic2l0ZURhdGFSZWNvcmQ+IHRvV2Vic2l0ZURhdGFSZWNvcmRzKE5T
QXJyYXkgKmRhdGFSZWNvcgogICAgIHJldHVybiBfd2Vic2l0ZURhdGFTdG9yZS0+aGFzU2Vydmlj
ZVdvcmtlckJhY2tncm91bmRBY3Rpdml0eUZvclRlc3RpbmcoKTsKIH0KIAotLSh2b2lkKV9wcm9j
ZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopIG1lc3NhZ2UgcmVnaXN0cmF0aW9uOihOU1VSTCAqKXJl
Z2lzdHJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShib29sIHdhc1Byb2Nlc3NlZCkp
Y29tcGxldGlvbkhhbmRsZXIKKy0odm9pZClfZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczoodm9pZChe
KShOU0FycmF5PE5TRGljdGlvbmFyeSAqPiAqKSljb21wbGV0aW9uSGFuZGxlcgogewogI2lmIEVO
QUJMRShTRVJWSUNFX1dPUktFUikKLSAgICBzdGQ6Om9wdGlvbmFsPFNwYW48Y29uc3QgdWludDhf
dD4+IGRhdGE7Ci0gICAgaWYgKG1lc3NhZ2UpCi0gICAgICAgIGRhdGEgPSBTcGFuPGNvbnN0IHVp
bnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obWVzc2FnZS5ieXRlcyks
IG1lc3NhZ2UubGVuZ3RoIH07Ci0gICAgX3dlYnNpdGVEYXRhU3RvcmUtPm5ldHdvcmtQcm9jZXNz
KCkucHJvY2Vzc1B1c2hNZXNzYWdlKF93ZWJzaXRlRGF0YVN0b3JlLT5zZXNzaW9uSUQoKSwgZGF0
YSwgcmVnaXN0cmF0aW9uLCBbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYm9vbCB3YXNQcm9jZXNzZWQpIHsKKyAgICBfd2Vic2l0ZURhdGFTdG9y
ZS0+bmV0d29ya1Byb2Nlc3MoKS5nZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKF93ZWJzaXRlRGF0YVN0
b3JlLT5zZXNzaW9uSUQoKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYgbWVz
c2FnZXMpIHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBhZG9wdE5TKFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6bWVzc2FnZXMuc2l6ZSgpXSk7CisgICAgICAgIGZvciAo
YXV0byYgbWVzc2FnZSA6IG1lc3NhZ2VzKQorICAgICAgICAgICAgW3Jlc3VsdCBhZGRPYmplY3Q6
bWVzc2FnZS50b0RpY3Rpb25hcnkoKV07CisKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIocmVz
dWx0LmdldCgpKTsKKyAgICB9KTsKKyNlbmRpZgorfQorCistKHZvaWQpX3Byb2Nlc3NQdXNoTWVz
c2FnZTooTlNEaWN0aW9uYXJ5ICopcHVzaE1lc3NhZ2VEaWN0aW9uYXJ5IGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkKF4pKGJvb2wgd2FzUHJvY2Vzc2VkKSljb21wbGV0aW9uSGFuZGxlcgoreworI2lm
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKKyAgICBhdXRvIHB1c2hNZXNzYWdlID0gV2ViS2l0OjpX
ZWJQdXNoTWVzc2FnZTo6ZnJvbURpY3Rpb25hcnkocHVzaE1lc3NhZ2VEaWN0aW9uYXJ5KTsKKyAg
ICBpZiAoIXB1c2hNZXNzYWdlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIF93ZWJzaXRlRGF0YVN0b3JlLT5uZXR3b3Jr
UHJvY2VzcygpLnByb2Nlc3NQdXNoTWVzc2FnZShfd2Vic2l0ZURhdGFTdG9yZS0+c2Vzc2lvbklE
KCksICpwdXNoTWVzc2FnZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKGJvb2wgd2FzUHJvY2Vzc2VkKSB7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHdhc1Byb2Nlc3NlZCk7CiAgICAgfSk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmgg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJp
dmF0ZS5oCmluZGV4IGExMmM2ZWMyMGE4My4uMTFmMDZmMjQ0YzA4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVN0b3JlUHJpdmF0ZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhU3Rv
cmVQcml2YXRlLmgKQEAgLTEwOCw3ICsxMDgsOCBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50
ZWdlciwgX1dLV2Vic2l0ZURhdGFTdG9yZUZldGNoT3B0aW9ucykgewogLSAodm9pZClfY291bnRO
b25EZWZhdWx0U2Vzc2lvblNldHM6KHZvaWQoXikoc2l6ZV90KSljb21wbGV0aW9uSGFuZGxlcjsK
IAogLShib29sKV9oYXNTZXJ2aWNlV29ya2VyQmFja2dyb3VuZEFjdGl2aXR5Rm9yVGVzdGluZyBX
S19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSh2
b2lkKV9wcm9jZXNzUHVzaE1lc3NhZ2U6KE5TRGF0YSopZGF0YSByZWdpc3RyYXRpb246KE5TVVJM
ICopcmVnaXN0cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkKF4pKGJvb2wpKWNvbXBsZXRp
b25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistKHZvaWQpX2dldFBlbmRpbmdQdXNoTWVzc2FnZXM6KHZvaWQoXikoTlNBcnJheTxO
U0RpY3Rpb25hcnkgKj4gKikpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNv
cyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0odm9pZClfcHJvY2Vzc1B1c2hNZXNz
YWdlOihOU0RpY3Rpb25hcnkgKilwdXNoTWVzc2FnZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZChe
KShib29sKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9kZWxldGVQdXNoQW5kTm90aWZpY2F0aW9u
UmVnaXN0cmF0aW9uOihXS1NlY3VyaXR5T3JpZ2luICopc2VjdXJpdHlPcmlnaW4gY29tcGxldGlv
bkhhbmRsZXI6KHZvaWQoXikoTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlciBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSh2b2lkKV9nZXRP
cmlnaW5zV2l0aFB1c2hBbmROb3RpZmljYXRpb25QZXJtaXNzaW9uczoodm9pZCheKShOU1NldDxX
S1NlY3VyaXR5T3JpZ2luICo+ICopKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiBAZW5kCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCAzNTNlNWY0NjZmNmEuLmY0MDAwYTZiNzE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0xNjky
LDEyICsxNjkyLDE0IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6ZGlkRXhjZWVkTWVtb3J5
TGltaXQoKQogI2VuZGlmCiAKICNpZiBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCi12b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnByb2Nlc3NQdXNoTWVzc2FnZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIHN0ZDo6b3B0aW9uYWw8U3Bhbjxjb25zdCB1aW50OF90Pj4gZGF0YSwgY29uc3QgVVJMJiBy
ZWdpc3RyYXRpb25VUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQp
PiYmIGNhbGxiYWNrKQordm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXRQZW5kaW5nUHVzaE1l
c3NhZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChj
b25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgc3RkOjpvcHRpb25hbDxJUEM6OkRhdGFSZWZlcmVuY2U+IGlwY0RhdGE7Ci0gICAgaWYgKGRh
dGEpCi0gICAgICAgIGlwY0RhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UgeyBkYXRhLT5kYXRhKCks
IGRhdGEtPnNpemUoKSB9OwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25JRCwgaXBjRGF0YSwgcmVnaXN0
cmF0aW9uVVJMIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpHZXRQZW5kaW5nUHVzaE1lc3NhZ2VzIHsgc2Vzc2lv
bklEIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKK30KKwordm9pZCBOZXR3b3JrUHJv
Y2Vzc1Byb3h5Ojpwcm9jZXNzUHVzaE1lc3NhZ2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBXZWJQdXNoTWVzc2FnZSYgcHVzaE1lc3NhZ2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCB3YXNQcm9jZXNzZWQpPiYmIGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByb2Nlc3NQdXNoTWVzc2FnZSB7IHNlc3Npb25J
RCwgcHVzaE1lc3NhZ2UgfSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9O
ZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCBiOWU3MjJmMmRiM2MuLjg2ZjFiMzA0
NGZjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3Jr
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKQEAgLTkyLDYgKzkyLDcgQEAgZW51bSBjbGFzcyBXZWJzaXRlRGF0
YVR5cGUgOiB1aW50MzJfdDsKIHN0cnVjdCBGcmFtZUluZm9EYXRhOwogc3RydWN0IE5ldHdvcmtQ
cm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOwogc3RydWN0IFJlc291cmNlTG9hZEluZm87CitzdHJ1
Y3QgV2ViUHVzaE1lc3NhZ2U7CiBzdHJ1Y3QgV2Vic2l0ZURhdGE7CiBzdHJ1Y3QgV2Vic2l0ZURh
dGFTdG9yZVBhcmFtZXRlcnM7CiAKQEAgLTI3Myw3ICsyNzQsOCBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKLSAgICB2b2lkIHByb2Nlc3NQdXNoTWVzc2Fn
ZShQQUw6OlNlc3Npb25JRCwgc3RkOjpvcHRpb25hbDxTcGFuPGNvbnN0IHVpbnQ4X3Q+PiwgY29u
c3QgVVJMJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIHdhc1Byb2Nlc3NlZCk+JiYpOwor
ICAgIHZvaWQgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8V2ViUHVzaE1lc3NhZ2U+Jik+JiYpOworICAgIHZv
aWQgcHJvY2Vzc1B1c2hNZXNzYWdlKFBBTDo6U2Vzc2lvbklELCBjb25zdCBXZWJQdXNoTWVzc2Fn
ZSYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCB3YXNQcm9jZXNzZWQpPiYmKTsKICNlbmRp
ZgogCiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0cmF0aW9uKFBBTDo6
U2Vzc2lvbklELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKGNvbnN0IFN0cmluZyYpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktp
dC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IGZiZjQ4NzllOGNjMy4uYTQ1ZDRkMzY5
MzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKQEAgLTEwMzQsNiArMTAzNCwxMiBAQAogCQk1MTdCNUY4NDI3NUU5N0I2MDAyREMyMkQgLyog
TW9ja0FwcEJ1bmRsZUZvclRlc3RpbmcubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MUY3QkI3NDI3NDQ5OEJBMDBDNDVBNzIgLyogTW9ja0FwcEJ1bmRs
ZUZvclRlc3RpbmcubW0gKi87IH07CiAJCTUxN0I1Rjg1Mjc1RTk3QjYwMDJEQzIyRCAvKiBBcHBC
dW5kbGVSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTYwRTk1NDI3NEI4ODcxMDA1NjczODggLyogQXBwQnVuZGxlUmVxdWVzdC5oICovOyB9
OwogCQk1MTdCNUY4NjI3NUU5N0I2MDAyREMyMkQgLyogTW9ja0FwcEJ1bmRsZVJlZ2lzdHJ5Lm1t
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE2MEU5NUYy
NzRDMkEzRjAwNTY3Mzg4IC8qIE1vY2tBcHBCdW5kbGVSZWdpc3RyeS5tbSAqLzsgfTsKKwkJNTE3
QjVGOTUyNzVFQkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3QjVGOTQyNzVFQkE2MjAw
MkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICovOyB9OworCQk1MTdCNUY5NzI3NUVD
NUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxN0I1Rjk2Mjc1RUM1RTUwMDJEQzIyRCAvKiBXZWJQdXNo
TWVzc2FnZS5oICovOyB9OworCQk1MTdCNUY5OTI3NUVDNjAxMDAyREMyMkQgLyogV2ViUHVzaE1l
c3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxN0I1Rjk4Mjc1RUM2MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICov
OyB9OworCQk1MTdCNUY5QTI3NUYzQTg2MDAyREMyMkQgLyogQXJndW1lbnRDb2RlcnMuY3BwIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUEzRDYxMDQxM0E3
RjAzQTAwRjk1RDRFIC8qIEFyZ3VtZW50Q29kZXJzLmNwcCAqLzsgfTsKKwkJNTE3QjVGOUIyNzVG
M0E5ODAwMkRDMjJEIC8qIERhZW1vblV0aWxpdGllcy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMTU3OUY5MjcxN0FGNTAwMEVENTI4MCAvKiBEYWVt
b25VdGlsaXRpZXMubW0gKi87IH07CisJCTUxN0I1RjlDMjc1RjNDMzcwMDJEQzIyRCAvKiBEYWVt
b25FbmNvZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDMTU3OUU4MjcxNzJBOEEwMEVENTI4MCAvKiBEYWVtb25FbmNvZGVyLmNwcCAqLzsgfTsK
IAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MTdDRjBFMTE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZVJlY2VpdmVyLmNwcCAqLzsgfTsKIAkJNTE3Q0YwRTMxNjNBNDg2QzAwQzI5NTBG
IC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE3Q0YwRTExNjNBNDg2
QzAwQzI5NTBGIC8qIENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIu
Y3BwICovOyB9OwogCQk1MTdDRjBFNDE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3ND
b25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxN0NGMEUyMTYzQTQ4NkMwMEMyOTUwRSAvKiBOZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMjE0MCw2ICsyMTQ2LDIwIEBACiAJCQlyZW1vdGVH
bG9iYWxJRFN0cmluZyA9IDUxN0I1RjVBMjc1QThEM0UwMDJEQzIyRDsKIAkJCXJlbW90ZUluZm8g
PSB3ZWJwdXNodG9vbDsKIAkJfTsKKwkJNTE5Nzk3QzYyNzYyN0IxRDAwQkUwRjgzIC8qIFBCWENv
bnRhaW5lckl0ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsK
KwkJCWNvbnRhaW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0
IG9iamVjdCAqLzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9
IEUxQUMyRTI3MjBGN0I5NEMwMEIwODk3RDsKKwkJCXJlbW90ZUluZm8gPSAiVW5sb2NrIEtleWNo
YWluIjsKKwkJfTsKKwkJNTE5Nzk3QzgyNzYyN0IyMzAwQkUwRjgzIC8qIFBCWENvbnRhaW5lckl0
ZW1Qcm94eSAqLyA9IHsKKwkJCWlzYSA9IFBCWENvbnRhaW5lckl0ZW1Qcm94eTsKKwkJCWNvbnRh
aW5lclBvcnRhbCA9IDA4NjdENjkwRkU4NDAyOEZDMDJBQUMwNyAvKiBQcm9qZWN0IG9iamVjdCAq
LzsKKwkJCXByb3h5VHlwZSA9IDE7CisJCQlyZW1vdGVHbG9iYWxJRFN0cmluZyA9IDhEQzJFRjRG
MDQ4NkE2OTQwMDk4QjIxNjsKKwkJCXJlbW90ZUluZm8gPSBXZWJLaXQ7CisJCX07CiAJCTU3NDJB
MkU3MjUzNTYxM0YwMEI3QkExNCAvKiBQQlhDb250YWluZXJJdGVtUHJveHkgKi8gPSB7CiAJCQlp
c2EgPSBQQlhDb250YWluZXJJdGVtUHJveHk7CiAJCQljb250YWluZXJQb3J0YWwgPSAwODY3RDY5
MEZFODQwMjhGQzAyQUFDMDcgLyogUHJvamVjdCBvYmplY3QgKi87CkBAIC00NDA5LDYgKzQ0Mjks
OSBAQAogCQk1MTdCNUY2QjI3NUFFNTBCMDAyREMyMkQgLyogd2VicHVzaHRvb2wuZW50aXRsZW1l
bnRzICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gdGV4dC5wbGlzdC5lbnRpdGxlbWVudHM7IG5hbWUgPSB3ZWJwdXNodG9v
bC5lbnRpdGxlbWVudHM7IHBhdGggPSBSZXNvdXJjZXMvd2VicHVzaHRvb2wuZW50aXRsZW1lbnRz
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTdCNUY3MjI3NUU5NjA5MDAyREMyMkQg
LyogV2ViUHVzaERhZW1vbk1haW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViUHVzaERhZW1vbk1haW4uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE3QjVG
NzcyNzVFOTc5NTAwMkRDMjJEIC8qIHdlYnB1c2hkLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IHdlYnB1c2hkLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
KwkJNTE3QjVGOTQyNzVFQkE2MjAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBQdXNoTWVzc2FnZUZvclRlc3RpbmcuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE3QjVGOTYyNzVFQzVFNTAwMkRDMjJEIC8q
IFdlYlB1c2hNZXNzYWdlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYlB1
c2hNZXNzYWdlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxN0I1Rjk4Mjc1RUM2
MDAwMDJEQzIyRCAvKiBXZWJQdXNoTWVzc2FnZUNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE3Q0YwRTExNjNBNDg2QzAwQzI5NTBFIC8qIE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbk1lc3NhZ2VSZWNlaXZlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IG5hbWUgPSBOZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3Bw
OyBwYXRoID0gRGVyaXZlZFNvdXJjZXMvV2ViS2l0L05ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbk1l
c3NhZ2VSZWNlaXZlci5jcHA7IHNvdXJjZVRyZWUgPSBCVUlMVF9QUk9EVUNUU19ESVI7IH07CiAJ
CTUxN0NGMEUxMTYzQTQ4NkMwMEMyOTUwRiAvKiBDYWNoZVN0b3JhZ2VFbmdpbmVDb25uZWN0aW9u
TWVzc2FnZVJlY2VpdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdlUmVjZWl2ZXIuY3BwOyBwYXRoID0g
RGVyaXZlZFNvdXJjZXMvV2ViS2l0L0NhY2hlU3RvcmFnZUVuZ2luZUNvbm5lY3Rpb25NZXNzYWdl
UmVjZWl2ZXIuY3BwOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9OwogCQk1MTdD
RjBFMjE2M0E0ODZDMDBDMjk1MEUgLyogTmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uTWVzc2FnZXMu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gTmV0d29ya1Byb2Nlc3NDb25uZWN0
aW9uTWVzc2FnZXMuaDsgcGF0aCA9IERlcml2ZWRTb3VyY2VzL1dlYktpdC9OZXR3b3JrUHJvY2Vz
c0Nvbm5lY3Rpb25NZXNzYWdlcy5oOyBzb3VyY2VUcmVlID0gQlVJTFRfUFJPRFVDVFNfRElSOyB9
OwpAQCAtNzEzNiw2ICs3MTU5LDcgQEAKIAkJCQlFMThDOTJGMzEyREI5RTcxMDBDRjJBRUIgLyog
UHJpbnRJbmZvLmNwcCAqLywKIAkJCQlFMUNDMUI4RTEyRDdFQURGMDA2MjU4MzggLyogUHJpbnRJ
bmZvLmggKi8sCiAJCQkJNDYzRkQ0ODExRUI5NEVBRDAwQTI5ODJDIC8qIFByb2Nlc3NUZXJtaW5h
dGlvblJlYXNvbi5oICovLAorCQkJCTUxN0I1Rjk0Mjc1RUJBNjIwMDJEQzIyRCAvKiBQdXNoTWVz
c2FnZUZvclRlc3RpbmcuaCAqLywKIAkJCQk5QjEyMjlEMDIzRkYyQTVFMDA4Q0E3NTEgLyogUmVt
b3RlQXVkaW9EZXN0aW5hdGlvbklkZW50aWZpZXIuaCAqLywKIAkJCQk3MjAzNDQ5QjI2QTZDNDc2
MDAwQTVGNTQgLyogUmVuZGVyaW5nVXBkYXRlSUQuaCAqLywKIAkJCQk1Q0I3QUZFNjIzQzY4MUIw
MDBFNDlDRjMgLyogUmVzb3VyY2VMb2FkSW5mby5oICovLApAQCAtNzI0Miw2ICs3MjY2LDcgQEAK
IAkJCQk0NjdFNDNFNzIyNDNGRjZEMDBCMTM5MjQgLyogV2ViUHJvY2Vzc0RhdGFTdG9yZVBhcmFt
ZXRlcnMuaCAqLywKIAkJCQk1MTdCNUYyRDI3NTczODJBMDAyREMyMkQgLyogV2ViUHVzaERhZW1v
bkNvbm5lY3Rpb25Db25maWd1cmF0aW9uLmggKi8sCiAJCQkJNTEyQ0Q2OTkyNzIxRjA0OTAwRjdG
OEVDIC8qIFdlYlB1c2hEYWVtb25Db25zdGFudHMuaCAqLywKKwkJCQk1MTdCNUY5NjI3NUVDNUU1
MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2UuaCAqLywKIAkJCQk1QzhERDM3RjFGRTQ1MTkyMDBG
MkE1NTYgLyogV2Vic2l0ZUF1dG9wbGF5UG9saWN5LmggKi8sCiAJCQkJNUM4REQzODExRkU0NTVD
QTAwRjJBNTU2IC8qIFdlYnNpdGVBdXRvcGxheVF1aXJrLmggKi8sCiAJCQkJNTExRjdEM0YxRUIx
QkNFRTAwRTQ3QjgzIC8qIFdlYnNpdGVEYXRhU3RvcmVQYXJhbWV0ZXJzLmNwcCAqLywKQEAgLTg5
MzgsNiArODk2Myw3IEBACiAJCQkJN0FGMjM2MjIxRTc5QTQzMTAwNDM4QTA1IC8qIFdlYkVycm9y
c0NvY29hLm1tICovLAogCQkJCTQ2NTI1MEU1MUVDRjUyQ0QwMDIwMjVDQiAvKiBXZWJLaXQySW5p
dGlhbGl6ZUNvY29hLm1tICovLAogCQkJCTFERTA3NkQ5MjQ2MENDQkQwMEIyMTFFOCAvKiBXZWJQ
cmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXNDb2NvYS5tbSAqLywKKwkJCQk1MTdCNUY5ODI3NUVDNjAw
MDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSAqLywKIAkJCQkzN0M0QzA5MjE4MTRC
M0FGMDAzNjg4QjkgLyogV0tOU0FycmF5LmggKi8sCiAJCQkJMzdDNEMwOTExODE0QjNBRjAwMzY4
OEI5IC8qIFdLTlNBcnJheS5tbSAqLywKIAkJCQkzNzNDRUFENDE4NTQxN0FFMDA4QzM2M0QgLyog
V0tOU0RhdGEuaCAqLywKQEAgLTEzMDEzLDYgKzEzMDM5LDcgQEAKIAkJCQk1MzIxNTk1NjFEQkFF
NzJEMDA1NEFBM0MgLyogTmV0d29ya0RhdGFUYXNrQ29jb2EuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTgzOTkwMjAzMUJFOUEwMkIwMDBGMzY1MyAvKiBOZXR3b3JrTG9hZC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODNENDU0RDcxQkU5RDNDNDAwNkM5M0JEIC8qIE5ldHdvcmtMb2FkQ2xpZW50LmggaW4g
SGVhZGVycyAqLywKKwkJCQk1MTdCNUY5NzI3NUVDNUU1MDAyREMyMkQgLyogV2ViUHVzaE1lc3Nh
Z2UuaCBpbiBIZWFkZXJzICovLAogCQkJCTgzOTE0OTY1MUJFQTgzODUwMEQyRDk1MyAvKiBOZXR3
b3JrTG9hZFBhcmFtZXRlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJCUU0N0ZDOEEwMjVCODMzMUMw
MDU0OTVGQyAvKiBOZXR3b3JrTG9hZFNjaGVkdWxlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTE0
NTI2RUQyNzFFMTY0NzAwMDQ2N0I2IC8qIE5ldHdvcmtOb3RpZmljYXRpb25NYW5hZ2VyLmggaW4g
SGVhZGVycyAqLywKQEAgLTEzNTIwLDYgKzEzNTQ3LDcgQEAKIAkJCQk5MzU2RjJEQzIxNTJCNkI1
MDBFNkQ1REYgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk1
MTdBNTMxMDFGNDdBODYyMDBEQ0RDMEEgLyogV2ViU1dDbGllbnRDb25uZWN0aW9uTWVzc2FnZXMu
aCBpbiBIZWFkZXJzICovLAogCQkJCTQ2NkJDMDNDMUZBMjY2REEwMDJGQTlDMSAvKiBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE3QjVGOTUyNzVF
QkE2MzAwMkRDMjJEIC8qIFB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJNDYwRjQ4OTAxRjk5NkY3MTAwQ0Y0Qjg3IC8qIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUMxMUE5RUNDMjE0MDM1RjgwMENGQjIw
QSAvKiBXZWJTd2l0Y2hpbmdHUFVDbGllbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzNTZGMkRF
MjE1MkI3MTAwMEU2RDVERiAvKiBXZWJTV09yaWdpblN0b3JlLmggaW4gSGVhZGVycyAqLywKQEAg
LTE0MDQxLDYgKzE0MDY5LDggQEAKIAkJCWJ1aWxkUnVsZXMgPSAoCiAJCQkpOwogCQkJZGVwZW5k
ZW5jaWVzID0gKAorCQkJCTUxOTc5N0M5Mjc2MjdCMjMwMEJFMEY4MyAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAorCQkJCTUxOTc5N0M3Mjc2MjdCMUQwMEJFMEY4MyAvKiBQQlhUYXJnZXREZXBl
bmRlbmN5ICovLAogCQkJKTsKIAkJCW5hbWUgPSB3ZWJwdXNodG9vbDsKIAkJCXByb2R1Y3ROYW1l
ID0gd2VicHVzaHRvb2w7CkBAIC0xNTA4NSw3ICsxNTExNSwxMCBAQAogCQkJaXNhID0gUEJYU291
cmNlc0J1aWxkUGhhc2U7CiAJCQlidWlsZEFjdGlvbk1hc2sgPSAyMTQ3NDgzNjQ3OwogCQkJZmls
ZXMgPSAoCisJCQkJNTE3QjVGOUEyNzVGM0E4NjAwMkRDMjJEIC8qIEFyZ3VtZW50Q29kZXJzLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTUxN0I1RjY4Mjc1QTlBNzgwMDJEQzIyRCAvKiBXZWJQdXNo
VG9vbENvbm5lY3Rpb24ubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY5QjI3NUYzQTk4MDAy
REMyMkQgLyogRGFlbW9uVXRpbGl0aWVzLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNTE3QjVGOUMy
NzVGM0MzNzAwMkRDMjJEIC8qIERhZW1vbkVuY29kZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
NTE3QjVGNjUyNzVBOEQ3RjAwMkRDMjJEIC8qIFdlYlB1c2hUb29sTWFpbi5tbSBpbiBTb3VyY2Vz
ICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwpA
QCAtMTUxODEsNiArMTUyMTQsNyBAQAogCQkJCUNEQTkzREIxMjJGOEJDRjQwMDQ5MEE2OSAvKiBG
dWxsc2NyZWVuVG91Y2hTZWNoZXVyaXN0aWNQYXJhbWV0ZXJzLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCUMxQTE1MkQ3MjRFNUEyOUEwMDk3OEM4QiAvKiBIYW5kbGVYUENFbmRwb2ludE1lc3NhZ2Vz
Lm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMjc0OUY2NDQyMTQ2NTYxQjAwODM4MEJGIC8qIEluamVj
dGVkQnVuZGxlTm9kZUhhbmRsZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1MTdCNUY5OTI3NUVD
NjAxMDAyREMyMkQgLyogV2ViUHVzaE1lc3NhZ2VDb2NvYS5tbSBpbiBTb3VyY2VzICovLAogCQkJ
CTI3NDlGNjQ1MjE0NjU2MUUwMDgzODBCRiAvKiBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTlCRjVFQzY0MjU0MTE0NTYwMDk4NEU3NyAvKiBKU0lQQ0Jp
bmRpbmcuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQzE0RDM3RkUyNEFDRTA4NjAwN0ZGMDE0IC8q
IExhdW5jaFNlcnZpY2VzRGF0YWJhc2VNYW5hZ2VyLm1tIGluIFNvdXJjZXMgKi8sCkBAIC0xNTY2
MSw2ICsxNTY5NSwxNiBAQAogCQkJdGFyZ2V0ID0gNTE3QjVGNUEyNzVBOEQzRTAwMkRDMjJEIC8q
IHdlYnB1c2h0b29sICovOwogCQkJdGFyZ2V0UHJveHkgPSA1MTdCNUY2QzI3NUIwN0MzMDAyREMy
MkQgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOwogCQl9OworCQk1MTk3OTdDNzI3NjI3QjFE
MDBCRTBGODMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5s
b2NrIEtleWNoYWluICovOworCQkJdGFyZ2V0UHJveHkgPSA1MTk3OTdDNjI3NjI3QjFEMDBCRTBG
ODMgLyogUEJYQ29udGFpbmVySXRlbVByb3h5ICovOworCQl9OworCQk1MTk3OTdDOTI3NjI3QjIz
MDBCRTBGODMgLyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKKwkJCWlzYSA9IFBCWFRhcmdl
dERlcGVuZGVuY3k7CisJCQl0YXJnZXQgPSA4REMyRUY0RjA0ODZBNjk0MDA5OEIyMTYgLyogV2Vi
S2l0ICovOworCQkJdGFyZ2V0UHJveHkgPSA1MTk3OTdDODI3NjI3QjIzMDBCRTBGODMgLyogUEJY
Q29udGFpbmVySXRlbVByb3h5ICovOworCQl9OwogCQk1NzQyQTJFNjI1MzU2MTNGMDBCN0JBMTQg
LyogUEJYVGFyZ2V0RGVwZW5kZW5jeSAqLyA9IHsKIAkJCWlzYSA9IFBCWFRhcmdldERlcGVuZGVu
Y3k7CiAJCQl0YXJnZXQgPSBFMUFDMkUyNzIwRjdCOTRDMDBCMDg5N0QgLyogVW5sb2NrIEtleWNo
YWluICovOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29u
bmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5o
CmluZGV4IDc2MDUzZWZjMmQ5MS4uN2ZhNDNmZDllMDlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dlYnB1c2hkL1B1c2hDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC93
ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5oCkBAIC01Niw2ICs1Niw3IEBAIHB1YmxpYzoK
IAogICAgIGNvbnN0IFN0cmluZyYgaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllcigpOwogICAg
IGJvb2wgaG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCgpOworICAgIGJvb2wgaG9zdEFwcEhhc1B1
c2hJbmplY3RFbnRpdGxlbWVudCgpOwogCiAgICAgYm9vbCBkZWJ1Z01vZGVJc0VuYWJsZWQoKSBj
b25zdCB7IHJldHVybiBtX2RlYnVnTW9kZUVuYWJsZWQ7IH0KICAgICB2b2lkIHNldERlYnVnTW9k
ZUlzRW5hYmxlZChib29sKTsKQEAgLTc1LDYgKzc2LDggQEAgcHJpdmF0ZToKICAgICB2b2lkIG1h
eWJlU3RhcnROZXh0QXBwQnVuZGxlUmVxdWVzdCgpOwogICAgIHZvaWQgc2V0SG9zdEFwcEF1ZGl0
VG9rZW5EYXRhKGNvbnN0IFZlY3Rvcjx1aW50OF90PiYpOwogCisgICAgYm9vbCBob3N0SGFzRW50
aXRsZW1lbnQoY29uc3QgY2hhciopOworCiAgICAgT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25f
dD4gbV94cGNDb25uZWN0aW9uOwogCiAgICAgc3RkOjpvcHRpb25hbDxhdWRpdF90b2tlbl90PiBt
X2hvc3RBcHBBdWRpdFRva2VuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9Q
dXNoQ2xpZW50Q29ubmVjdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVu
dENvbm5lY3Rpb24ubW0KaW5kZXggNDVjNDFhZmUxOTAzLi5mODllZjI4MjNiYTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvUHVzaENsaWVudENvbm5lY3Rpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC93ZWJwdXNoZC9QdXNoQ2xpZW50Q29ubmVjdGlvbi5tbQpAQCAtODksMTUg
Kzg5LDI0IEBAIGNvbnN0IFN0cmluZyYgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllcigpCiAKIGJvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9zdEFwcEhhc1B1c2hF
bnRpdGxlbWVudCgpCiB7Ci0gICAgaWYgKCFtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpIHsK
LSAgICAgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICBtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQgPSBXVEY6Omhhc0VudGl0
bGVtZW50KCptX2hvc3RBcHBBdWRpdFRva2VuLCAiY29tLmFwcGxlLnByaXZhdGUud2Via2l0Lndl
YnB1c2giKTsKLSAgICB9CisgICAgaWYgKCFtX2hvc3RBcHBIYXNQdXNoRW50aXRsZW1lbnQpCisg
ICAgICAgIG1faG9zdEFwcEhhc1B1c2hFbnRpdGxlbWVudCA9IGhvc3RIYXNFbnRpdGxlbWVudCgi
Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2giX3MpOwogCiAgICAgcmV0dXJuICptX2hv
c3RBcHBIYXNQdXNoRW50aXRsZW1lbnQ7CiB9CiAKK2Jvb2wgQ2xpZW50Q29ubmVjdGlvbjo6aG9z
dEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVudCgpCit7CisgICAgcmV0dXJuIGhvc3RIYXNFbnRp
dGxlbWVudCgiY29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0Il9zKTsKK30K
KworYm9vbCBDbGllbnRDb25uZWN0aW9uOjpob3N0SGFzRW50aXRsZW1lbnQoY29uc3QgY2hhciog
ZW50aXRsZW1lbnQpCit7CisgICAgaWYgKCFtX2hvc3RBcHBBdWRpdFRva2VuKQorICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIFdURjo6aGFzRW50aXRsZW1lbnQoKm1faG9zdEFwcEF1
ZGl0VG9rZW4sIGVudGl0bGVtZW50KTsKK30KKwogdm9pZCBDbGllbnRDb25uZWN0aW9uOjpzZXRE
ZWJ1Z01vZGVJc0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIGlmIChlbmFibGVkID09IG1f
ZGVidWdNb2RlRW5hYmxlZCkKQEAgLTExMiw5ICsxMjEsOSBAQCB2b2lkIENsaWVudENvbm5lY3Rp
b246OmJyb2FkY2FzdERlYnVnTWVzc2FnZShjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiAgICAgU3Ry
aW5nIG1lc3NhZ2VJZGVudGlmaWVyOwogICAgIGF1dG8gc2lnbmluZ0lkZW50aWZlciA9IGhvc3RB
cHBDb2RlU2lnbmluZ0lkZW50aWZpZXIoKTsKICAgICBpZiAoc2lnbmluZ0lkZW50aWZlci5pc0Vt
cHR5KCkpCi0gICAgICAgIG1lc3NhZ2VJZGVudGlmaWVyID0gbWFrZVN0cmluZyAoIlsoMHgiLCBo
ZXgocmVpbnRlcnByZXRfY2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0aW9uLmdldCgpKSwgV1RG
OjpIZXhDb252ZXJzaW9uTW9kZTo6TG93ZXJjYXNlKSwgIildICIpOworICAgICAgICBtZXNzYWdl
SWRlbnRpZmllciA9IG1ha2VTdHJpbmcoIlsoMHgiLCBoZXgocmVpbnRlcnByZXRfY2FzdDx1aW50
NjRfdD4obV94cGNDb25uZWN0aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9uTW9kZTo6TG93
ZXJjYXNlKSwgIildICIpOwogICAgIGVsc2UKLSAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBt
YWtlU3RyaW5nICgiWyIsIHNpZ25pbmdJZGVudGlmZXIsICIgKDB4IiwgaGV4KHJlaW50ZXJwcmV0
X2Nhc3Q8dWludDY0X3Q+KG1feHBjQ29ubmVjdGlvbi5nZXQoKSksIFdURjo6SGV4Q29udmVyc2lv
bk1vZGU6Okxvd2VyY2FzZSksICIpXSAiKTsKKyAgICAgICAgbWVzc2FnZUlkZW50aWZpZXIgPSBt
YWtlU3RyaW5nKCJbIiwgc2lnbmluZ0lkZW50aWZlciwgIiAoMHgiLCBoZXgocmVpbnRlcnByZXRf
Y2FzdDx1aW50NjRfdD4obV94cGNDb25uZWN0aW9uLmdldCgpKSwgV1RGOjpIZXhDb252ZXJzaW9u
TW9kZTo6TG93ZXJjYXNlKSwgIildICIpOwogCiAgICAgRGFlbW9uOjpzaW5nbGV0b24oKS5icm9h
ZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdlTGV2ZWw6OkluZm8sIG1ha2VTdHJpbmcobWVz
c2FnZUlkZW50aWZpZXIsIG1lc3NhZ2UpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNo
RGFlbW9uLmgKaW5kZXggMmExMmNhMzQ0M2U0Li4zM2NjZDUzNjQ2MzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvd2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
d2VicHVzaGQvV2ViUHVzaERhZW1vbi5oCkBAIC0yNiw4ICsyNiwxMSBAQAogI3ByYWdtYSBvbmNl
CiAKICNpbmNsdWRlICJQdXNoQ2xpZW50Q29ubmVjdGlvbi5oIgorI2luY2x1ZGUgIlB1c2hNZXNz
YWdlRm9yVGVzdGluZy5oIgogI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmln
dXJhdGlvbi5oIgogI2luY2x1ZGUgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKKyNpbmNsdWRl
ICJXZWJQdXNoTWVzc2FnZS5oIgorI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogI2luY2x1ZGUgPHd0
Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFz
aFNldC5oPgpAQCAtNDAsNiArNDMsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIGVudW0gY2xhc3MgTWVz
c2FnZUxldmVsIDogdWludDhfdDsKIH0KIAordXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1l
c3NhZ2VGb3JUZXN0aW5nOwogdXNpbmcgV2ViS2l0OjpXZWJQdXNoRDo6V2ViUHVzaERhZW1vbkNv
bm5lY3Rpb25Db25maWd1cmF0aW9uOwogCiBuYW1lc3BhY2UgV2ViUHVzaEQgewpAQCAtNjIsNiAr
NjYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBkZWxldGVQdXNoQW5kTm90aWZpY2F0aW9uUmVnaXN0
cmF0aW9uKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIG9yaWdpblN0cmluZywgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChjb25zdCBTdHJpbmcmKT4mJiByZXBseVNlbmRlcik7CiAgICAg
dm9pZCBzZXREZWJ1Z01vZGVJc0VuYWJsZWQoQ2xpZW50Q29ubmVjdGlvbiosIGJvb2wpOwogICAg
IHZvaWQgdXBkYXRlQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oQ2xpZW50Q29ubmVjdGlvbiosIGNv
bnN0IFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbiYpOworICAgIHZvaWQgaW5q
ZWN0UHVzaE1lc3NhZ2VGb3JUZXN0aW5nKENsaWVudENvbm5lY3Rpb24qLCBjb25zdCBQdXNoTWVz
c2FnZUZvclRlc3RpbmcmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKKyAgICB2
b2lkIGdldFBlbmRpbmdQdXNoTWVzc2FnZXMoQ2xpZW50Q29ubmVjdGlvbiosIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+Jik+JiYgcmVw
bHlTZW5kZXIpOwogCiAgICAgdm9pZCBicm9hZGNhc3REZWJ1Z01lc3NhZ2UoSlNDOjpNZXNzYWdl
TGV2ZWwsIGNvbnN0IFN0cmluZyYpOwogCkBAIC03NSw2ICs4MSw4IEBAIHByaXZhdGU6CiAKICAg
ICBDbGllbnRDb25uZWN0aW9uKiB0b0NsaWVudENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCk7
CiAgICAgSGFzaE1hcDx4cGNfY29ubmVjdGlvbl90LCBSZWY8Q2xpZW50Q29ubmVjdGlvbj4+IG1f
Y29ubmVjdGlvbk1hcDsKKworICAgIEhhc2hNYXA8U3RyaW5nLCBEZXF1ZTxQdXNoTWVzc2FnZUZv
clRlc3Rpbmc+PiBtX3Rlc3RpbmdQdXNoTWVzc2FnZXM7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJQdXNoRApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9u
Lm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IGZkN2Iy
NTAwNTA5Yi4uNDI0MjZiZTRiNmE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hk
L1dlYlB1c2hEYWVtb24ubW0KKysrIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC9XZWJQdXNoRGFl
bW9uLm1tCkBAIC03MCw2ICs3MCwxMSBAQCBBUkdVTUVOVFMoU3RyaW5nKQogUkVQTFkoYm9vbCkK
IEVORAogCitGVU5DVElPTihnZXRQZW5kaW5nUHVzaE1lc3NhZ2VzKQorQVJHVU1FTlRTKCkKK1JF
UExZKGNvbnN0IFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYpCitFTkQKKwogRlVOQ1RJ
T04oc2V0RGVidWdNb2RlSXNFbmFibGVkKQogQVJHVU1FTlRTKGJvb2wpCiBFTkQKQEAgLTc4LDYg
KzgzLDExIEBAIEZVTkNUSU9OKHVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uKQogQVJHVU1F
TlRTKFdlYlB1c2hEYWVtb25Db25uZWN0aW9uQ29uZmlndXJhdGlvbikKIEVORAogCitGVU5DVElP
TihpbmplY3RQdXNoTWVzc2FnZUZvclRlc3RpbmcpCitBUkdVTUVOVFMoUHVzaE1lc3NhZ2VGb3JU
ZXN0aW5nKQorUkVQTFkoYm9vbCkKK0VORAorCiAjdW5kZWYgRlVOQ1RJT04KICN1bmRlZiBBUkdV
TUVOVFMKICN1bmRlZiBSRVBMWQpAQCAtMTExLDYgKzEyMSwyMCBAQCBXZWJQdXNoRDo6RW5jb2Rl
ZE1lc3NhZ2UgcmVxdWVzdFN5c3RlbU5vdGlmaWNhdGlvblBlcm1pc3Npb246OmVuY29kZVJlcGx5
KGJvb2wgcgogICAgIHJldHVybiBlbmNvZGVyLnRha2VCdWZmZXIoKTsKIH0KIAorV2ViUHVzaEQ6
OkVuY29kZWRNZXNzYWdlIGluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzo6ZW5jb2RlUmVwbHko
Ym9vbCByZXBseSkKK3sKKyAgICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAg
IGVuY29kZXIgPDwgcmVwbHk7CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQor
CitXZWJQdXNoRDo6RW5jb2RlZE1lc3NhZ2UgZ2V0UGVuZGluZ1B1c2hNZXNzYWdlczo6ZW5jb2Rl
UmVwbHkoY29uc3QgVmVjdG9yPFdlYktpdDo6V2ViUHVzaE1lc3NhZ2U+JiByZXBseSkKK3sKKyAg
ICBXZWJLaXQ6OkRhZW1vbjo6RW5jb2RlciBlbmNvZGVyOworICAgIGVuY29kZXIgPDwgcmVwbHk7
CisgICAgcmV0dXJuIGVuY29kZXIudGFrZUJ1ZmZlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBN
ZXNzYWdlSW5mbwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJbmZvPgpAQCAtMjMzLDYgKzI1NywxMiBA
QCB2b2lkIERhZW1vbjo6ZGVjb2RlQW5kSGFuZGxlTWVzc2FnZSh4cGNfY29ubmVjdGlvbl90IGNv
bm5lY3Rpb24sIE1lc3NhZ2VUeXBlIG1lcwogICAgIGNhc2UgTWVzc2FnZVR5cGU6OlVwZGF0ZUNv
bm5lY3Rpb25Db25maWd1cmF0aW9uOgogICAgICAgICBoYW5kbGVXZWJQdXNoRE1lc3NhZ2U8TWVz
c2FnZUluZm86OnVwZGF0ZUNvbm5lY3Rpb25Db25maWd1cmF0aW9uPihjbGllbnRDb25uZWN0aW9u
LCBlbmNvZGVkTWVzc2FnZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6
OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZzoKKyAgICAgICAgaGFuZGxlV2ViUHVzaERNZXNz
YWdlV2l0aFJlcGx5PE1lc3NhZ2VJbmZvOjppbmplY3RQdXNoTWVzc2FnZUZvclRlc3Rpbmc+KGNs
aWVudENvbm5lY3Rpb24sIGVuY29kZWRNZXNzYWdlLCBXVEZNb3ZlKHJlcGx5U2VuZGVyKSk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgTWVzc2FnZVR5cGU6OkdldFBlbmRpbmdQdXNoTWVzc2Fn
ZXM6CisgICAgICAgIGhhbmRsZVdlYlB1c2hETWVzc2FnZVdpdGhSZXBseTxNZXNzYWdlSW5mbzo6
Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcz4oY2xpZW50Q29ubmVjdGlvbiwgZW5jb2RlZE1lc3NhZ2Us
IFdURk1vdmUocmVwbHlTZW5kZXIpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogfQogCkBAIC0y
OTcsNiArMzI3LDU1IEBAIHZvaWQgRGFlbW9uOjp1cGRhdGVDb25uZWN0aW9uQ29uZmlndXJhdGlv
bihDbGllbnRDb25uZWN0aW9uKiBjbGllbnRDb25uZWN0aW9uLCBjCiAgICAgY2xpZW50Q29ubmVj
dGlvbi0+dXBkYXRlQ29ubmVjdGlvbkNvbmZpZ3VyYXRpb24oY29uZmlndXJhdGlvbik7CiB9CiAK
K3ZvaWQgRGFlbW9uOjppbmplY3RQdXNoTWVzc2FnZUZvclRlc3RpbmcoQ2xpZW50Q29ubmVjdGlv
biogY29ubmVjdGlvbiwgY29uc3QgUHVzaE1lc3NhZ2VGb3JUZXN0aW5nJiBtZXNzYWdlLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIGlmICghY29u
bmVjdGlvbi0+aG9zdEFwcEhhc1B1c2hJbmplY3RFbnRpdGxlbWVudCgpKSB7CisgICAgICAgIGNv
bm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZSgiQXR0ZW1wdGluZyB0byBpbmplY3QgYSBw
dXNoIG1lc3NhZ2UgZnJvbSBhbiB1bmVudGl0bGVkIHByb2Nlc3MiKTsKKyAgICAgICAgcmVwbHlT
ZW5kZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1lc3NhZ2Uu
dGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyLmlzRW1wdHkoKSB8fCAhbWVzc2FnZS5yZWdp
c3RyYXRpb25VUkwuaXNWYWxpZCgpKSB7CisgICAgICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERl
YnVnTWVzc2FnZSgiQXR0ZW1wdGluZyB0byBpbmplY3QgYW4gaW52YWxpZCBwdXNoIG1lc3NhZ2Ui
KTsKKyAgICAgICAgcmVwbHlTZW5kZXIoZmFsc2UpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgY29ubmVjdGlvbi0+YnJvYWRjYXN0RGVidWdNZXNzYWdlKG1ha2VTdHJpbmcoIkluamVj
dGVkIGEgdGVzdCBwdXNoIG1lc3Nhc2dlIGZvciAiLCBtZXNzYWdlLnRhcmdldEFwcENvZGVTaWdu
aW5nSWRlbnRpZmllciwgIiBhdCAiLCBtZXNzYWdlLnJlZ2lzdHJhdGlvblVSTC5zdHJpbmcoKSkp
OworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtZXNzYWdlLm1lc3NhZ2Up
OworCisgICAgYXV0byBhZGRSZXN1bHQgPSBtX3Rlc3RpbmdQdXNoTWVzc2FnZXMuZW5zdXJlKG1l
c3NhZ2UudGFyZ2V0QXBwQ29kZVNpZ25pbmdJZGVudGlmaWVyLCBbXSB7CisgICAgICAgIHJldHVy
biBEZXF1ZTxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+IHsgfTsKKyAgICB9KTsKKyAgICBhZGRSZXN1
bHQuaXRlcmF0b3ItPnZhbHVlLmFwcGVuZChtZXNzYWdlKTsKKworICAgIHJlcGx5U2VuZGVyKHRy
dWUpOworfQorCit2b2lkIERhZW1vbjo6Z2V0UGVuZGluZ1B1c2hNZXNzYWdlcyhDbGllbnRDb25u
ZWN0aW9uKiBjb25uZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnN0IFZlY3RvcjxX
ZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiYpPiYmIHJlcGx5U2VuZGVyKQoreworICAgIGF1dG8gaG9z
dEFwcENvZGVTaWduaW5nSWRlbnRpZmllciA9IGNvbm5lY3Rpb24tPmhvc3RBcHBDb2RlU2lnbmlu
Z0lkZW50aWZpZXIoKTsKKyAgICBpZiAoaG9zdEFwcENvZGVTaWduaW5nSWRlbnRpZmllci5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgcmVwbHlTZW5kZXIoeyB9KTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIFZlY3RvcjxXZWJLaXQ6OldlYlB1c2hNZXNzYWdlPiByZXN1bHRNZXNzYWdlczsK
KworICAgIGF1dG8gaXRlcmF0b3IgPSBtX3Rlc3RpbmdQdXNoTWVzc2FnZXMuZmluZChob3N0QXBw
Q29kZVNpZ25pbmdJZGVudGlmaWVyKTsKKyAgICBpZiAoaXRlcmF0b3IgIT0gbV90ZXN0aW5nUHVz
aE1lc3NhZ2VzLmVuZCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgbWVzc2FnZSA6IGl0ZXJhdG9y
LT52YWx1ZSkgeworICAgICAgICAgICAgYXV0byBkYXRhID0gbWVzc2FnZS5tZXNzYWdlLnV0Zjgo
KTsKKyAgICAgICAgICAgIHJlc3VsdE1lc3NhZ2VzLmFwcGVuZChXZWJLaXQ6OldlYlB1c2hNZXNz
YWdlIHsgVmVjdG9yPHVpbnQ4X3Q+IHsgcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4o
ZGF0YS5kYXRhKCkpLCBkYXRhLmxlbmd0aCgpIH0sIG1lc3NhZ2UucmVnaXN0cmF0aW9uVVJMIH0p
OworICAgICAgICB9CisgICAgICAgIG1fdGVzdGluZ1B1c2hNZXNzYWdlcy5yZW1vdmUoaXRlcmF0
b3IpOworICAgIH0KKworICAgIGNvbm5lY3Rpb24tPmJyb2FkY2FzdERlYnVnTWVzc2FnZShtYWtl
U3RyaW5nKCJGZXRjaGluZyAiLCBTdHJpbmc6Om51bWJlcihyZXN1bHRNZXNzYWdlcy5zaXplKCkp
LCAiIHBlbmRpbmcgcHVzaCBtZXNzYWdlcyIpKTsKKworICAgIHJlcGx5U2VuZGVyKFdURk1vdmUo
cmVzdWx0TWVzc2FnZXMpKTsKK30KKwogQ2xpZW50Q29ubmVjdGlvbiogRGFlbW9uOjp0b0NsaWVu
dENvbm5lY3Rpb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uKQogewogICAgIGF1dG8gY2xp
ZW50Q29ubmVjdGlvbiA9IG1fY29ubmVjdGlvbk1hcC5nZXQoY29ubmVjdGlvbik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29ubmVj
dGlvbi5oIGIvU291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENv
bm5lY3Rpb24uaAppbmRleCBmZjYyMzZiN2JlZTcuLmJlMmYxNzk5MWM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC93ZWJwdXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24u
aAorKysgYi9Tb3VyY2UvV2ViS2l0L3dlYnB1c2hkL3dlYnB1c2h0b29sL1dlYlB1c2hUb29sQ29u
bmVjdGlvbi5oCkBAIC0yNSwxMSArMjUsMTUgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJQdXNoTWVzc2FnZUZvclRlc3RpbmcuaCIKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8
d3RmL1JldGFpblB0ci5oPgorI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlIDx3dGYvV2Vh
a1B0ci5oPgogI2luY2x1ZGUgPHd0Zi9zcGkvZGFyd2luL1hQQ1NQSS5oPgogCit1c2luZyBXZWJL
aXQ6OldlYlB1c2hEOjpQdXNoTWVzc2FnZUZvclRlc3Rpbmc7CisKIG5hbWVzcGFjZSBXZWJQdXNo
VG9vbCB7CiAKIGVudW0gY2xhc3MgQWN0aW9uIHsKQEAgLTU0LDE5ICs1OCwyNCBAQCBwdWJsaWM6
CiAKICAgICB2b2lkIGNvbm5lY3RUb1NlcnZpY2UoKTsKIAorICAgIHZvaWQgc2V0UHVzaE1lc3Nh
Z2Uoc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4mJiBtZXNzYWdlKSB7IG1f
cHVzaE1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpOyB9CisKIHByaXZhdGU6CiAgICAgdm9pZCBt
ZXNzYWdlUmVjZWl2ZWQoeHBjX29iamVjdF90KTsKICAgICB2b2lkIGNvbm5lY3Rpb25Ecm9wcGVk
KCk7CiAKICAgICB2b2lkIHN0YXJ0QWN0aW9uKCk7CiAgICAgdm9pZCBzdGFydERlYnVnU3RyZWFt
QWN0aW9uKCk7CisgICAgdm9pZCBzZW5kUHVzaE1lc3NhZ2UoKTsKIAogICAgIHZvaWQgc2VuZEF1
ZGl0VG9rZW4oKTsKLSAgICAKKwogICAgIEFjdGlvbiBtX2FjdGlvbjsKICAgICBib29sIG1fcmVj
b25uZWN0IHsgZmFsc2UgfTsKICAgICBSZXRhaW5QdHI8eHBjX2Nvbm5lY3Rpb25fdD4gbV9jb25u
ZWN0aW9uOwogICAgIGNvbnN0IGNoYXIqIG1fc2VydmljZU5hbWU7CisKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPiBtX3B1c2hNZXNzYWdlOwogfTsKIAogfSAvLyBu
YW1lc3BhY2UgV2ViUHVzaFRvb2wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQv
d2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tIGIvU291cmNlL1dlYktpdC93ZWJw
dXNoZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbENvbm5lY3Rpb24ubW0KaW5kZXggYmRlNGU1NGUx
MWUwLi5hNDMzNGQ2NDYzNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2Vi
cHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2Vi
cHVzaGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xDb25uZWN0aW9uLm1tCkBAIC0yNiw2ICsyNiw5
IEBACiAjaW1wb3J0ICJjb25maWcuaCIKICNpbXBvcnQgIldlYlB1c2hUb29sQ29ubmVjdGlvbi5o
IgogCisjaW1wb3J0ICJEYWVtb25FbmNvZGVyLmgiCisjaW1wb3J0ICJEYWVtb25VdGlsaXRpZXMu
aCIKKyNpbXBvcnQgIldlYlB1c2hEYWVtb25Db25zdGFudHMuaCIKICNpbXBvcnQgPG1hY2gvbWFj
aF9pbml0Lmg+CiAjaW1wb3J0IDxtYWNoL3Rhc2suaD4KICNpbXBvcnQgPHBhbC9zcGkvY29jb2Ev
U2VydmVyc1NQSS5oPgpAQCAtMTE4LDYgKzEyMSwyNiBAQCB2b2lkIENvbm5lY3Rpb246OnN0YXJ0
QWN0aW9uKCkKICAgICAgICAgc3RhcnREZWJ1Z1N0cmVhbUFjdGlvbigpOwogICAgICAgICBicmVh
azsKICAgICB9OworCisgICAgaWYgKG1fcHVzaE1lc3NhZ2UpCisgICAgICAgIHNlbmRQdXNoTWVz
c2FnZSgpOworfQorCit2b2lkIENvbm5lY3Rpb246OnNlbmRQdXNoTWVzc2FnZSgpCit7CisgICAg
QVNTRVJUKG1fcHVzaE1lc3NhZ2UpOworCisgICAgV2ViS2l0OjpEYWVtb246OkVuY29kZXIgZW5j
b2RlcjsKKyAgICBlbmNvZGVyIDw8ICptX3B1c2hNZXNzYWdlOworCisgICAgYXV0byBkaWN0aW9u
YXJ5ID0gYWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkp
OworICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgV2ViS2l0
OjpXZWJQdXNoRDo6cHJvdG9jb2xWZXJzaW9uS2V5LCBXZWJLaXQ6OldlYlB1c2hEOjpwcm90b2Nv
bFZlcnNpb25WYWx1ZSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3ZhbHVlKGRpY3Rpb25hcnku
Z2V0KCksIFdlYktpdDo6V2ViUHVzaEQ6OnByb3RvY29sRW5jb2RlZE1lc3NhZ2VLZXksIFdlYktp
dDo6dmVjdG9yVG9YUENEYXRhKGVuY29kZXIudGFrZUJ1ZmZlcigpKS5nZXQoKSk7CisgICAgeHBj
X2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChkaWN0aW9uYXJ5LmdldCgpLCBXZWJLaXQ6OldlYlB1c2hE
Ojpwcm90b2NvbE1lc3NhZ2VUeXBlS2V5LCBzdGF0aWNfY2FzdDx1aW50NjRfdD4oV2ViS2l0OjpX
ZWJQdXNoRDo6TWVzc2FnZVR5cGU6OkluamVjdFB1c2hNZXNzYWdlRm9yVGVzdGluZykpOworCisg
ICAgeHBjX2Nvbm5lY3Rpb25fc2VuZF9tZXNzYWdlX3dpdGhfcmVwbHkobV9jb25uZWN0aW9uLmdl
dCgpLCBkaWN0aW9uYXJ5LmdldCgpLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCBeKHhwY19v
YmplY3RfdCByZXN1bHRNZXNzYWdlKSB7CisgICAgICAgIC8vIFRoaXMgcmVwbHkgaGFuZGxlciBp
bnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKKyAgICB9KTsKIH0KIAogdm9pZCBDb25uZWN0aW9uOjpz
dGFydERlYnVnU3RyZWFtQWN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2VicHVz
aGQvd2VicHVzaHRvb2wvV2ViUHVzaFRvb2xNYWluLm1tIGIvU291cmNlL1dlYktpdC93ZWJwdXNo
ZC93ZWJwdXNodG9vbC9XZWJQdXNoVG9vbE1haW4ubW0KaW5kZXggNjJmNjc4ZjlmZDY2Li5hNTg3
OTU5OGRhNGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRvb2wv
V2ViUHVzaFRvb2xNYWluLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvd2VicHVzaGQvd2VicHVzaHRv
b2wvV2ViUHVzaFRvb2xNYWluLm1tCkBAIC0yNCwxMSArMjQsMTQgQEAKICAqLwogCiAjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIlB1c2hNZXNzYWdlRm9yVGVzdGluZy5oIgogI2ltcG9ydCAi
V2ViUHVzaFRvb2xDb25uZWN0aW9uLmgiCiAjaW1wb3J0IDxGb3VuZGF0aW9uL0ZvdW5kYXRpb24u
aD4KICNpbXBvcnQgPG9wdGlvbmFsPgogI2ltcG9ydCA8d3RmL01haW5UaHJlYWQuaD4KIAordXNp
bmcgV2ViS2l0OjpXZWJQdXNoRDo6UHVzaE1lc3NhZ2VGb3JUZXN0aW5nOworCiBfX2F0dHJpYnV0
ZV9fKChfX25vcmV0dXJuX18pKQogc3RhdGljIHZvaWQgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShO
U1N0cmluZyAqbWVzc2FnZSkKIHsKQEAgLTM2LDE1ICszOSw0MyBAQCBzdGF0aWMgdm9pZCBwcmlu
dFVzYWdlQW5kVGVybWluYXRlKE5TU3RyaW5nICptZXNzYWdlKQogCiAgICAgZnByaW50ZihzdGRl
cnIsICJVc2FnZTogd2VicHVzaHRvb2wgW29wdGlvbnNdXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVy
ciwgIlxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC0tZGV2ZWxvcG1lbnQgICAgICAgICAg
ICAgIENvbm5lY3RzIHRvIG1hY2ggc2VydmljZSBcIm9yZy53ZWJraXQud2VicHVzaHRlc3RkYWVt
b24uc2VydmljZVwiIChEZWZhdWx0KVxuIik7Ci0gICAgZnByaW50ZihzdGRlcnIsICIgIC0tcHJv
ZHVjdGlvbiAgICAgICAgICAgICAgIENvbm5lY3RzIHRvIG1hY2ggc2VydmljZSBcImNvbS5hcHBs
ZS53ZWJraXQud2VicHVzaGQuc2VydmljZVwiXG4iKTsKLSAgICBmcHJpbnRmKHN0ZGVyciwgIiAg
LS1zdHJlYW1EZWJ1Z01lc3NhZ2VzICAgICAgU3RyZWFtIGRlYnVnIG1lc3NhZ2VzIGZyb20gd2Vi
cHVzaGRcbiIpOwotICAgIGZwcmludGYoc3RkZXJyLCAiICAtLXJlY29ubmVjdCAgICAgICAgICAg
ICAgICBSZWNvbm5lY3QgYWZ0ZXIgY29ubmVjdGlvbiBpcyBsb3N0XG4iKTsKKyAgICBmcHJpbnRm
KHN0ZGVyciwgIiAgLS1kZXZlbG9wbWVudFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAg
Q29ubmVjdHMgdG8gbWFjaCBzZXJ2aWNlIFwib3JnLndlYmtpdC53ZWJwdXNodGVzdGRhZW1vbi5z
ZXJ2aWNlXCIgKERlZmF1bHQpXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgLS1wcm9kdWN0
aW9uXG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBDb25uZWN0cyB0byBtYWNoIHNlcnZp
Y2UgXCJjb20uYXBwbGUud2Via2l0LndlYnB1c2hkLnNlcnZpY2VcIlxuIik7CisgICAgZnByaW50
ZihzdGRlcnIsICIgIC0tc3RyZWFtRGVidWdNZXNzYWdlc1xuIik7CisgICAgZnByaW50ZihzdGRl
cnIsICIgICAgU3RyZWFtIGRlYnVnIG1lc3NhZ2VzIGZyb20gd2VicHVzaGRcbiIpOworICAgIGZw
cmludGYoc3RkZXJyLCAiICAtLXJlY29ubmVjdFxuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIg
ICAgUmVjb25uZWN0IGFmdGVyIGNvbm5lY3Rpb24gaXMgbG9zdFxuIik7CisgICAgZnByaW50Zihz
dGRlcnIsICIgIC0tcHVzaCA8dGFyZ2V0IGFwcCBpZGVudGlmaWVyPiA8cmVnaXN0cmF0aW9uIFVS
TD4gPG1lc3NhZ2U+XG4iKTsKKyAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICBJbmplY3QgYSB0ZXN0
IHB1c2ggbWVzc2FzZ2UgdG8gdGhlIHRhcmdldCBhcHAgYW5kIHJlZ2lzdHJhdGlvbiBVUkxcbiIp
OwogICAgIGZwcmludGYoc3RkZXJyLCAiXG4iKTsKIAogICAgIGV4aXQoLTEpOwogfQogCitzdGF0
aWMgc3RkOjp1bmlxdWVfcHRyPFB1c2hNZXNzYWdlRm9yVGVzdGluZz4gcHVzaE1lc3NhZ2VGcm9t
QXJndW1lbnRzKE5TRW51bWVyYXRvcjxOU1N0cmluZyAqPiAqZW51bWVyYXRvcikKK3sKKyAgICBO
U1N0cmluZyAqYXBwSWRlbnRpZmllciA9IFtlbnVtZXJhdG9yIG5leHRPYmplY3RdOworICAgIGlm
ICghYXBwSWRlbnRpZmllcikKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBOU1N0cmlu
ZyAqcmVnaXN0cmF0aW9uU3RyaW5nID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgaWYg
KCFyZWdpc3RyYXRpb25TdHJpbmcpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgTlNV
UkwgKnJlZ2lzdHJhdGlvblVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOnJlZ2lzdHJhdGlvblN0
cmluZ107CisgICAgaWYgKCFyZWdpc3RyYXRpb25VUkwpCisgICAgICAgIHJldHVybiBudWxscHRy
OworCisgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBbZW51bWVyYXRvciBuZXh0T2JqZWN0XTsKKyAg
ICBpZiAoIW1lc3NhZ2UpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgUHVzaE1lc3Nh
Z2VGb3JUZXN0aW5nIHB1c2hNZXNzYWdlID0geyBhcHBJZGVudGlmaWVyLCByZWdpc3RyYXRpb25V
UkwsIG1lc3NhZ2UgfTsKKyAgICByZXR1cm4gbWFrZVVuaXF1ZVdpdGhvdXRGYXN0TWFsbG9jQ2hl
Y2s8UHVzaE1lc3NhZ2VGb3JUZXN0aW5nPihXVEZNb3ZlKHB1c2hNZXNzYWdlKSk7Cit9CisKIGlu
dCBtYWluKGludCwgY29uc3QgY2hhciAqKikKIHsKICAgICBXVEY6OmluaXRpYWxpemVNYWluVGhy
ZWFkKCk7CkBAIC01MiwxMyArODMsMTYgQEAgaW50IG1haW4oaW50LCBjb25zdCBjaGFyICoqKQog
ICAgIGF1dG8gcHJlZmVyVGVzdFNlcnZpY2UgPSBXZWJQdXNoVG9vbDo6UHJlZmVyVGVzdFNlcnZp
Y2U6OlllczsKICAgICBhdXRvIHJlY29ubmVjdCA9IFdlYlB1c2hUb29sOjpSZWNvbm5lY3Q6Ok5v
OwogICAgIHN0ZDo6b3B0aW9uYWw8V2ViUHVzaFRvb2w6OkFjdGlvbj4gYWN0aW9uOworICAgIHN0
ZDo6dW5pcXVlX3B0cjxQdXNoTWVzc2FnZUZvclRlc3Rpbmc+IHB1c2hNZXNzYWdlOwogCiAgICAg
QGF1dG9yZWxlYXNlcG9vbCB7CiAgICAgICAgIE5TQXJyYXkgKmFyZ3VtZW50cyA9IFtbTlNQcm9j
ZXNzSW5mbyBwcm9jZXNzSW5mb10gYXJndW1lbnRzXTsKICAgICAgICAgaWYgKGFyZ3VtZW50cy5j
b3VudCA9PSAxKQogICAgICAgICAgICAgcHJpbnRVc2FnZUFuZFRlcm1pbmF0ZShAIk5vIGFyZ3Vt
ZW50cyBwcm92aWRlZCIpOwogCi0gICAgICAgIGZvciAoTlNTdHJpbmcgKmFyZ3VtZW50IGluIFth
cmd1bWVudHMgc3ViYXJyYXlXaXRoUmFuZ2U6TlNNYWtlUmFuZ2UoMSwgYXJndW1lbnRzLmNvdW50
IC0gMSldKSB7CisgICAgICAgIE5TRW51bWVyYXRvcjxOU1N0cmluZyAqPiAqZW51bWVyYXRvciA9
IFtbYXJndW1lbnRzIHN1YmFycmF5V2l0aFJhbmdlOk5TTWFrZVJhbmdlKDEsIGFyZ3VtZW50cy5j
b3VudCAtIDEpXSBvYmplY3RFbnVtZXJhdG9yXTsKKyAgICAgICAgTlNTdHJpbmcgKmFyZ3VtZW50
ID0gW2VudW1lcmF0b3IgbmV4dE9iamVjdF07CisgICAgICAgIHdoaWxlIChhcmd1bWVudCkgewog
ICAgICAgICAgICAgaWYgKFthcmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXByb2R1Y3Rpb24i
XSkKICAgICAgICAgICAgICAgICBwcmVmZXJUZXN0U2VydmljZSA9IFdlYlB1c2hUb29sOjpQcmVm
ZXJUZXN0U2VydmljZTo6Tm87CiAgICAgICAgICAgICBlbHNlIGlmIChbYXJndW1lbnQgaXNFcXVh
bFRvU3RyaW5nOkAiLS1kZXZlbG9wbWVudCJdKQpAQCAtNjcsMTUgKzEwMSwyNCBAQCBpbnQgbWFp
bihpbnQsIGNvbnN0IGNoYXIgKiopCiAgICAgICAgICAgICAgICAgYWN0aW9uID0gV2ViUHVzaFRv
b2w6OkFjdGlvbjo6U3RyZWFtRGVidWdNZXNzYWdlczsKICAgICAgICAgICAgIGVsc2UgaWYgKFth
cmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXJlY29ubmVjdCJdKQogICAgICAgICAgICAgICAg
IHJlY29ubmVjdCA9IFdlYlB1c2hUb29sOjpSZWNvbm5lY3Q6OlllczsKLSAgICAgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGVsc2UgaWYgKFthcmd1bWVudCBpc0VxdWFsVG9TdHJpbmc6QCItLXB1
c2giXSkgeworICAgICAgICAgICAgICAgIHB1c2hNZXNzYWdlID0gcHVzaE1lc3NhZ2VGcm9tQXJn
dW1lbnRzKGVudW1lcmF0b3IpOworICAgICAgICAgICAgICAgIGlmICghcHVzaE1lc3NhZ2UpCisg
ICAgICAgICAgICAgICAgICAgIHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoW05TU3RyaW5nIHN0cmlu
Z1dpdGhGb3JtYXQ6QCJJbnZhbGlkIHB1c2ggYXJndW1lbnRzIHNwZWNpZmllZCJdKTsKKyAgICAg
ICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgIHByaW50VXNhZ2VBbmRUZXJtaW5hdGUoW05T
U3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJJbnZhbGlkIG9wdGlvbiBwcm92aWRlZDogJUAiLCBh
cmd1bWVudF0pOworCisgICAgICAgICAgICBhcmd1bWVudCA9IFtlbnVtZXJhdG9yIG5leHRPYmpl
Y3RdOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKCFhY3Rpb24pCisgICAgaWYgKCFhY3Rp
b24gJiYgIXB1c2hNZXNzYWdlKQogICAgICAgICBwcmludFVzYWdlQW5kVGVybWluYXRlKEAiTm8g
YWN0aW9uIHByb3ZpZGVkIik7CiAKICAgICBhdXRvIGNvbm5lY3Rpb24gPSBXZWJQdXNoVG9vbDo6
Q29ubmVjdGlvbjo6Y3JlYXRlKCphY3Rpb24sIHByZWZlclRlc3RTZXJ2aWNlLCByZWNvbm5lY3Qp
OworICAgIGlmIChwdXNoTWVzc2FnZSkKKyAgICAgICAgY29ubmVjdGlvbi0+c2V0UHVzaE1lc3Nh
Z2UoV1RGTW92ZShwdXNoTWVzc2FnZSkpOworCiAgICAgY29ubmVjdGlvbi0+Y29ubmVjdFRvU2Vy
dmljZSgpOwogCiAgICAgQ0ZSdW5Mb29wUnVuKCk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmEyOGQyYTdkYTU0Li44NzYxNWQzOTk0NTEgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyOCBAQAorMjAyMS0xMi0wOSAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGFiaWxpdHkgdG8gaW5qZWN0IG1lc3NhZ2VzIGludG8gd2VicHVzaGQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMzk4OAorCisg
ICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hyaXN0ZW5zZW4uCisKKyAgICAgICAgKiBUZXN0V2Vi
S2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50czoKKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1Mt
aW50ZXJuYWwuZW50aXRsZW1lbnRzOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvQ29uZmlndXJh
dGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxlbWVudHM6CisKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1B1c2hBUEkubW06CisgICAgICAgIChtZXNzYWdl
RGljdGlvbmFyeSk6CisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L1dlYlB1c2hEYWVtb24ubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVNZXNzYWdl
RGljdGlvbmFyeSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpzZW5kTWVzc2FnZVRvRGFlbW9u
KToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnNlbmRNZXNzYWdlVG9EYWVtb25XYWl0aW5nRm9y
UmVwbHkpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6c2VuZENvbmZpZ3VyYXRpb25XaXRoQXVk
aXRUb2tlbik6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpjcmVhdGVBbmRDb25maWd1cmVDb25u
ZWN0aW9uVG9TZXJ2aWNlKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OmVuY29kZVN0cmluZyk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6
OmZ1bmN0aW9uKToKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcu
aDoKKwogMjAyMS0xMi0wOSAgQ29tbWl0IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcmV2ZXJ0aW5nIHIyODY3NjQuCmRpZmYgLS1naXQgYS9U
b29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0
bGVtZW50cyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQ
SS1pT1MuZW50aXRsZW1lbnRzCmluZGV4IDJmZDBlYWYyNTFhZS4uMWU1ZTg3YTI5YTM0IDEwMDY0
NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEkt
aU9TLmVudGl0bGVtZW50cworKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRpb25z
L1Rlc3RXZWJLaXRBUEktaU9TLmVudGl0bGVtZW50cwpAQCAtMTIsNiArMTIsOCBAQAogCTx0cnVl
Lz4KIAk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoPC9rZXk+CiAJPHRydWUv
PgorCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUud2Via2l0LndlYnB1c2guaW5qZWN0PC9rZXk+CisJ
PHRydWUvPgogCTxrZXk+Y29tLmFwcGxlLnByaXZhdGUueHBjLmxhdW5jaGQuam9iLW1hbmFnZXI8
L2tleT4KIAk8c3RyaW5nPlRlc3RXZWJLaXRBUEk8L3N0cmluZz4KIDwvZGljdD4KZGlmZiAtLWdp
dCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNP
Uy1pbnRlcm5hbC5lbnRpdGxlbWVudHMgYi9Ub29scy9UZXN0V2ViS2l0QVBJL0NvbmZpZ3VyYXRp
b25zL1Rlc3RXZWJLaXRBUEktbWFjT1MtaW50ZXJuYWwuZW50aXRsZW1lbnRzCmluZGV4IGY2ZjU0
ZTE3NDI1Zi4uNmZjMjRjNGEwNDU2IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL0Nv
bmZpZ3VyYXRpb25zL1Rlc3RXZWJLaXRBUEktbWFjT1MtaW50ZXJuYWwuZW50aXRsZW1lbnRzCisr
KyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNP
Uy1pbnRlcm5hbC5lbnRpdGxlbWVudHMKQEAgLTYsNiArNiw4IEBACiAJPHN0cmluZz5UZXN0V2Vi
S2l0QVBJPC9zdHJpbmc+CiAJPGtleT5jb20uYXBwbGUucHJpdmF0ZS53ZWJraXQud2VicHVzaDwv
a2V5PgogCTx0cnVlLz4KKwk8a2V5PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoLmlu
amVjdDwva2V5PgorCTx0cnVlLz4KIAk8a2V5PmNvbS5hcHBsZS5oaWQubWFuYWdlci51c2VyLWFj
Y2Vzcy1kZXZpY2U8L2tleT4KIAk8dHJ1ZS8+CiAJPGtleT5jb20uYXBwbGUucHJpdmF0ZS5oaWQu
Y2xpZW50LmV2ZW50LWZpbHRlcjwva2V5PgpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0QVBJLW1hY09TLmVudGl0bGVtZW50cyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxl
bWVudHMKaW5kZXggOWU2MTE3NjQ5YWNkLi5jYzk2MjEwNGEzNDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvQ29uZmlndXJhdGlvbnMvVGVzdFdlYktpdEFQSS1tYWNPUy5lbnRpdGxl
bWVudHMKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9Db25maWd1cmF0aW9ucy9UZXN0V2ViS2l0
QVBJLW1hY09TLmVudGl0bGVtZW50cwpAQCAtMTAsNiArMTAsOCBAQAogCTwvYXJyYXk+CiAJPGtl
eT5jb20uYXBwbGUucHJpdmF0ZS53ZWJraXQud2VicHVzaDwva2V5PgogCTx0cnVlLz4KKwk8a2V5
PmNvbS5hcHBsZS5wcml2YXRlLndlYmtpdC53ZWJwdXNoLmluamVjdDwva2V5PgorCTx0cnVlLz4K
IAk8a2V5PmNvbS5hcHBsZS5zZWN1cml0eS50ZW1wb3JhcnktZXhjZXB0aW9uLnNicGw8L2tleT4K
IAk8YXJyYXk+CiAJCTxzdHJpbmc+KGFsbG93IG1hY2gtaXNzdWUtZXh0ZW5zaW9uIChyZXF1aXJl
LWFsbCAoZXh0ZW5zaW9uLWNsYXNzICZxdW90O2NvbS5hcHBsZS53ZWJraXQuZXh0ZW5zaW9uLm1h
Y2gmcXVvdDspKSk8L3N0cmluZz4KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvUHVzaEFQSS5tbQppbmRleCBjNGE3MzY0ZDc1NGMuLmI2NzI5Njc4YWY5OSAxMDA2
NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9QdXNoQVBJLm1t
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvUHVzaEFQSS5tbQpA
QCAtMzQsNiArMzQsMTQgQEAKICNpbXBvcnQgPFdlYktpdC9XS1dlYnNpdGVEYXRhU3RvcmVQcml2
YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24u
aD4KIAorc3RhdGljIE5TRGljdGlvbmFyeSAqbWVzc2FnZURpY3Rpb25hcnkoTlNEYXRhICpkYXRh
LCBOU1VSTCAqcmVnaXN0cmF0aW9uKQoreworICAgIHJldHVybiBAeworICAgICAgICBAIldlYktp
dFB1c2hEYXRhIiA6IGRhdGEsCisgICAgICAgIEAiV2ViS2l0UHVzaFJlZ2lzdHJhdGlvblVSTCIg
OiByZWdpc3RyYXRpb24KKyAgICB9OworfQorCiBzdGF0aWMgU3RyaW5nIGV4cGVjdGVkTWVzc2Fn
ZTsKIAogQGludGVyZmFjZSBQdXNoQVBJTWVzc2FnZUhhbmRsZXJXaXRoRXhwZWN0ZWRNZXNzYWdl
IDogTlNPYmplY3QgPFdLU2NyaXB0TWVzc2FnZUhhbmRsZXI+CkBAIC0xNDYsNyArMTU0LDggQEAg
VEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50KQogICAgIHB1c2hNZXNzYWdlU3VjY2Vzc2Z1bCA9
IGZhbHNlOwogICAgIE5TU3RyaW5nICptZXNzYWdlID0gQCJTd2VldCBQb3RhdG9lcyI7CiAgICAg
ZXhwZWN0ZWRNZXNzYWdlID0gIlJlY2VpdmVkOiBTd2VldCBQb3RhdG9lcyI7Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2Ug
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJhdGlvbjpbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKwor
ICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1c2hNZXNzYWdl
Om1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhhbmRsZXI6Xihi
b29sIHJlc3VsdCkgewogICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSByZXN1bHQ7CiAg
ICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9XTsKQEAgLTE2MCw3ICsx
NjksNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnQpCiAgICAgcHVzaE1lc3NhZ2VTdWNj
ZXNzZnVsID0gZmFsc2U7CiAgICAgbWVzc2FnZSA9IEAiUm90dGVuIFBvdGF0b2VzIjsKICAgICBl
eHBlY3RlZE1lc3NhZ2UgPSAiUmVjZWl2ZWQ6IFJvdHRlbiBQb3RhdG9lcyI7Ci0gICAgW1tjb25m
aWd1cmF0aW9uIHdlYnNpdGVEYXRhU3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6W21lc3NhZ2Ug
ZGF0YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddIHJlZ2lzdHJhdGlvbjpbc2Vy
dmVyLnJlcXVlc3QoKSBVUkxdIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9vbCByZXN1bHQpIHsKKyAg
ICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2FnZTpt
ZXNzYWdlRGljdGlvbmFyeShbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdF
bmNvZGluZ10sIFtzZXJ2ZXIucmVxdWVzdCgpIFVSTF0pIGNvbXBsZXRpb25IYW5kbGVyOl4oYm9v
bCByZXN1bHQpIHsKICAgICAgICAgcHVzaE1lc3NhZ2VTdWNjZXNzZnVsID0gcmVzdWx0OwogICAg
ICAgICBwdXNoTWVzc2FnZVByb2Nlc3NlZCA9IHRydWU7CiAgICAgfV07CkBAIC0yMzQsNyArMjQz
LDcgQEAgVEVTVChQdXNoQVBJLCBmaXJlUHVzaEV2ZW50V2l0aE5vUGFnZXNTdWNjZXNzZnVsKQog
ICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7CiAgICAgcHVzaE1lc3NhZ2VTdWNjZXNz
ZnVsID0gZmFsc2U7CiAgICAgTlNTdHJpbmcgKm1lc3NhZ2UgPSBAIlN3ZWV0IFBvdGF0b2VzIjsK
LSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNoTWVzc2Fn
ZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10gcmVnaXN0
cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJl
c3VsdCkgeworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJvY2Vzc1B1
c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5T
VVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxldGlvbkhh
bmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3NmdWwgPSBy
ZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9XTsKQEAg
LTI3OSw3ICsyODgsNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRoTm9QYWdlc0Zh
aWwpCiAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKICAgICBwdXNoTWVzc2FnZVN1
Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBOU1N0cmluZyAqbWVzc2FnZSA9IEAiUm90dGVuIFBvdGF0
b2VzIjsKLSAgICBbW2NvbmZpZ3VyYXRpb24gd2Vic2l0ZURhdGFTdG9yZV0gX3Byb2Nlc3NQdXNo
TWVzc2FnZTpbbWVzc2FnZSBkYXRhVXNpbmdFbmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ10g
cmVnaXN0cmF0aW9uOltzZXJ2ZXIucmVxdWVzdCgpIFVSTF0gY29tcGxldGlvbkhhbmRsZXI6Xihi
b29sIHJlc3VsdCkgeworICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBfcHJv
Y2Vzc1B1c2hNZXNzYWdlOm1lc3NhZ2VEaWN0aW9uYXJ5KFttZXNzYWdlIGRhdGFVc2luZ0VuY29k
aW5nOk5TVVRGOFN0cmluZ0VuY29kaW5nXSwgW3NlcnZlci5yZXF1ZXN0KCkgVVJMXSkgY29tcGxl
dGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgewogICAgICAgICBwdXNoTWVzc2FnZVN1Y2Nlc3Nm
dWwgPSByZXN1bHQ7CiAgICAgICAgIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gdHJ1ZTsKICAgICB9
XTsKQEAgLTMzMiw3ICszNDEsNyBAQCBURVNUKFB1c2hBUEksIGZpcmVQdXNoRXZlbnRXaXRoTm9Q
YWdlc1RpbWVvdXQpCiAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSBmYWxzZTsKICAgICBwdXNo
TWVzc2FnZVN1Y2Nlc3NmdWwgPSBmYWxzZTsKICAgICBOU1N0cmluZyAqbWVzc2FnZSA9IEAiVGlt
ZWxlc3MgUG90YXRvZXMiOwotICAgIFtbY29uZmlndXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSBf
cHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlIGRhdGFVc2luZ0VuY29kaW5nOk5TVVRGOFN0cmlu
Z0VuY29kaW5nXSByZWdpc3RyYXRpb246W3NlcnZlci5yZXF1ZXN0KCkgVVJMXSBjb21wbGV0aW9u
SGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CisgICAgW1tjb25maWd1cmF0aW9uIHdlYnNpdGVEYXRh
U3RvcmVdIF9wcm9jZXNzUHVzaE1lc3NhZ2U6bWVzc2FnZURpY3Rpb25hcnkoW21lc3NhZ2UgZGF0
YVVzaW5nRW5jb2Rpbmc6TlNVVEY4U3RyaW5nRW5jb2RpbmddLCBbc2VydmVyLnJlcXVlc3QoKSBV
UkxdKSBjb21wbGV0aW9uSGFuZGxlcjpeKGJvb2wgcmVzdWx0KSB7CiAgICAgICAgIHB1c2hNZXNz
YWdlU3VjY2Vzc2Z1bCA9IHJlc3VsdDsKICAgICAgICAgcHVzaE1lc3NhZ2VQcm9jZXNzZWQgPSB0
cnVlOwogICAgIH1dOwpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XZWJQdXNoRGFlbW9uLm1tCmluZGV4IDczZjRjMjhmODk1MC4uZDY2ZTQ0MGI2M2Q2
IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dlYlB1
c2hEYWVtb24ubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9X
ZWJQdXNoRGFlbW9uLm1tCkBAIC0yNiw2ICsyNiw3IEBACiAjaW1wb3J0ICJjb25maWcuaCIKIAog
I2ltcG9ydCAiRGFlbW9uVGVzdFV0aWxpdGllcy5oIgorI2ltcG9ydCAiSFRUUFNlcnZlci5oIgog
I2ltcG9ydCAiVGVzdC5oIgogI2ltcG9ydCAiVGVzdFVSTFNjaGVtZUhhbmRsZXIuaCIKICNpbXBv
cnQgIlRlc3RXS1dlYlZpZXcuaCIKQEAgLTM1LDcgKzM2LDYgQEAKICNpbXBvcnQgPFdlYktpdC9X
S1dlYnNpdGVEYXRhU3RvcmVQcml2YXRlLmg+CiAjaW1wb3J0IDxXZWJLaXQvX1dLRXhwZXJpbWVu
dGFsRmVhdHVyZS5oPgogI2ltcG9ydCA8V2ViS2l0L19XS1dlYnNpdGVEYXRhU3RvcmVDb25maWd1
cmF0aW9uLmg+Ci0jaW1wb3J0IDxhcnJheT4KICNpbXBvcnQgPG1hY2gvbWFjaF9pbml0Lmg+CiAj
aW1wb3J0IDxtYWNoL3Rhc2suaD4KIApAQCAtMTYyLDYgKzE2Miw4NSBAQCBzdGF0aWMgdm9pZCBj
bGVhblVwVGVzdFdlYlB1c2hEKE5TVVJMICp0ZW1wRGlyKQogICAgIEVYUEVDVF9OVUxMKGVycm9y
KTsKIH0KIAorc3RhdGljIFJldGFpblB0cjx4cGNfb2JqZWN0X3Q+IGNyZWF0ZU1lc3NhZ2VEaWN0
aW9uYXJ5KHVpbnQ4X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzc2Fn
ZSkKK3sKKyAgICBhdXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0
ZShudWxscHRyLCBudWxscHRyLCAwKSk7CisgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChk
aWN0aW9uYXJ5LmdldCgpLCAicHJvdG9jb2wgdmVyc2lvbiIsIDEpOworICAgIHhwY19kaWN0aW9u
YXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIsIG1lc3NhZ2VU
eXBlKTsKKyAgICB4cGNfZGljdGlvbmFyeV9zZXRfZGF0YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5j
b2RlZCBtZXNzYWdlIiwgbWVzc2FnZS5kYXRhKCksIG1lc3NhZ2Uuc2l6ZSgpKTsKKyAgICByZXR1
cm4gV1RGTW92ZShkaWN0aW9uYXJ5KTsKK30KKworLy8gVXNlcyBhbiBleGlzdGluZyBjb25uZWN0
aW9uIHRvIHRoZSBkYWVtb24gZm9yIGEgb25lLW9mZiBtZXNzYWdlCit2b2lkIHNlbmRNZXNzYWdl
VG9EYWVtb24oeHBjX2Nvbm5lY3Rpb25fdCBjb25uZWN0aW9uLCB1aW50OF90IG1lc3NhZ2VUeXBl
LCBjb25zdCBWZWN0b3I8dWludDhfdD4mIG1lc3NhZ2UpCit7CisgICAgYXV0byBkaWN0aW9uYXJ5
ID0gY3JlYXRlTWVzc2FnZURpY3Rpb25hcnkobWVzc2FnZVR5cGUsIG1lc3NhZ2UpOworICAgIHhw
Y19jb25uZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLCBkaWN0aW9uYXJ5LmdldCgpKTsK
K30KKworLy8gVXNlcyBhbiBleGlzdGluZyBjb25uZWN0aW9uIHRvIHRoZSBkYWVtb24gZm9yIGEg
b25lLW9mZiBtZXNzYWdlLCB3YWl0aW5nIGZvciB0aGUgcmVwbHkKK3ZvaWQgc2VuZE1lc3NhZ2VU
b0RhZW1vbldhaXRpbmdGb3JSZXBseSh4cGNfY29ubmVjdGlvbl90IGNvbm5lY3Rpb24sIHVpbnQ4
X3QgbWVzc2FnZVR5cGUsIGNvbnN0IFZlY3Rvcjx1aW50OF90PiYgbWVzc2FnZSkKK3sKKyAgICBh
dXRvIGRpY3Rpb25hcnkgPSBjcmVhdGVNZXNzYWdlRGljdGlvbmFyeShtZXNzYWdlVHlwZSwgbWVz
c2FnZSk7CisKKyAgICBfX2Jsb2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgIHhwY19jb25uZWN0
aW9uX3NlbmRfbWVzc2FnZV93aXRoX3JlcGx5KGNvbm5lY3Rpb24sIGRpY3Rpb25hcnkuZ2V0KCks
IGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIF4oeHBjX29iamVjdF90IHJlcXVlc3QpIHsKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfSk7CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworfQorCitzdGF0aWMgdm9pZCBzZW5kQ29uZmlndXJhdGlvbldpdGhBdWRpdFRv
a2VuKHhwY19jb25uZWN0aW9uX3QgY29ubmVjdGlvbikKK3sKKyAgICBhdWRpdF90b2tlbl90IHRv
a2VuID0geyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwIH07CisgICAgbWFjaF9tc2dfdHlwZV9udW1i
ZXJfdCBhdWRpdFRva2VuQ291bnQgPSBUQVNLX0FVRElUX1RPS0VOX0NPVU5UOworICAgIGtlcm5f
cmV0dXJuX3QgcmVzdWx0ID0gdGFza19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfQVVESVRf
VE9LRU4sICh0YXNrX2luZm9fdCkoJnRva2VuKSwgJmF1ZGl0VG9rZW5Db3VudCk7CisgICAgaWYg
KHJlc3VsdCAhPSBLRVJOX1NVQ0NFU1MpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gU2VuZCBjb25maWd1cmF0aW9uIHdpdGgg
YXVkaXQgdG9rZW4KKyAgICB7CisgICAgICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVkTWVzc2Fn
ZSg0Mik7CisgICAgICAgIGVuY29kZWRNZXNzYWdlLmZpbGwoMCk7CisgICAgICAgIGVuY29kZWRN
ZXNzYWdlWzFdID0gMTsKKyAgICAgICAgZW5jb2RlZE1lc3NhZ2VbMl0gPSAzMjsKKyAgICAgICAg
bWVtY3B5KCZlbmNvZGVkTWVzc2FnZVsxMF0sICZ0b2tlbiwgc2l6ZW9mKHRva2VuKSk7CisgICAg
ICAgIHNlbmRNZXNzYWdlVG9EYWVtb24oY29ubmVjdGlvbiwgNiwgZW5jb2RlZE1lc3NhZ2UpOwor
ICAgIH0KK30KKworUmV0YWluUHRyPHhwY19jb25uZWN0aW9uX3Q+IGNyZWF0ZUFuZENvbmZpZ3Vy
ZUNvbm5lY3Rpb25Ub1NlcnZpY2UoY29uc3QgY2hhciogc2VydmljZU5hbWUpCit7CisgICAgYXV0
byBjb25uZWN0aW9uID0gYWRvcHROUyh4cGNfY29ubmVjdGlvbl9jcmVhdGVfbWFjaF9zZXJ2aWNl
KHNlcnZpY2VOYW1lLCBkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgpLCAwKSk7CisgICAgeHBjX2Nv
bm5lY3Rpb25fc2V0X2V2ZW50X2hhbmRsZXIoY29ubmVjdGlvbi5nZXQoKSwgXih4cGNfb2JqZWN0
X3QpIHsgfSk7CisgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUoY29ubmVjdGlvbi5nZXQoKSk7
CisgICAgc2VuZENvbmZpZ3VyYXRpb25XaXRoQXVkaXRUb2tlbihjb25uZWN0aW9uLmdldCgpKTsK
KworICAgIHJldHVybiBXVEZNb3ZlKGNvbm5lY3Rpb24pOworfQorCitzdGF0aWMgVmVjdG9yPHVp
bnQ4X3Q+IGVuY29kZVN0cmluZyhjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCit7CisgICAgQVNTRVJU
KG1lc3NhZ2UuaXM4Qml0KCkpOworICAgIGF1dG8gdXRmOCA9IG1lc3NhZ2UudXRmOCgpOworCisg
ICAgVmVjdG9yPHVpbnQ4X3Q+IHJlc3VsdCh1dGY4Lmxlbmd0aCgpICsgNSk7CisgICAgcmVzdWx0
WzBdID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odXRmOC5sZW5ndGgoKSk7CisgICAgcmVzdWx0WzFd
ID0gc3RhdGljX2Nhc3Q8dWludDhfdD4odXRmOC5sZW5ndGgoKSA+PiA4KTsKKyAgICByZXN1bHRb
Ml0gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih1dGY4Lmxlbmd0aCgpID4+IDE2KTsKKyAgICByZXN1
bHRbM10gPSBzdGF0aWNfY2FzdDx1aW50OF90Pih1dGY4Lmxlbmd0aCgpID4+IDI0KTsKKyAgICBy
ZXN1bHRbNF0gPSAweDAxOworCisgICAgYXV0byBkYXRhID0gdXRmOC5kYXRhKCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB1dGY4Lmxlbmd0aCgpOyArK2kpCisgICAgICAgIHJlc3VsdFs1
ICsgaV0gPSBkYXRhW2ldOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogLy8gRklYTUU6IFJl
LWVuYWJsZSB0aGlzIHRlc3Qgb24gTWFjIG9uY2Ugd2Via2l0Lm9yZy8yMzI4NTcgaXMgcmVzb2x2
ZWQuCiAjaWYgUExBVEZPUk0oTUFDKQogVEVTVChXZWJQdXNoRCwgRElTQUJMRURfQmFzaWNDb21t
dW5pY2F0aW9uKQpAQCAtMTk2LDQ0ICsyNzUsMjAgQEAgVEVTVChXZWJQdXNoRCwgQmFzaWNDb21t
dW5pY2F0aW9uKQogICAgIH0pOwogCiAgICAgeHBjX2Nvbm5lY3Rpb25fYWN0aXZhdGUoY29ubmVj
dGlvbi5nZXQoKSk7Ci0KLSAgICBhdWRpdF90b2tlbl90IHRva2VuID0geyAwLCAwLCAwLCAwLCAw
LCAwLCAwLCAwIH07Ci0gICAgbWFjaF9tc2dfdHlwZV9udW1iZXJfdCBhdWRpdFRva2VuQ291bnQg
PSBUQVNLX0FVRElUX1RPS0VOX0NPVU5UOwotICAgIGtlcm5fcmV0dXJuX3QgcmVzdWx0ID0gdGFz
a19pbmZvKG1hY2hfdGFza19zZWxmKCksIFRBU0tfQVVESVRfVE9LRU4sICh0YXNrX2luZm9fdCko
JnRva2VuKSwgJmF1ZGl0VG9rZW5Db3VudCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBLRVJOX1NVQ0NF
U1MpIHsKLSAgICAgICAgRVhQRUNUX1RSVUUoZmFsc2UpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgLy8gU2VuZCBjb25maWd1cmF0aW9uIHdpdGggYXVkaXQgdG9rZW4KLSAgICB7Ci0g
ICAgICAgIHN0ZDo6YXJyYXk8dWludDhfdCwgNDI+IGVuY29kZWRNZXNzYWdlOwotICAgICAgICBl
bmNvZGVkTWVzc2FnZS5maWxsKDApOwotICAgICAgICBlbmNvZGVkTWVzc2FnZVsxXSA9IDE7Ci0g
ICAgICAgIGVuY29kZWRNZXNzYWdlWzJdID0gMzI7Ci0gICAgICAgIG1lbWNweSgmZW5jb2RlZE1l
c3NhZ2VbMTBdLCAmdG9rZW4sIHNpemVvZih0b2tlbikpOwotICAgICAgICBhdXRvIGRpY3Rpb25h
cnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBudWxscHRyLCAwKSk7
Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgInBy
b3RvY29sIHZlcnNpb24iLCAxKTsKLSAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X3VpbnQ2NChk
aWN0aW9uYXJ5LmdldCgpLCAibWVzc2FnZSB0eXBlIiwgNik7Ci0gICAgICAgIHhwY19kaWN0aW9u
YXJ5X3NldF9kYXRhKGRpY3Rpb25hcnkuZ2V0KCksICJlbmNvZGVkIG1lc3NhZ2UiLCBlbmNvZGVk
TWVzc2FnZS5kYXRhKCksIGVuY29kZWRNZXNzYWdlLnNpemUoKSk7Ci0gICAgICAgIHhwY19jb25u
ZWN0aW9uX3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsK
LSAgICB9CisgICAgc2VuZENvbmZpZ3VyYXRpb25XaXRoQXVkaXRUb2tlbihjb25uZWN0aW9uLmdl
dCgpKTsKIAogICAgIC8vIEVuYWJsZSBkZWJ1ZyBtZXNzYWdlcywgYW5kIHdhaXQgZm9yIHRoZSBy
ZXN1bHRpbmcgZGVidWcgbWVzc2FnZQogICAgIHsKICAgICAgICAgYXV0byBkaWN0aW9uYXJ5ID0g
YWRvcHROUyh4cGNfZGljdGlvbmFyeV9jcmVhdGUobnVsbHB0ciwgbnVsbHB0ciwgMCkpOwotICAg
ICAgICBzdGQ6OmFycmF5PHVpbnQ4X3QsIDE+IGVuY29kZWRNZXNzYWdlIHsgMSB9OwotICAgICAg
ICB4cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksICJwcm90b2NvbCB2
ZXJzaW9uIiwgMSk7Ci0gICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF91aW50NjQoZGljdGlvbmFy
eS5nZXQoKSwgIm1lc3NhZ2UgdHlwZSIsIDUpOwotICAgICAgICB4cGNfZGljdGlvbmFyeV9zZXRf
ZGF0YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5jb2RlZCBtZXNzYWdlIiwgZW5jb2RlZE1lc3NhZ2Uu
ZGF0YSgpLCBlbmNvZGVkTWVzc2FnZS5zaXplKCkpOwotCi0gICAgICAgIHhwY19jb25uZWN0aW9u
X3NlbmRfbWVzc2FnZShjb25uZWN0aW9uLmdldCgpLCBkaWN0aW9uYXJ5LmdldCgpKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGVuY29kZWRNZXNzYWdlKDEpOworICAgICAgICBlbmNvZGVkTWVz
c2FnZVswXSA9IDE7CisgICAgICAgIHNlbmRNZXNzYWdlVG9EYWVtb24oY29ubmVjdGlvbi5nZXQo
KSwgNSwgZW5jb2RlZE1lc3NhZ2UpOwogICAgICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4o
JmRvbmUpOwogICAgIH0KIAogICAgIC8vIEVjaG8gYW5kIHdhaXQgZm9yIGEgcmVwbHkKICAgICBh
dXRvIGRpY3Rpb25hcnkgPSBhZG9wdE5TKHhwY19kaWN0aW9uYXJ5X2NyZWF0ZShudWxscHRyLCBu
dWxscHRyLCAwKSk7Ci0gICAgc3RkOjphcnJheTx1aW50OF90LCAxMD4gZW5jb2RlZFN0cmluZyB7
IDUsIDAsIDAsIDAsIDEsICdoJywgJ2UnLCAnbCcsICdsJywgJ28nIH07CisgICAgYXV0byBlbmNv
ZGVkU3RyaW5nID0gZW5jb2RlU3RyaW5nKCJoZWxsbyIpOwogICAgIHhwY19kaWN0aW9uYXJ5X3Nl
dF91aW50NjQoZGljdGlvbmFyeS5nZXQoKSwgInByb3RvY29sIHZlcnNpb24iLCAxKTsKICAgICB4
cGNfZGljdGlvbmFyeV9zZXRfdWludDY0KGRpY3Rpb25hcnkuZ2V0KCksICJtZXNzYWdlIHR5cGUi
LCAxKTsKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfZGF0YShkaWN0aW9uYXJ5LmdldCgpLCAiZW5j
b2RlZCBtZXNzYWdlIiwgZW5jb2RlZFN0cmluZy5kYXRhKCksIGVuY29kZWRTdHJpbmcuc2l6ZSgp
KTsKQEAgLTM0MSw2ICszOTYsMTQwIEBAIFRFU1QoV2ViUHVzaEQsIFBlcm1pc3Npb25NYW5hZ2Vt
ZW50KQogICAgIGNsZWFuVXBUZXN0V2ViUHVzaEQodGVtcERpcmVjdG9yeSk7CiB9CiAKK3N0YXRp
YyBjb25zdCBjaGFyKiBtYWluU1dCeXRlcyA9IFIiU1dSRVNPVVJDRSgKKzxzY3JpcHQ+CitmdW5j
dGlvbiBsb2cobXNnKQoreworICAgIHdpbmRvdy53ZWJraXQubWVzc2FnZUhhbmRsZXJzLnN3LnBv
c3RNZXNzYWdlKG1zZyk7Cit9CisKK2NvbnN0IGNoYW5uZWwgPSBuZXcgTWVzc2FnZUNoYW5uZWwo
KTsKK2NoYW5uZWwucG9ydDEub25tZXNzYWdlID0gKGV2ZW50KSA9PiBsb2coZXZlbnQuZGF0YSk7
CisKK25hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCcvc3cuanMnKS50aGVuKChyZWdp
c3RyYXRpb24pID0+IHsKKyAgICBpZiAocmVnaXN0cmF0aW9uLmFjdGl2ZSkgeworICAgICAgICBy
ZWdpc3RyYXRpb24uYWN0aXZlLnBvc3RNZXNzYWdlKHtwb3J0OiBjaGFubmVsLnBvcnQyfSwgW2No
YW5uZWwucG9ydDJdKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICB3b3JrZXIgPSByZWdp
c3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICB3b3JrZXIuYWRkRXZlbnRMaXN0ZW5lcignc3RhdGVj
aGFuZ2UnLCBmdW5jdGlvbigpIHsKKyAgICAgICAgaWYgKHdvcmtlci5zdGF0ZSA9PSAnYWN0aXZh
dGVkJykKKyAgICAgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7cG9ydDogY2hhbm5lbC5wb3J0
Mn0sIFtjaGFubmVsLnBvcnQyXSk7CisgICAgfSk7Cit9KS5jYXRjaChmdW5jdGlvbihlcnJvcikg
eworICAgIGxvZygiUmVnaXN0cmF0aW9uIGZhaWxlZCB3aXRoOiAiICsgZXJyb3IpOworfSk7Cis8
L3NjcmlwdD4KKylTV1JFU09VUkNFIjsKKworc3RhdGljIGNvbnN0IGNoYXIqIHNjcmlwdEJ5dGVz
ID0gUiJTV1JFU09VUkNFKAorbGV0IHBvcnQ7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoIm1lc3Nh
Z2UiLCAoZXZlbnQpID0+IHsKKyAgICBwb3J0ID0gZXZlbnQuZGF0YS5wb3J0OworICAgIHBvcnQu
cG9zdE1lc3NhZ2UoIlJlYWR5Iik7Cit9KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigicHVzaCIs
IChldmVudCkgPT4geworICAgIHRyeSB7CisgICAgICAgIGlmICghZXZlbnQuZGF0YSkgeworICAg
ICAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiUmVjZWl2ZWQ6IG51bGwgZGF0YSIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IHZhbHVlID0gZXZlbnQuZGF0
YS50ZXh0KCk7CisgICAgICAgIHBvcnQucG9zdE1lc3NhZ2UoIlJlY2VpdmVkOiAiICsgdmFsdWUp
OworICAgICAgICBpZiAodmFsdWUgIT0gJ1N3ZWV0IFBvdGF0b2VzJykKKyAgICAgICAgICAgIGV2
ZW50LndhaXRVbnRpbChQcm9taXNlLnJlamVjdCgnSSB3YW50IHN3ZWV0IHBvdGF0b2VzJykpOwor
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgcG9ydC5wb3N0TWVzc2FnZSgiR290IGV4Y2VwdGlv
biAiICsgZSk7CisgICAgfQorfSk7CispU1dSRVNPVVJDRSI7CisKK3N0YXRpYyB2b2lkIGNsZWFy
V2Vic2l0ZURhdGFTdG9yZShXS1dlYnNpdGVEYXRhU3RvcmUgKnN0b3JlKQoreworICAgIF9fYmxv
Y2sgYm9vbCBjbGVhcmVkU3RvcmUgPSBmYWxzZTsKKyAgICBbW1dLV2Vic2l0ZURhdGFTdG9yZSBk
ZWZhdWx0RGF0YVN0b3JlXSByZW1vdmVEYXRhT2ZUeXBlczpbV0tXZWJzaXRlRGF0YVN0b3JlIGFs
bFdlYnNpdGVEYXRhVHlwZXNdIG1vZGlmaWVkU2luY2U6W05TRGF0ZSBkaXN0YW50UGFzdF0gY29t
cGxldGlvbkhhbmRsZXI6XigpIHsKKyAgICAgICAgY2xlYXJlZFN0b3JlID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmNsZWFyZWRTdG9yZSk7Cit9CisKKy8v
IEZJWE1FOiBSZS1lbmFibGUgdGhpcyB0ZXN0IG9uIE1hYyBvbmNlIHdlYmtpdC5vcmcvMjMyODU3
IGlzIHJlc29sdmVkLgorI2lmIFBMQVRGT1JNKE1BQykKK1RFU1QoV2ViUHVzaEQsIERJU0FCTEVE
X0hhbmRsZUluamVjdGVkUHVzaCkKKyNlbHNlCitURVNUKFdlYlB1c2hELCBIYW5kbGVJbmplY3Rl
ZFB1c2gpCisjZW5kaWYKK3sKKyAgICBbV0tXZWJzaXRlRGF0YVN0b3JlIF9hbGxvd1dlYnNpdGVE
YXRhUmVjb3Jkc0ZvckFsbE9yaWdpbnNdOworCisgICAgTlNVUkwgKnRlbXBEaXJlY3RvcnkgPSBz
ZXRVcFRlc3RXZWJQdXNoRCgpOworCisgICAgYXV0byBkYXRhU3RvcmVDb25maWd1cmF0aW9uID0g
YWRvcHROUyhbX1dLV2Vic2l0ZURhdGFTdG9yZUNvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgZGF0
YVN0b3JlQ29uZmlndXJhdGlvbi5nZXQoKS53ZWJQdXNoTWFjaFNlcnZpY2VOYW1lID0gQCJvcmcu
d2Via2l0LndlYnB1c2h0ZXN0ZGFlbW9uLnNlcnZpY2UiOworICAgIGRhdGFTdG9yZUNvbmZpZ3Vy
YXRpb24uZ2V0KCkud2ViUHVzaERhZW1vblVzZXNNb2NrQnVuZGxlc0ZvclRlc3RpbmcgPSBZRVM7
CisgICAgYXV0byBkYXRhU3RvcmUgPSBhZG9wdE5TKFtbV0tXZWJzaXRlRGF0YVN0b3JlIGFsbG9j
XSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOmRhdGFTdG9yZUNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KworICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS1dlYlZpZXdDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53ZWJzaXRlRGF0YVN0
b3JlID0gZGF0YVN0b3JlLmdldCgpOworICAgIGNsZWFyV2Vic2l0ZURhdGFTdG9yZShbY29uZmln
dXJhdGlvbiB3ZWJzaXRlRGF0YVN0b3JlXSk7CisKKyAgICBbY29uZmlndXJhdGlvbi5nZXQoKS5w
cmVmZXJlbmNlcyBfc2V0Tm90aWZpY2F0aW9uc0VuYWJsZWQ6WUVTXTsKKyAgICBmb3IgKF9XS0V4
cGVyaW1lbnRhbEZlYXR1cmUgKmZlYXR1cmUgaW4gW1dLUHJlZmVyZW5jZXMgX2V4cGVyaW1lbnRh
bEZlYXR1cmVzXSkgeworICAgICAgICBpZiAoW2ZlYXR1cmUua2V5IGlzRXF1YWxUb1N0cmluZzpA
IkJ1aWx0SW5Ob3RpZmljYXRpb25zRW5hYmxlZCJdKQorICAgICAgICAgICAgW1tjb25maWd1cmF0
aW9uIHByZWZlcmVuY2VzXSBfc2V0RW5hYmxlZDpZRVMgZm9yRmVhdHVyZTpmZWF0dXJlXTsKKyAg
ICB9CisKKyAgICBhdXRvIG1lc3NhZ2VIYW5kbGVyID0gYWRvcHROUyhbW1Rlc3RNZXNzYWdlSGFu
ZGxlciBhbGxvY10gaW5pdF0pOworICAgIFtbY29uZmlndXJhdGlvbiB1c2VyQ29udGVudENvbnRy
b2xsZXJdIGFkZFNjcmlwdE1lc3NhZ2VIYW5kbGVyOm1lc3NhZ2VIYW5kbGVyLmdldCgpIG5hbWU6
QCJzdyJdOworICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7CisgICAgW21lc3NhZ2VIYW5k
bGVyIGFkZE1lc3NhZ2U6QCJSZWFkeSIgd2l0aEhhbmRsZXI6XnsKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgW21lc3NhZ2VIYW5kbGVyIGFkZE1lc3NhZ2U6QCJSZWNlaXZlZDog
SGVsbG8gV29ybGQiIHdpdGhIYW5kbGVyOl57CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1d
OworCisgICAgVGVzdFdlYktpdEFQSTo6SFRUUFNlcnZlciBzZXJ2ZXIoeworICAgICAgICB7ICIv
IiwgeyBtYWluU1dCeXRlcyB9IH0sCisgICAgICAgIHsgIi9zdy5qcyIsIHsgeyB7ICJDb250ZW50
LVR5cGUiLCAiYXBwbGljYXRpb24vamF2YXNjcmlwdCIgfSB9LCBzY3JpcHRCeXRlcyB9IH0KKyAg
ICB9LCBUZXN0V2ViS2l0QVBJOjpIVFRQU2VydmVyOjpQcm90b2NvbDo6SHR0cCk7CisKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQo
KV0pOworICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OnNlcnZlci5yZXF1ZXN0KCldOworCisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAg
ICAvLyBJbmplY3QgcHVzaCBtZXNzYWdlCisgICAgYXV0byBlbmNvZGVkTWVzc2FnZSA9IGVuY29k
ZVN0cmluZygiY29tLmFwcGxlLldlYktpdC5UZXN0V2ViS2l0QVBJIik7CisgICAgZW5jb2RlZE1l
c3NhZ2UuYXBwZW5kVmVjdG9yKGVuY29kZVN0cmluZyhzZXJ2ZXIucmVxdWVzdCgpLlVSTC5hYnNv
bHV0ZVN0cmluZykpOworICAgIGVuY29kZWRNZXNzYWdlLmFwcGVuZFZlY3RvcihlbmNvZGVTdHJp
bmcoIkhlbGxvIFdvcmxkIikpOworCisgICAgYXV0byB1dGlsaXR5Q29ubmVjdGlvbiA9IGNyZWF0
ZUFuZENvbmZpZ3VyZUNvbm5lY3Rpb25Ub1NlcnZpY2UoIm9yZy53ZWJraXQud2VicHVzaHRlc3Rk
YWVtb24uc2VydmljZSIpOworICAgIHNlbmRNZXNzYWdlVG9EYWVtb25XYWl0aW5nRm9yUmVwbHko
dXRpbGl0eUNvbm5lY3Rpb24uZ2V0KCksIDcsIGVuY29kZWRNZXNzYWdlKTsKKworICAgIC8vIEZl
dGNoIHB1c2ggbWVzc2FnZXMKKyAgICBfX2Jsb2NrIFJldGFpblB0cjxOU0FycmF5PE5TRGljdGlv
bmFyeSAqPj4gbWVzc2FnZXM7CisgICAgW2RhdGFTdG9yZSBfZ2V0UGVuZGluZ1B1c2hNZXNzYWdl
czpeKE5TQXJyYXk8TlNEaWN0aW9uYXJ5ICo+ICpyYXdNZXNzYWdlcykgeworICAgICAgICBtZXNz
YWdlcyA9IHJhd01lc3NhZ2VzOworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAg
IEVYUEVDVF9FUShbbWVzc2FnZXMgY291bnRdLCAxdSk7CisKKyAgICAvLyBIYW5kbGUgcHVzaCBt
ZXNzYWdlCisgICAgX19ibG9jayBib29sIHB1c2hNZXNzYWdlUHJvY2Vzc2VkID0gZmFsc2U7Cisg
ICAgW2RhdGFTdG9yZSBfcHJvY2Vzc1B1c2hNZXNzYWdlOlttZXNzYWdlcyBmaXJzdE9iamVjdF0g
Y29tcGxldGlvbkhhbmRsZXI6Xihib29sIHJlc3VsdCkgeworICAgICAgICBwdXNoTWVzc2FnZVBy
b2Nlc3NlZCA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZk
b25lKTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJnB1c2hNZXNzYWdlUHJvY2Vzc2Vk
KTsKKworICAgIGNsZWFuVXBUZXN0V2ViUHVzaEQodGVtcERpcmVjdG9yeSk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkKIAogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykgfHwgUExB
VEZPUk0oSU9TKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tX
ZWJWaWV3LmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaAppbmRl
eCBjMmI3MTE2ZTMwYjYuLjJjZTZlN2M5MGE1OCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3LmgKQEAgLTc4LDYgKzc4LDcgQEAKIAogQGludGVyZmFjZSBUZXN0TWVz
c2FnZUhhbmRsZXIgOiBOU09iamVjdCA8V0tTY3JpcHRNZXNzYWdlSGFuZGxlcj4KIC0gKHZvaWQp
YWRkTWVzc2FnZTooTlNTdHJpbmcgKiltZXNzYWdlIHdpdGhIYW5kbGVyOihkaXNwYXRjaF9ibG9j
a190KWhhbmRsZXI7CistICh2b2lkKXNldFdpbGRjYXJkTWVzc2FnZUhhbmRsZXI6KHZvaWQgKF4p
KE5TU3RyaW5nICopKWhhbmRsZXI7CiBAZW5kCiAKIEBpbnRlcmZhY2UgVGVzdFdLV2ViVmlldyA6
IFdLV2ViVmlldwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>