<?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>209928</bug_id>
          
          <creation_ts>2020-04-02 13:51:09 -0700</creation_ts>
          <short_desc>[iOS] AuxiliaryProcessProxy::sendWithAsyncReply() should prevent auxiliary process suspension while processing the IPC</short_desc>
          <delta_ts>2020-05-07 08:02:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=211421</see_also>
          <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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>ap</cc>
    
    <cc>beidson</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1637051</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-02 13:51:09 -0700</bug_when>
    <thetext>AuxiliaryProcessProxy::sendWithAsyncReply() should prevent auxiliary process suspension on iOS while processing the IPC. If the process is suspended either before or during the IPC, this could result in hangs. This is a speculative fix for the flaky timeouts we see on many tests on iOS only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637053</commentid>
    <comment_count>1</comment_count>
      <attachid>395297</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-02 13:55:24 -0700</bug_when>
    <thetext>Created attachment 395297
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637101</commentid>
    <comment_count>2</comment_count>
      <attachid>395297</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-02 15:30:19 -0700</bug_when>
    <thetext>Comment on attachment 395297
Patch

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

iOS-wk2 EWS seems angry. Lots of hangs, and this crashing backtrace, implying misuses of some C++ object:

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libsystem_kernel.dylib        	0x00007fff523bc33a __pthread_kill + 10
1   libsystem_pthread.dylib       	0x00007fff52465e60 pthread_kill + 430
2   libsystem_c.dylib             	0x00007fff5234ba5c abort + 120
3   libc++abi.dylib               	0x00007fff502497f8 abort_message + 231
4   libc++abi.dylib               	0x00007fff502499c7 demangling_terminate_handler() + 262
5   libobjc.A.dylib               	0x00007fff513fbd7c _objc_terminate() + 96
6   libc++abi.dylib               	0x00007fff50256e97 std::__terminate(void (*)()) + 8
7   libc++abi.dylib               	0x00007fff50256ae9 __cxa_rethrow + 99
8   libobjc.A.dylib               	0x00007fff513fbcb4 objc_exception_rethrow + 37
9   com.apple.CoreFoundation      	0x00007fff23bce0ea CFRunLoopRunSpecific + 570
10  com.apple.GeoServices         	0x00007fff384c0bb0 GSEventRunModal + 65
11  com.apple.UIKitCore           	0x00007fff48092d4d UIApplicationMain + 1621
12  org.webkit.WebKitTestRunnerApp	0x00000001022457cf main + 114
13  libdyld.dylib                 	0x00007fff5227ec25 start + 1

&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:87
&gt; +    m_quietBackgroundActivities.reset();

Is this call to reset() sufficient? I believe it will revoke all pointers to the QuietActivityCount, but it won&apos;t invoke QuietActivityCount::m_throttler.updateAssertionIfNeeded(), so it won&apos;t drop any extant assertion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637104</commentid>
    <comment_count>3</comment_count>
      <attachid>395297</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-02 15:34:08 -0700</bug_when>
    <thetext>Comment on attachment 395297
Patch

Will investigate failures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637111</commentid>
    <comment_count>4</comment_count>
      <attachid>395297</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-02 15:47:58 -0700</bug_when>
    <thetext>Comment on attachment 395297
Patch

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

&gt;&gt; Source/WebKit/UIProcess/ProcessThrottler.cpp:87
&gt;&gt; +    m_quietBackgroundActivities.reset();
&gt; 
&gt; Is this call to reset() sufficient? I believe it will revoke all pointers to the QuietActivityCount, but it won&apos;t invoke QuietActivityCount::m_throttler.updateAssertionIfNeeded(), so it won&apos;t drop any extant assertion.

I will do it because it is safer. That said, this is only called either when ProcessThrottler is destroyed or the assertion has been invalidated so it does not currently matter AFAICT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637125</commentid>
    <comment_count>5</comment_count>
      <attachid>395316</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-02 16:15:04 -0700</bug_when>
    <thetext>Created attachment 395316
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637364</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-04-03 08:28:43 -0700</bug_when>
    <thetext>I am working on figuring out why some of the tests are timing out. Looks like I can reproduce locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649776</commentid>
    <comment_count>7</comment_count>
      <attachid>398651</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 13:48:02 -0700</bug_when>
    <thetext>Created attachment 398651
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649777</commentid>
    <comment_count>8</comment_count>
      <attachid>398651</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-06 13:49:10 -0700</bug_when>
    <thetext>Comment on attachment 398651
WIP Patch

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

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.cpp:1181
&gt; +    sendWithAsyncReply(Messages::NetworkProcess::SetFirstPartyWebsiteDataRemovalModeForTesting(sessionID, mode), [completionHandler = WTFMove(completionHandler)]() mutable {
&gt;          completionHandler();
&gt;      });

the whole lambda can be replaced by WTFMove(completionHandler).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649780</commentid>
    <comment_count>9</comment_count>
      <attachid>398653</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 13:53:56 -0700</bug_when>
    <thetext>Created attachment 398653
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649783</commentid>
    <comment_count>10</comment_count>
      <attachid>398654</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 14:00:07 -0700</bug_when>
    <thetext>Created attachment 398654
WIP Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649833</commentid>
    <comment_count>11</comment_count>
      <attachid>398670</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 15:04:02 -0700</bug_when>
    <thetext>Created attachment 398670
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649847</commentid>
    <comment_count>12</comment_count>
      <attachid>398673</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 15:16:39 -0700</bug_when>
    <thetext>Created attachment 398673
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1649863</commentid>
    <comment_count>13</comment_count>
      <attachid>398676</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-06 15:48:01 -0700</bug_when>
    <thetext>Created attachment 398676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650011</commentid>
    <comment_count>14</comment_count>
      <attachid>398676</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-05-07 01:51:21 -0700</bug_when>
    <thetext>Comment on attachment 398676
Patch

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

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:155
&gt; +    if (asyncReplyInfo &amp;&amp; canSendMessage() &amp;&amp; shouldStartProcessThrottlerActivity == ShouldStartProcessThrottlerActivity::Yes) {

This is fine like this, but it seems that, in theory we should only do that when sending the messages, so for State::Running.
We would then need to take a similar assertion in AuxiliaryProcessProxy::didFinishLaunching.
With a helper routine, we would share the code between both.

&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:53
&gt; +    virtual ProcessThrottler&amp; throttler() = 0;

Do we need to have it public?

&gt; Source/WebKit/UIProcess/GPU/GPUProcessProxy.h:60
&gt; +    ProcessThrottler&amp; throttler() final { return m_throttler; }

Do we need to have it public?

&gt; Source/WebKit/UIProcess/Network/NetworkProcessProxy.h:196
&gt; +    ProcessThrottler&amp; throttler() final { return m_throttler; }

Do we need to have it public?

&gt; Source/WebKit/UIProcess/Plugins/PluginProcessProxy.h:92
&gt; +    ProcessThrottler&amp; throttler() final { return m_throttler; }

Do we need to have it public?

&gt; Source/WebKit/UIProcess/ProcessThrottler.h:68
&gt; +            if (!isQuietActivity()) {

We are losing some logging, this might be fine but just wondering whether we should add some logging at some of call sites to replace this logging.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650091</commentid>
    <comment_count>15</comment_count>
      <attachid>398676</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-07 07:39:20 -0700</bug_when>
    <thetext>Comment on attachment 398676
Patch

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

&gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.cpp:155
&gt;&gt; +    if (asyncReplyInfo &amp;&amp; canSendMessage() &amp;&amp; shouldStartProcessThrottlerActivity == ShouldStartProcessThrottlerActivity::Yes) {
&gt; 
&gt; This is fine like this, but it seems that, in theory we should only do that when sending the messages, so for State::Running.
&gt; We would then need to take a similar assertion in AuxiliaryProcessProxy::didFinishLaunching.
&gt; With a helper routine, we would share the code between both.

It does not hurt to start the activity before the process has finished launching and it decreases code complexity to do this only in one place. When the process has finished launching the process throttler will take the correct assertion based on currently running activities.

&gt;&gt; Source/WebKit/UIProcess/AuxiliaryProcessProxy.h:53
&gt;&gt; +    virtual ProcessThrottler&amp; throttler() = 0;
&gt; 
&gt; Do we need to have it public?

It was public in the subclasses. I will check but I assume it needs to the public.

&gt;&gt; Source/WebKit/UIProcess/ProcessThrottler.h:68
&gt;&gt; +            if (!isQuietActivity()) {
&gt; 
&gt; We are losing some logging, this might be fine but just wondering whether we should add some logging at some of call sites to replace this logging.

This logging would be too verbose for IPC in my opinion. I don’t think we want to log 2 lines for every IPC, or even one line. Note that if the starting of the activity does result in an assertion being taken, logging will happen at process throttler and process assertion level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650096</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-05-07 07:57:28 -0700</bug_when>
    <thetext>I have checked that throttler() is still used outside those classes and thus still needs to be public.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650097</commentid>
    <comment_count>17</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-07 08:01:35 -0700</bug_when>
    <thetext>Committed r261288: &lt;https://trac.webkit.org/changeset/261288&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 398676.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1650098</commentid>
    <comment_count>18</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-07 08:02:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/62976705&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395297</attachid>
            <date>2020-04-02 13:55:24 -0700</date>
            <delta_ts>2020-04-02 16:15:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209928-20200402135523.patch</filename>
            <type>text/plain</type>
            <size>29458</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU1MDcyNWJkOTBkMmRmY2Q2
ZDUwMTgyMWUzODI2NmU4MTljZmZkMGUuLjliZWMyZjNjNzI5MDZiOGY0MzFhMjk5NWM2ODgzZmIz
YjkxMDU3YjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDQtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9j
ZXNzIHN1c3BlbnNpb24gd2hpbGUgcHJvY2Vzc2luZyB0aGUgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9jZXNzIHN1c3Bl
bnNpb24KKyAgICAgICAgb24gaU9TIHdoaWxlIHByb2Nlc3NpbmcgdGhlIElQQy4gSWYgdGhlIHBy
b2Nlc3MgaXMgc3VzcGVuZGVkIGVpdGhlciBiZWZvcmUgb3IgZHVyaW5nCisgICAgICAgIHRoZSBJ
UEMsIHRoaXMgY291bGQgcmVzdWx0IGluIGhhbmdzLiBUaGlzIGlzIGEgc3BlY3VsYXRpdmUgZml4
IGZvciB0aGUgZmxha3kgdGltZW91dHMKKyAgICAgICAgd2Ugc2VlIG9uIG1hbnkgdGVzdHMgb24g
aU9TIG9ubHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFByb2Nlc3NU
aHJvdHRsZXI6OlF1aWV0QWN0aXZpdHkgY2xhc3Mgd2hpY2ggaXMgc2ltaWxhcgorICAgICAgICB0
byBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eSBidXQgZG9lcyBub3QgZG8gYW55IGxvZ2dpbmcg
YW5kIGlzIHZlcnkgZWZmaWNpZW50LgorICAgICAgICBTaW1pbGFybHkgdGhvdWdoLCB0aGUgVUlQ
cm9jZXNzIHdpbGwgaG9sZCBhIGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRpb24gYXMgbG9uZyBh
cworICAgICAgICBhbnlvbmUgaXMgaG9sZGluZyBzdWNoIFF1aWV0QWN0aXZpdHkuIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KCkKKyAgICAgICAgbm93IGdyYWJzIHN1
Y2ggUHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eSBhbmQgY2FwdHVyZXMgaXQgaW4gaXRz
IGxhbWJkYSBzbyBpdAorICAgICAgICBsaXZlcyB1bnRpbCB3ZSd2ZSByZWNlaXZlZCBhbiBJUEMg
cmVzcG9uc2UgZnJvbSB0aGUgYXV4aWxpYXJ5IHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblBy
b2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25JZk5lZWRl
ZFNsb3cpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRp
b25JZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eUNv
dW50OjpRdWlldEFjdGl2aXR5Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpRdWlldEFjdGl2aXR5Q291bnQ6OmluY3JlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NUaHJvdHRsZXI6OlF1aWV0QWN0aXZpdHlDb3VudDo6ZGVjcmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eUNvdW50Ojpjb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OlF1aWV0QWN0aXZpdHlDb3Vu
dDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpRdWlldEFjdGl2
aXR5OjpRdWlldEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
UXVpZXRBY3Rpdml0eTo6flF1aWV0QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
VGhyb3R0bGVyOjpzaG91bGRCZVJ1bm5hYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc1Rocm90dGxlcjo6cXVpZXRCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFj
dGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp0aHJvdHRsZXIp
OiBEZWxldGVkLgorCiAyMDIwLTA0LTAyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgQVBJOjpQYWdlQ29uZmlndXJhdGlvbiBtYXkgaGF2ZSBjb25mbGljdGlu
ZyBwcmVmZXJlbmNlIHZhbHVlcyBiZXR3ZWVuIFdlYlByZWZlcmVuY2VzIGFuZCBXZWJQcmVmZXJl
bmNlc1N0b3JlOjpWYWx1ZU1hcCBpbnN0YW5jZSB2YXJpYWJsZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmgKaW5kZXggMTJhOWM0ODExODM4YmZh
NzQ0YjFhN2UyNTMxOTUxYjUzNTY4NTczNC4uMWYzY2Y5NTE0NzU1MTY5OWMwMzU4MTFmZGEzOTJh
MjM4MDc5Y2MzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5
UHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmgKQEAgLTI4LDcgKzI4LDcgQEAKICNpbmNsdWRlICJDb25uZWN0aW9uLmgiCiAj
aW5jbHVkZSAiTWVzc2FnZVJlY2VpdmVyTWFwLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVy
LmgiCi0KKyNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Q
cm9jZXNzSWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRl
IDx3dGYvU3lzdGVtVHJhY2luZy5oPgpAQCAtMTMzLDYgKzEzMyw4IEBAIHByb3RlY3RlZDoKIAog
ICAgIHZpcnR1YWwgYm9vbCBzaG91bGRTZW5kUGVuZGluZ01lc3NhZ2UoY29uc3QgUGVuZGluZ01l
c3NhZ2UmKSB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIFByb2Nlc3NUaHJvdHRsZXIm
IHRocm90dGxlcigpID0gMDsKKwogcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgY29ubmVjdGlv
bldpbGxPcGVuKElQQzo6Q29ubmVjdGlvbiYpOwogICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzV2ls
bFNodXREb3duKElQQzo6Q29ubmVjdGlvbiYpID0gMDsKQEAgLTE3OCw3ICsxODAsNyBAQCB2b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZQogICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBJUEM6Om5leHRB
c3luY1JlcGx5SGFuZGxlcklEKCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKGxpc3RlbmVySUQpOwog
ICAgIGVuY29kZXItPmVuY29kZShtZXNzYWdlLmFyZ3VtZW50cygpKTsKLSAgICBzZW5kTWVzc2Fn
ZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywge3sgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFi
bGUgeworICAgIHNlbmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5xdWlldEJhY2tncm91bmRBY3Rpdml0eSgpXSAoSVBDOjpEZWNvZGVyKiBk
ZWNvZGVyKSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGRlY29kZXIgJiYgIWRlY29kZXItPmlzSW52
YWxpZCgpKQogICAgICAgICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCA5N2Y2NjcyYzIxZGU3MTIwNjdlYjU0MTAwNGVk
ZmE2MjhhODc5ZjA1Li42ZTAwNTQyMzliNGZiNmQ1MDhlMThkZjFiNTA2NmQwNTgwNDIwZjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC01
Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24o
V2ViUHJvY2Vzc1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vz
c0Nvbm5lY3Rpb25EZWxheWVkUmVwbHkmJik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJv
dHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRo
cm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQ
cm9jZXNzQXNzZXJ0aW9uKCk7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94
eS5oCmluZGV4IGFlZmM0NjBlZWYxZTMwYzNkMDA2YmE0Y2VhNjAxMDNjZTBhZTAwNGMuLjVjODQ5
NTM0NDlhYTdmZTRhOTJmZWZmNDhhZGJiNzNhYmQ5ZjEwYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xODgs
NyArMTg4LDcgQEAgcHVibGljOgogICAgIHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNz
YWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2Vz
V2hlbldhaXRpbmdGb3JTeW5jUmVwbHlEZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXJtaW5h
dGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29ya2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVu
dGlmaWVyKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1f
dGhyb3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsK
IAogICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgpIHsgcmV0dXJuIG1fcHJvY2Vzc1Bv
b2w7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmNwcAppbmRleCBjNGJlMTY2YWY5ZGZiMTRiZWYzNjRmOWRkNzhjNzQ5MWRh
YjBmOTUyLi43ZDlkOWIyODZkNGU5NmU5MzE2MTBjYzZmNGNiYjBhNDY3MGUyYjA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJv
eHkuY3BwCkBAIC02Miw3ICs2Miw4IEBAIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdpblBy
b2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5QCiB9CiAKIFBs
dWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2Vy
KiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBs
dWdpblByb2Nlc3NBdHRyaWJ1dGVzLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pCi0gICAg
OiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdpblByb2Nlc3NNYW5hZ2VyKQorICAgIDogbV90
aHJvdHRsZXIoKnRoaXMsIGZhbHNlKQorICAgICwgbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVn
aW5Qcm9jZXNzTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMocGx1Z2lu
UHJvY2Vzc0F0dHJpYnV0ZXMpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NUb2tlbihwbHVnaW5Qcm9j
ZXNzVG9rZW4pCiAgICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVzdHMoMCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5o
CmluZGV4IGFmMjIzZGJkOTU3ZDE4NDM5ODg5ZmRiY2YyZDk1ZmY3MmU4Y2QwOGUuLmZlZWJhZmY1
MGFhYTI5NjU5NGU1MTZlODU0MWIyYmQ2MzMwOWZhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaApAQCAtMzMsNiArMzMs
NyBAQAogI2luY2x1ZGUgIlBsdWdpblByb2Nlc3MuaCIKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNz
QXR0cmlidXRlcy5oIgogI2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgorI2luY2x1ZGUgIlBy
b2Nlc3NUaHJvdHRsZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHlNZXNzYWdl
c1JlcGxpZXMuaCIKICNpbmNsdWRlIDx3dGYvRGVxdWUuaD4KIApAQCAtNjEsNyArNjIsNyBAQCBp
bnQgcGx1Z2luUHJvY2Vzc0xhdGVuY3lRT1MoKTsKIGludCBwbHVnaW5Qcm9jZXNzVGhyb3VnaHB1
dFFPUygpOwogI2VuZGlmCiAKLWNsYXNzIFBsdWdpblByb2Nlc3NQcm94eSBmaW5hbCA6IHB1Ymxp
YyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVn
aW5Qcm9jZXNzUHJveHk+IHsKK2NsYXNzIFBsdWdpblByb2Nlc3NQcm94eSBmaW5hbCA6IHB1Ymxp
YyBBdXhpbGlhcnlQcm9jZXNzUHJveHksIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxQbHVn
aW5Qcm9jZXNzUHJveHk+LCBwcml2YXRlIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQgewogcHVibGlj
OgogICAgIHN0YXRpYyBSZWY8UGx1Z2luUHJvY2Vzc1Byb3h5PiBjcmVhdGUoUGx1Z2luUHJvY2Vz
c01hbmFnZXIqLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYsIHVpbnQ2NF90IHBsdWdp
blByb2Nlc3NUb2tlbik7CiAgICAgflBsdWdpblByb2Nlc3NQcm94eSgpOwpAQCAtODcsNiArODgs
OCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIGJvb2wgc2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBs
dWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiByZXN1bHQpOwogI2VuZGlmCiAKKyAgICBQcm9j
ZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQor
CiBwcml2YXRlOgogICAgIFBsdWdpblByb2Nlc3NQcm94eShQbHVnaW5Qcm9jZXNzTWFuYWdlcios
IGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rv
a2VuKTsKIApAQCAtOTksNiArMTAyLDExIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHBsdWdpblBy
b2Nlc3NDcmFzaGVkT3JGYWlsZWRUb0xhdW5jaCgpOwogCisgICAgLy8gUHJvY2Vzc1Rocm90dGxl
ckNsaWVudAorICAgIHZvaWQgc2VuZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5l
bnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWwgeyB9CisgICAgdm9pZCBzZW5k
UHJvY2Vzc0RpZFJlc3VtZSgpIGZpbmFsIHsgfQorICAgIHZvaWQgZGlkU2V0QXNzZXJ0aW9uU3Rh
dGUoQXNzZXJ0aW9uU3RhdGUpIGZpbmFsIHsgfQorCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpD
bGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6
RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6
Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
Jikgb3ZlcnJpZGU7CkBAIC0xMzcsNiArMTQ1LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxh
dGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzJiBwYXJhbWV0ZXJzKTsKIAorICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CisK
ICAgICAvLyBUaGUgcGx1Zy1pbiBob3N0IHByb2Nlc3MgbWFuYWdlci4KICAgICBQbHVnaW5Qcm9j
ZXNzTWFuYWdlciogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcAppbmRleCA2OTBiMjQxNTUxOWRjNmEyNjNkZWU5
YmVmOGJlNmRiNzEwZTgzN2Y4Li42MWQyMDM0N2U4ODRiZmRhMmU2NGVkZWMzYTZmZjI1ZmIzNTU3
ZjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcApA
QCAtNDMsNiArNDMsNyBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVQcmVwYXJlVG9TdXNwZW5k
UmVxdWVzdElEKCkKIFByb2Nlc3NUaHJvdHRsZXI6OlByb2Nlc3NUaHJvdHRsZXIoUHJvY2Vzc1Ro
cm90dGxlckNsaWVudCYgcHJvY2VzcywgYm9vbCBzaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0
aW9uKQogICAgIDogbV9wcm9jZXNzKHByb2Nlc3MpCiAgICAgLCBtX3ByZXBhcmVUb1N1c3BlbmRU
aW1lb3V0VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmUHJvY2Vzc1Rocm90dGxlcjo6cHJl
cGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lckZpcmVkKQorICAgICwgbV9xdWlldEJhY2tncm91bmRB
Y3Rpdml0aWVzKCp0aGlzKQogICAgICwgbV9zaG91bGRUYWtlVUlCYWNrZ3JvdW5kQXNzZXJ0aW9u
KHNob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb24pCiB7CiB9CkBAIC04Myw2ICs4NCw3IEBA
IHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMoKQogICAgICAg
ICAoKm1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKICAgICB3
aGlsZSAoIW1fYmFja2dyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQogICAgICAgICAoKm1fYmFj
a2dyb3VuZEFjdGl2aXRpZXMuYmVnaW4oKSktPmludmFsaWRhdGUoKTsKKyAgICBtX3F1aWV0QmFj
a2dyb3VuZEFjdGl2aXRpZXMucmVzZXQoKTsKICAgICBQUk9DRVNTVEhST1RUTEVSX1JFTEVBU0Vf
TE9HKCJpbnZhbGlkYXRlQWxsQWN0aXZpdGllczogRU5EIik7CiB9CiAgICAgCkBAIC05MCw3ICs5
Miw3IEBAIEFzc2VydGlvblN0YXRlIFByb2Nlc3NUaHJvdHRsZXI6OmV4cGVjdGVkQXNzZXJ0aW9u
U3RhdGUoKQogewogICAgIGlmICghbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6Rm9yZWdyb3VuZDsKLSAgICBpZiAoIW1fYmFj
a2dyb3VuZEFjdGl2aXRpZXMuaXNFbXB0eSgpKQorICAgIGlmICghbV9iYWNrZ3JvdW5kQWN0aXZp
dGllcy5pc0VtcHR5KCkgfHwgbV9xdWlldEJhY2tncm91bmRBY3Rpdml0aWVzLmNvdW50KCkpCiAg
ICAgICAgIHJldHVybiBBc3NlcnRpb25TdGF0ZTo6QmFja2dyb3VuZDsKICAgICByZXR1cm4gQXNz
ZXJ0aW9uU3RhdGU6OlN1c3BlbmRlZDsKIH0KQEAgLTEwNiwxNiArMTA4LDE0IEBAIHZvaWQgUHJv
Y2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3U3RhdGUp
CiAgICAgaWYgKG1fYXNzZXJ0aW9uLT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAgICByZXR1
cm47CiAKLSAgICBQUk9DRVNTVEhST1RUTEVSX1JFTEVBU0VfTE9HKCJzZXRBc3NlcnRpb25TdGF0
ZTogVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZvcmVncm91bmRBY3Rp
dml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG5ld1N0YXRlLCBtX2ZvcmVn
cm91bmRBY3Rpdml0aWVzLnNpemUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkpOwor
ICAgIFBST0NFU1NUSFJPVFRMRVJfUkVMRUFTRV9MT0coInNldEFzc2VydGlvblN0YXRlOiBVcGRh
dGluZyBwcm9jZXNzIGFzc2VydGlvbiBzdGF0ZSB0byAldSAoZm9yZWdyb3VuZEFjdGl2aXRpZXM6
ICV1LCBiYWNrZ3JvdW5kQWN0aXZpdGllczogJXUsIHF1aWV0QmFja2dyb3VuZEFjdGl2aXRpZXM6
ICUiIFBSSXU2NCAiKSIsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSwg
bV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCksIG1fcXVpZXRCYWNrZ3JvdW5kQWN0aXZpdGll
cy5jb3VudCgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0U3RhdGUobmV3U3RhdGUpOwogICAgIG1f
cHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShuZXdTdGF0ZSk7CiB9CiAgICAgCi12b2lkIFBy
b2Nlc3NUaHJvdHRsZXI6OnVwZGF0ZUFzc2VydGlvbklmTmVlZGVkKCkKK3ZvaWQgUHJvY2Vzc1Ro
cm90dGxlcjo6dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWRTbG93KCkKIHsKLSAgICBpZiAoIW1fYXNz
ZXJ0aW9uKQotICAgICAgICByZXR1cm47Ci0KKyAgICBBU1NFUlQobV9hc3NlcnRpb24gJiYgbV9h
c3NlcnRpb24tPnN0YXRlKCkgPT0gZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpKTsKICAgICBpZiAo
c2hvdWxkQmVSdW5uYWJsZSgpKSB7CiAgICAgICAgIGlmIChtX2Fzc2VydGlvbi0+c3RhdGUoKSA9
PSBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkIHx8IG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJ
RCkgewogICAgICAgICAgICAgaWYgKG1fYXNzZXJ0aW9uLT5zdGF0ZSgpID09IEFzc2VydGlvblN0
YXRlOjpTdXNwZW5kZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmgKaW5kZXggMTM2MjRlMTU1YzZmMDc0NGVlYzE5MWFmMTYzZDA0MmJlYmFlMjI3MS4uYzI0YzBj
MmYyM2U2NjliNDNkYzYzNmI5OGExNjFkZGY3ZDRhOWIzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtOTMsMjIgKzkzLDgwIEBAIHB1YmxpYzoKICAg
ICAgICAgQVNDSUlMaXRlcmFsIG1fbmFtZTsKICAgICB9OwogCisgICAgY2xhc3MgUXVpZXRBY3Rp
dml0eUNvdW50IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFF1aWV0QWN0aXZpdHlDb3VudD4gewor
ICAgIHB1YmxpYzoKKyAgICAgICAgUXVpZXRBY3Rpdml0eUNvdW50KFByb2Nlc3NUaHJvdHRsZXIm
IHRocm90dGxlcikKKyAgICAgICAgICAgIDogbV90aHJvdHRsZXIodGhyb3R0bGVyKQorICAgICAg
ICB7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIGluY3JlbWVudCgpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisgICAgICAgICAgICArK21fY291
bnQ7CisgICAgICAgICAgICBtX3Rocm90dGxlci51cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOwor
ICAgICAgICB9CisKKyAgICAgICAgdm9pZCBkZWNyZW1lbnQoKQorICAgICAgICB7CisgICAgICAg
ICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY291
bnQpOworICAgICAgICAgICAgLS1tX2NvdW50OworICAgICAgICAgICAgbV90aHJvdHRsZXIudXBk
YXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHVpbnQ2NF90IGNv
dW50KCkgY29uc3QgeyByZXR1cm4gbV9jb3VudDsgfQorCisgICAgICAgIHZvaWQgcmVzZXQoKQor
ICAgICAgICB7CisgICAgICAgICAgICBtX2NvdW50ID0gMDsKKyAgICAgICAgICAgIHdlYWtQdHJG
YWN0b3J5KCkucmV2b2tlQWxsKCk7CisgICAgICAgIH0KKworICAgIHByaXZhdGU6CisgICAgICAg
IHVpbnQ2NF90IG1fY291bnQgeyAwIH07CisgICAgICAgIFByb2Nlc3NUaHJvdHRsZXImIG1fdGhy
b3R0bGVyOworICAgIH07CisKKyAgICBjbGFzcyBRdWlldEFjdGl2aXR5IHsKKyAgICAgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CisgICAgcHVibGljOgorICAgICAgICBRdWlldEFjdGl2aXR5
KFF1aWV0QWN0aXZpdHlDb3VudCYgYWN0aXZpdHlDb3VudCkKKyAgICAgICAgICAgIDogbV9hY3Rp
dml0eUNvdW50KG1ha2VXZWFrUHRyKGFjdGl2aXR5Q291bnQpKQorICAgICAgICB7CisgICAgICAg
ICAgICBhY3Rpdml0eUNvdW50LmluY3JlbWVudCgpOworICAgICAgICB9CisKKyAgICAgICAgflF1
aWV0QWN0aXZpdHkoKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAobV9hY3Rpdml0eUNvdW50
KQorICAgICAgICAgICAgICAgIG1fYWN0aXZpdHlDb3VudC0+ZGVjcmVtZW50KCk7CisgICAgICAg
IH0KKworICAgIHByaXZhdGU6CisgICAgICAgIFdlYWtQdHI8UXVpZXRBY3Rpdml0eUNvdW50PiBt
X2FjdGl2aXR5Q291bnQ7CisgICAgfTsKKwogICAgIHVzaW5nIEZvcmVncm91bmRBY3Rpdml0eSA9
IEFjdGl2aXR5PEFjdGl2aXR5VHlwZTo6Rm9yZWdyb3VuZD47CiAgICAgVW5pcXVlUmVmPEZvcmVn
cm91bmRBY3Rpdml0eT4gZm9yZWdyb3VuZEFjdGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKTsKIAog
ICAgIHVzaW5nIEJhY2tncm91bmRBY3Rpdml0eSA9IEFjdGl2aXR5PEFjdGl2aXR5VHlwZTo6QmFj
a2dyb3VuZD47CiAgICAgVW5pcXVlUmVmPEJhY2tncm91bmRBY3Rpdml0eT4gYmFja2dyb3VuZEFj
dGl2aXR5KEFTQ0lJTGl0ZXJhbCBuYW1lKTsKIAorICAgIC8vIFNhbWUgYXMgYmFja2dyb3VuZEFj
dGl2aXR5KCkgYnV0IHdpdGhvdXQgYW55IGxvZ2dpbmcgYW5kIGhpZ2hseSBlZmZpY2llbnQgKGZv
ciB1c2UgaW4gcGVyZm9ybWFuY2Ugc2Vuc2l0aXZlIGNvZGUpLgorICAgIFVuaXF1ZVJlZjxRdWll
dEFjdGl2aXR5PiBxdWlldEJhY2tncm91bmRBY3Rpdml0eSgpOworCiAgICAgdXNpbmcgQWN0aXZp
dHlWYXJpYW50ID0gVmFyaWFudDxzdGQ6Om51bGxwdHJfdCwgVW5pcXVlUmVmPEJhY2tncm91bmRB
Y3Rpdml0eT4sIFVuaXF1ZVJlZjxGb3JlZ3JvdW5kQWN0aXZpdHk+PjsKICAgICBzdGF0aWMgYm9v
bCBpc1ZhbGlkQmFja2dyb3VuZEFjdGl2aXR5KGNvbnN0IEFjdGl2aXR5VmFyaWFudCYpOwogICAg
IHN0YXRpYyBib29sIGlzVmFsaWRGb3JlZ3JvdW5kQWN0aXZpdHkoY29uc3QgQWN0aXZpdHlWYXJp
YW50Jik7CiAgICAgCiAgICAgdm9pZCBkaWRDb25uZWN0VG9Qcm9jZXNzKFByb2Nlc3NJRCk7Ci0g
ICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3QgeyByZXR1cm4gbV9mb3JlZ3JvdW5kQWN0
aXZpdGllcy5zaXplKCkgfHwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCk7IH0KKyAgICBi
b29sIHNob3VsZEJlUnVubmFibGUoKSBjb25zdCB7IHJldHVybiBtX2ZvcmVncm91bmRBY3Rpdml0
aWVzLnNpemUoKSB8fCBtX2JhY2tncm91bmRBY3Rpdml0aWVzLnNpemUoKSB8fCBtX3F1aWV0QmFj
a2dyb3VuZEFjdGl2aXRpZXMuY291bnQoKTsgfQogCiBwcml2YXRlOgogICAgIEFzc2VydGlvblN0
YXRlIGV4cGVjdGVkQXNzZXJ0aW9uU3RhdGUoKTsKICAgICB2b2lkIHVwZGF0ZUFzc2VydGlvbklm
TmVlZGVkKCk7CisgICAgdm9pZCB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZFNsb3coKTsKICAgICB2
b2lkIHVwZGF0ZUFzc2VydGlvblN0YXRlTm93KCk7CiAgICAgdm9pZCBzZXRBc3NlcnRpb25TdGF0
ZShBc3NlcnRpb25TdGF0ZSk7CiAgICAgdm9pZCBwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVy
RmlyZWQoKTsKQEAgLTEzMiw2ICsxOTAsNyBAQCBwcml2YXRlOgogICAgIFJ1bkxvb3A6OlRpbWVy
PFByb2Nlc3NUaHJvdHRsZXI+IG1fcHJlcGFyZVRvU3VzcGVuZFRpbWVvdXRUaW1lcjsKICAgICBI
YXNoU2V0PEZvcmVncm91bmRBY3Rpdml0eSo+IG1fZm9yZWdyb3VuZEFjdGl2aXRpZXM7CiAgICAg
SGFzaFNldDxCYWNrZ3JvdW5kQWN0aXZpdHkqPiBtX2JhY2tncm91bmRBY3Rpdml0aWVzOworICAg
IFF1aWV0QWN0aXZpdHlDb3VudCBtX3F1aWV0QmFja2dyb3VuZEFjdGl2aXRpZXM7CiAgICAgT3B0
aW9uYWw8dWludDY0X3Q+IG1fcGVuZGluZ1JlcXVlc3RUb1N1c3BlbmRJRDsKICAgICBib29sIG1f
c2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbjsKIH07CkBAIC0xNDYsNiArMjA1LDE5IEBA
IGlubGluZSBhdXRvIFByb2Nlc3NUaHJvdHRsZXI6OmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxp
dGVyYWwgbmFtZSkgLT4gVW5pcXVlUmVmCiAgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8QmFja2dy
b3VuZEFjdGl2aXR5PigqdGhpcywgbmFtZSk7CiB9CiAKK2lubGluZSBhdXRvIFByb2Nlc3NUaHJv
dHRsZXI6OnF1aWV0QmFja2dyb3VuZEFjdGl2aXR5KCkgLT4gVW5pcXVlUmVmPFF1aWV0QWN0aXZp
dHk+Cit7CisgICAgcmV0dXJuIG1ha2VVbmlxdWVSZWY8UXVpZXRBY3Rpdml0eT4obV9xdWlldEJh
Y2tncm91bmRBY3Rpdml0aWVzKTsKK30KKworaW5saW5lIHZvaWQgUHJvY2Vzc1Rocm90dGxlcjo6
dXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKQoreworICAgIGlmICghbV9hc3NlcnRpb24gfHwgbV9h
c3NlcnRpb24tPnN0YXRlKCkgPT0gZXhwZWN0ZWRBc3NlcnRpb25TdGF0ZSgpKQorICAgICAgICBy
ZXR1cm47CisKKyAgICB1cGRhdGVBc3NlcnRpb25JZk5lZWRlZFNsb3coKTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV2ViS2l0CiAKICNlbmRpZiAvLyBQcm9jZXNzVGhyb3R0bGVyX2gKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCmlu
ZGV4IGFlNTZlNTMzYTYwYjI3Zjc5Y2MxYWUzZTc2NmFjODE3NDlhN2QxNzkuLmMwMDdkZmE4NmRh
YjUxMDNmY2JkZTc0ZWRkYzBjODRmYTZjZTVhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBA
QCBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6On5XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoKQog
ewogICAgIGlmIChtX2JhY2tGb3J3YXJkSXRlbUlEICYmICFtX3N1c3BlbmRlZFBhZ2UpIHsKICAg
ICAgICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKLSAgICAgICAgcHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZSht
X2JhY2tGb3J3YXJkSXRlbUlEKSwgW2FjdGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIkNsZWFyaW5nIGJhY2svZm9yd2FyZCBjYWNoZSBlbnRyeSJfcyldIHsg
fSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFtdIHsgfSk7CiAgICAg
fQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclBy
b3h5LmNwcAppbmRleCBkYzJjZDY5NjM1MTI4MTRjYmVkYjEwOGZiYjVkNDMyY2QyNmRhNWVkLi5j
NTYwMDdjMzI2MzVlNWE1OWFkYzNjOWIwMzkwYmYzMjdmYzQwNjk4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEwMiw3ICsx
MDIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxl
bWVudCgpCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tp
ZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxTdHJpbmc+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0
bmFtZXNXaXRoQ29va2llcyJfcyldKFZlY3RvcjxTdHJpbmc+JiYgaG9zdG5hbWVzKSBtdXRhYmxl
IHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFj
a0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0oVmVjdG9yPFN0cmluZz4mJiBo
b3N0bmFtZXMpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9z
dG5hbWVzKSk7CiAgICAgfSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAgdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQog
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUo
c2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSJfcyldKCkgbXV0
YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTEyOCw3ICsxMjgsNyBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgQ29va2llJgogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRp
bWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lv
bklELCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSJf
cyldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShz
ZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsK
IH0KQEAgLTEzNiw3ICsxMzYsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbgogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8Q29va2llPiYgY29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNz
UG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Np
b25JRCwgY29va2llcyksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyJfcyldKCkgbXV0YWJsZSB7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWVzKSwgW2NhbGxiYWNrRnVuY3Rp
b24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xNDQsNyArMTQ0LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8Q28KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNv
bnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxi
YWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdv
cmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdl
clByb3h5OjpzZXRDb29raWVzIl9zKV0oKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMo
c2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTUyLDcgKzE1Miw3IEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVmVjdG9yPENvCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2ll
cyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJv
Y2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29y
a1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpH
ZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyJfcyld
KFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29r
aWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKICAgICB9KTsKIH0KQEAgLTE2MCw3ICsxNjAs
NyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBVUkwmIHVybCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwpLCBbY2Fs
bGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0
d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldENvb2tpZXMiX3MpXShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFi
bGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVz
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsK
ICAgICB9KTsKIH0KQEAgLTIzMiw3ICsyMzIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZQog
I2VuZGlmCiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3Vy
ZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBv
bGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0
aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSJfcyldKCkgbXV0
YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMjQwLDcgKzI0MCw3IEBA
IHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBB
TDo6U2Vzc2lvbklELCBIVFRQQ29va2llCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVu
Y3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5Il9zKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBw
b2xpY3kpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBb
Y2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildKEhUVFBDb29raWVB
Y2NlcHRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihw
b2xpY3kpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggOGQyODM4NWQ1ODU1MzBlODUwMmI0ZmZhYzMwYWQ1NjU0N2M0M2M2Ni4u
ZDMwNGRiZWYzMzczMmYwNjhhNjk1ODI5MTg3NjRkZmEwMTcxOGJjNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC0xMDk3LDEwICsxMDk3LDkgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQo
KSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9H
X0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBX
ZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0
aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBj
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0
Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRh
KGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBt
dXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0o
dGhpcyk7CiAjZW5kaWYKQEAgLTExMTQsMTAgKzExMTMsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2VicwogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0
aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6
ZGVsZXRlV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dp
bmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMg
dGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMg
ZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0
YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShkYXRhVHlwZXMs
IG1vZGlmaWVkU2luY2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7
CiAjZW5kaWYKQEAgLTExMzEsMTAgKzExMjksOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aQog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25J
RCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VM
b2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5
IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNz
IGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAK
LSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rp
dml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTU0MSw3ICsxNTM4
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24o
Y29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb20KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFj
dGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNPcmln
aW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3RpdmVQYWdlc09yaWdpbnNG
b3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVS
TCYgdXJsKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1By
b3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCAz
N2YzMTMxOTE3MDc5MjFiYzA1Mjc0OGIzYmRkNTk5ZGNkYzhhZTVkLi4wZDk0NmU0NTlhOTQ0YzM1
YmQ3NjY4OTdiYzAwMGNkOTJjYmYxMDdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaApAQCAtMjQwLDcgKzI0MCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SXNIb2xkaW5nTG9ja2VkRmlsZXMoYm9vbCk7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJv
dHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRo
cm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAKICAgICB2b2lkIGlzUmVz
cG9uc2l2ZShDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2
ZSk+JiYpOwogICAgIHZvaWQgaXNSZXNwb25zaXZlV2l0aExhenlTdG9wKCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395316</attachid>
            <date>2020-04-02 16:15:04 -0700</date>
            <delta_ts>2020-05-06 13:48:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209928-20200402161503.patch</filename>
            <type>text/plain</type>
            <size>28628</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5NDIxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGFhZTY3ZTI5YWIwNWZkNmE4
M2IyMGIyMjRkZDBlYTQ3MTg1YWMyYWYuLmU3MWFiNzUyZDA1YTNkNzZlZDYwZjIzNTk5Y2FlYzgx
YmYwNTkzMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNjYgQEAKKzIwMjAtMDQtMDIgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9j
ZXNzIHN1c3BlbnNpb24gd2hpbGUgcHJvY2Vzc2luZyB0aGUgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9jZXNzIHN1c3Bl
bnNpb24KKyAgICAgICAgb24gaU9TIHdoaWxlIHByb2Nlc3NpbmcgdGhlIElQQy4gSWYgdGhlIHBy
b2Nlc3MgaXMgc3VzcGVuZGVkIGVpdGhlciBiZWZvcmUgb3IgZHVyaW5nCisgICAgICAgIHRoZSBJ
UEMsIHRoaXMgY291bGQgcmVzdWx0IGluIGhhbmdzLiBUaGlzIGlzIGEgc3BlY3VsYXRpdmUgZml4
IGZvciB0aGUgZmxha3kgdGltZW91dHMKKyAgICAgICAgd2Ugc2VlIG9uIG1hbnkgdGVzdHMgb24g
aU9TIG9ubHkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgbmV3IFByb2Nlc3NU
aHJvdHRsZXI6OlF1aWV0QWN0aXZpdHkgY2xhc3Mgd2hpY2ggaXMgc2ltaWxhcgorICAgICAgICB0
byBQcm9jZXNzVGhyb3R0bGVyOjpBY3Rpdml0eSBidXQgZG9lcyBub3QgZG8gYW55IGxvZ2dpbmcg
YW5kIGlzIHZlcnkgZWZmaWNpZW50LgorICAgICAgICBTaW1pbGFybHkgdGhvdWdoLCB0aGUgVUlQ
cm9jZXNzIHdpbGwgaG9sZCBhIGJhY2tncm91bmQgcHJvY2VzcyBhc3NlcnRpb24gYXMgbG9uZyBh
cworICAgICAgICBhbnlvbmUgaXMgaG9sZGluZyBzdWNoIFF1aWV0QWN0aXZpdHkuIEF1eGlsaWFy
eVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KCkKKyAgICAgICAgbm93IGdyYWJzIHN1
Y2ggUHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eSBhbmQgY2FwdHVyZXMgaXQgaW4gaXRz
IGxhbWJkYSBzbyBpdAorICAgICAgICBsaXZlcyB1bnRpbCB3ZSd2ZSByZWNlaXZlZCBhbiBJUEMg
cmVzcG9uc2UgZnJvbSB0aGUgYXV4aWxpYXJ5IHByb2Nlc3MuCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OkF1eGlsaWFyeVBy
b2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvR1BV
L0dQVVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNz
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblBy
b2Nlc3NQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1By
b3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpQcm9jZXNzVGhyb3R0bGVyKToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6aW52YWxpZGF0ZUFsbEFjdGl2aXRpZXMpOgorICAg
ICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpleHBlY3RlZEFzc2VydGlvblN0YXRlKToK
KyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3RhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25JZk5lZWRl
ZFNsb3cpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRp
b25JZk5lZWRlZCk6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eUNv
dW50OjpRdWlldEFjdGl2aXR5Q291bnQpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpRdWlldEFjdGl2aXR5Q291bnQ6OmluY3JlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBy
b2Nlc3NUaHJvdHRsZXI6OlF1aWV0QWN0aXZpdHlDb3VudDo6ZGVjcmVtZW50KToKKyAgICAgICAg
KFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6UXVpZXRBY3Rpdml0eUNvdW50Ojpjb3VudCBjb25z
dCk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OlF1aWV0QWN0aXZpdHlDb3Vu
dDo6cmVzZXQpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0bGVyOjpRdWlldEFjdGl2
aXR5OjpRdWlldEFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6UHJvY2Vzc1Rocm90dGxlcjo6
UXVpZXRBY3Rpdml0eTo6flF1aWV0QWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNz
VGhyb3R0bGVyOjpzaG91bGRCZVJ1bm5hYmxlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc1Rocm90dGxlcjo6cXVpZXRCYWNrZ3JvdW5kQWN0aXZpdHkpOgorICAgICAgICAoV2ViS2l0
OjpQcm9jZXNzVGhyb3R0bGVyOjp1cGRhdGVBc3NlcnRpb25JZk5lZWRlZCk6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeSk6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01v
ZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFs
bENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENv
b2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmZldGNo
V2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJz
aXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmFj
dGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5Ojp0aHJvdHRsZXIp
OiBEZWxldGVkLgorCiAyMDIwLTA0LTAyICBEYXZpZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViUGFnZVByb3h5IGF0dGFjaG1lbnQgbWV0aG9kcyBzaG91bGQgcmV0
dXJuIGVhcmx5IGlmIGF0dGFjaG1lbnQgZWxlbWVudCBpcyBub3QgZW5hYmxlZApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmggYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaAppbmRleCAxMmE5YzQ4
MTE4MzhiZmE3NDRiMWE3ZTI1MzE5NTFiNTM1Njg1NzM0Li4xZjNjZjk1MTQ3NTUxNjk5YzAzNTgx
MWZkYTM5MmEyMzgwNzljYzM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
dXhpbGlhcnlQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuaApAQCAtMjgsNyArMjgsNyBAQAogI2luY2x1ZGUgIkNvbm5lY3Rp
b24uaCIKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXJNYXAuaCIKICNpbmNsdWRlICJQcm9jZXNz
TGF1bmNoZXIuaCIKLQorI2luY2x1ZGUgIlByb2Nlc3NUaHJvdHRsZXIuaCIKICNpbmNsdWRlIDxX
ZWJDb3JlL1Byb2Nlc3NJZGVudGlmaWVyLmg+CiAjaW5jbHVkZSA8d3RmL1Byb2Nlc3NJRC5oPgog
I2luY2x1ZGUgPHd0Zi9TeXN0ZW1UcmFjaW5nLmg+CkBAIC0xMzMsNiArMTMzLDggQEAgcHJvdGVj
dGVkOgogCiAgICAgdmlydHVhbCBib29sIHNob3VsZFNlbmRQZW5kaW5nTWVzc2FnZShjb25zdCBQ
ZW5kaW5nTWVzc2FnZSYpIHsgcmV0dXJuIHRydWU7IH0KIAorICAgIHZpcnR1YWwgUHJvY2Vzc1Ro
cm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBj
b25uZWN0aW9uV2lsbE9wZW4oSVBDOjpDb25uZWN0aW9uJik7CiAgICAgdmlydHVhbCB2b2lkIHBy
b2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJikgPSAwOwpAQCAtMTc4LDcgKzE4MCw3
IEBAIHZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1l
c3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlCiAgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IElQ
Qzo6bmV4dEFzeW5jUmVwbHlIYW5kbGVySUQoKTsKICAgICBlbmNvZGVyLT5lbmNvZGUobGlzdGVu
ZXJJRCk7CiAgICAgZW5jb2Rlci0+ZW5jb2RlKG1lc3NhZ2UuYXJndW1lbnRzKCkpOwotICAgIHNl
bmRNZXNzYWdlKFdURk1vdmUoZW5jb2RlciksIHNlbmRPcHRpb25zLCB7eyBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKElQQzo6RGVjb2RlciogZGVjb2Rl
cikgbXV0YWJsZSB7CisgICAgc2VuZE1lc3NhZ2UoV1RGTW92ZShlbmNvZGVyKSwgc2VuZE9wdGlv
bnMsIHt7IFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBh
Y3Rpdml0eSA9IHRocm90dGxlcigpLnF1aWV0QmFja2dyb3VuZEFjdGl2aXR5KCldIChJUEM6OkRl
Y29kZXIqIGRlY29kZXIpIG11dGFibGUgewogICAgICAgICBpZiAoZGVjb2RlciAmJiAhZGVjb2Rl
ci0+aXNJbnZhbGlkKCkpCiAgICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29kZXIsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKICAgICAgICAgZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmluZGV4IDk3ZjY2NzJjMjFkZTcxMjA2N2Vi
NTQxMDA0ZWRmYTYyOGE4NzlmMDUuLjZlMDA1NDIzOWI0ZmI2ZDUwOGUxOGRmMWI1MDY2ZDA1ODA0
MjBmNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNz
UHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5
LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAotICAgIFByb2Nlc3NUaHJvdHRs
ZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90
dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lk
IHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGll
bnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1By
b2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJv
Y2Vzc1Byb3h5LmgKaW5kZXggYWVmYzQ2MGVlZjFlMzBjM2QwMDZiYTRjZWE2MDEwM2NlMGFlMDA0
Yy4uNWM4NDk1MzQ0OWFhN2ZlNGE5MmZlZmY0OGFkYmI3M2FiZDlmMTBhYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgK
QEAgLTE4OCw3ICsxODgsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXN0UHJvY2Vzc0luY29taW5n
U3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHkoV2ViUGFnZVByb3h5SWRlbnRpZmll
ciwgTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OlRlc3RQcm9jZXNzSW5jb21pbmdTeW5j
TWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseURlbGF5ZWRSZXBseSYmKTsKICAgICB2b2lk
IHRlcm1pbmF0ZVVucmVzcG9uc2l2ZVNlcnZpY2VXb3JrZXJQcm9jZXNzZXMoV2ViQ29yZTo6UHJv
Y2Vzc0lkZW50aWZpZXIpOwogCi0gICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KKyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBm
aW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2Vy
dGlvbigpOwogCiAgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgeyByZXR1cm4gbV9w
cm9jZXNzUG9vbDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCmluZGV4IGM0YmUxNjZhZjlkZmIxNGJlZjM2NGY5ZGQ3
OGM3NDkxZGFiMGY5NTIuLjdkOWQ5YjI4NmQ0ZTk2ZTkzMTYxMGNjNmY0Y2JiMGE0NjcwZTJiMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKQEAgLTYyLDcgKzYyLDggQEAgUmVmPFBsdWdpblByb2Nlc3NQcm94eT4g
UGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblAK
IH0KIAogUGx1Z2luUHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vz
c01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmli
dXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMsIHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tl
bikKLSAgICA6IG1fcGx1Z2luUHJvY2Vzc01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCisg
ICAgOiBtX3Rocm90dGxlcigqdGhpcywgZmFsc2UpCisgICAgLCBtX3BsdWdpblByb2Nlc3NNYW5h
Z2VyKFBsdWdpblByb2Nlc3NNYW5hZ2VyKQogICAgICwgbV9wbHVnaW5Qcm9jZXNzQXR0cmlidXRl
cyhwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcykKICAgICAsIG1fcGx1Z2luUHJvY2Vzc1Rva2VuKHBs
dWdpblByb2Nlc3NUb2tlbikKICAgICAsIG1fbnVtUGVuZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygw
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKaW5kZXggYWYyMjNkYmQ5NTdkMTg0Mzk4ODlmZGJjZjJkOTVmZjcyZThjZDA4ZS4u
ZmVlYmFmZjUwYWFhMjk2NTk0ZTUxNmU4NTQxYjJiZDYzMzA5ZmE3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBAIC0z
Myw2ICszMyw3IEBACiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzcy5oIgogI2luY2x1ZGUgIlBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzLmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCisjaW5j
bHVkZSAiUHJvY2Vzc1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94
eU1lc3NhZ2VzUmVwbGllcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCkBAIC02MSw3ICs2
Miw3IEBAIGludCBwbHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdpblByb2Nlc3NU
aHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKIAotY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFs
IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFBsdWdpblByb2Nlc3NQcm94eT4geworY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFs
IDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3Vu
dGVkPFBsdWdpblByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7
CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVn
aW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0
X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5KCk7CkBAIC04
Nyw2ICs4OCw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0
cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCk7CiAjZW5kaWYKIAor
ICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0
bGVyOyB9CisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NN
YW5hZ2VyKiwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Q
cm9jZXNzVG9rZW4pOwogCkBAIC05OSw2ICsxMDIsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQg
cGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKKyAgICAvLyBQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNp
b25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7IH0KKyAgICB2
b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWwgeyB9CisgICAgdm9pZCBkaWRTZXRBc3Nl
cnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkgZmluYWwgeyB9CisKICAgICAvLyBJUEM6OkNvbm5l
Y3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9u
JiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3Nh
Z2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6
RW5jb2Rlcj4mKSBvdmVycmlkZTsKQEAgLTEzNyw2ICsxNDUsOCBAQCBwcml2YXRlOgogCiAgICAg
dm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogCisgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90
dGxlcjsKKwogICAgIC8vIFRoZSBwbHVnLWluIGhvc3QgcHJvY2VzcyBtYW5hZ2VyLgogICAgIFBs
dWdpblByb2Nlc3NNYW5hZ2VyKiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuY3BwCmluZGV4IDY5MGIyNDE1NTE5ZGM2
YTI2M2RlZTliZWY4YmU2ZGI3MTBlODM3ZjguLmRhM2ZiNTVjMDMyMWUyYTg5YjQ3YTQ3YzkyNDE0
YmIxZjQ0NmVkZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NU
aHJvdHRsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBAIHN0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZVByZXBhcmVU
b1N1c3BlbmRSZXF1ZXN0SUQoKQogUHJvY2Vzc1Rocm90dGxlcjo6UHJvY2Vzc1Rocm90dGxlcihQ
cm9jZXNzVGhyb3R0bGVyQ2xpZW50JiBwcm9jZXNzLCBib29sIHNob3VsZFRha2VVSUJhY2tncm91
bmRBc3NlcnRpb24pCiAgICAgOiBtX3Byb2Nlc3MocHJvY2VzcykKICAgICAsIG1fcHJlcGFyZVRv
U3VzcGVuZFRpbWVvdXRUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZQcm9jZXNzVGhyb3R0
bGVyOjpwcmVwYXJlVG9TdXNwZW5kVGltZW91dFRpbWVyRmlyZWQpCisgICAgLCBtX3F1aWV0QmFj
a2dyb3VuZEFjdGl2aXRpZXMoKnRoaXMpCiAgICAgLCBtX3Nob3VsZFRha2VVSUJhY2tncm91bmRB
c3NlcnRpb24oc2hvdWxkVGFrZVVJQmFja2dyb3VuZEFzc2VydGlvbikKIHsKIH0KQEAgLTgzLDYg
Kzg0LDcgQEAgdm9pZCBQcm9jZXNzVGhyb3R0bGVyOjppbnZhbGlkYXRlQWxsQWN0aXZpdGllcygp
CiAgICAgICAgICgqbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5iZWdpbigpKS0+aW52YWxpZGF0ZSgp
OwogICAgIHdoaWxlICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCiAgICAgICAg
ICgqbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5iZWdpbigpKS0+aW52YWxpZGF0ZSgpOworICAgIG1f
cXVpZXRCYWNrZ3JvdW5kQWN0aXZpdGllcy5yZXNldCgpOwogICAgIFBST0NFU1NUSFJPVFRMRVJf
UkVMRUFTRV9MT0coImludmFsaWRhdGVBbGxBY3Rpdml0aWVzOiBFTkQiKTsKIH0KICAgICAKQEAg
LTkwLDcgKzkyLDcgQEAgQXNzZXJ0aW9uU3RhdGUgUHJvY2Vzc1Rocm90dGxlcjo6ZXhwZWN0ZWRB
c3NlcnRpb25TdGF0ZSgpCiB7CiAgICAgaWYgKCFtX2ZvcmVncm91bmRBY3Rpdml0aWVzLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN0YXRlOjpGb3JlZ3JvdW5kOwotICAgIGlm
ICghbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5pc0VtcHR5KCkpCisgICAgaWYgKCFtX2JhY2tncm91
bmRBY3Rpdml0aWVzLmlzRW1wdHkoKSB8fCBtX3F1aWV0QmFja2dyb3VuZEFjdGl2aXRpZXMuY291
bnQoKSkKICAgICAgICAgcmV0dXJuIEFzc2VydGlvblN0YXRlOjpCYWNrZ3JvdW5kOwogICAgIHJl
dHVybiBBc3NlcnRpb25TdGF0ZTo6U3VzcGVuZGVkOwogfQpAQCAtMTA2LDcgKzEwOCw3IEBAIHZv
aWQgUHJvY2Vzc1Rocm90dGxlcjo6c2V0QXNzZXJ0aW9uU3RhdGUoQXNzZXJ0aW9uU3RhdGUgbmV3
U3RhdGUpCiAgICAgaWYgKG1fYXNzZXJ0aW9uLT5zdGF0ZSgpID09IG5ld1N0YXRlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBQUk9DRVNTVEhST1RUTEVSX1JFTEVBU0VfTE9HKCJzZXRBc3NlcnRp
b25TdGF0ZTogVXBkYXRpbmcgcHJvY2VzcyBhc3NlcnRpb24gc3RhdGUgdG8gJXUgKGZvcmVncm91
bmRBY3Rpdml0aWVzOiAldSwgYmFja2dyb3VuZEFjdGl2aXRpZXM6ICV1KSIsIG5ld1N0YXRlLCBt
X2ZvcmVncm91bmRBY3Rpdml0aWVzLnNpemUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXpl
KCkpOworICAgIFBST0NFU1NUSFJPVFRMRVJfUkVMRUFTRV9MT0coInNldEFzc2VydGlvblN0YXRl
OiBVcGRhdGluZyBwcm9jZXNzIGFzc2VydGlvbiBzdGF0ZSB0byAldSAoZm9yZWdyb3VuZEFjdGl2
aXRpZXM6ICV1LCBiYWNrZ3JvdW5kQWN0aXZpdGllczogJXUsIHF1aWV0QmFja2dyb3VuZEFjdGl2
aXRpZXM6ICUiIFBSSXU2NCAiKSIsIG5ld1N0YXRlLCBtX2ZvcmVncm91bmRBY3Rpdml0aWVzLnNp
emUoKSwgbV9iYWNrZ3JvdW5kQWN0aXZpdGllcy5zaXplKCksIG1fcXVpZXRCYWNrZ3JvdW5kQWN0
aXZpdGllcy5jb3VudCgpKTsKICAgICBtX2Fzc2VydGlvbi0+c2V0U3RhdGUobmV3U3RhdGUpOwog
ICAgIG1fcHJvY2Vzcy5kaWRTZXRBc3NlcnRpb25TdGF0ZShuZXdTdGF0ZSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggMTM2MjRlMTU1YzZmMDc0
NGVlYzE5MWFmMTYzZDA0MmJlYmFlMjI3MS4uMDcxNTdhMTJkMDk1YjVkOWFlMTdjZTliMWEwYmUz
YmM4MmI4NTExYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Ro
cm90dGxlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIu
aApAQCAtOTMsMTggKzkzLDc2IEBAIHB1YmxpYzoKICAgICAgICAgQVNDSUlMaXRlcmFsIG1fbmFt
ZTsKICAgICB9OwogCisgICAgY2xhc3MgUXVpZXRBY3Rpdml0eUNvdW50IDogcHVibGljIENhbk1h
a2VXZWFrUHRyPFF1aWV0QWN0aXZpdHlDb3VudD4geworICAgIHB1YmxpYzoKKyAgICAgICAgUXVp
ZXRBY3Rpdml0eUNvdW50KFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcikKKyAgICAgICAgICAg
IDogbV90aHJvdHRsZXIodGhyb3R0bGVyKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAg
ICB2b2lkIGluY3JlbWVudCgpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29w
Ojppc01haW4oKSk7CisgICAgICAgICAgICArK21fY291bnQ7CisgICAgICAgICAgICBtX3Rocm90
dGxlci51cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworICAgICAgICB9CisKKyAgICAgICAgdm9p
ZCBkZWNyZW1lbnQoKQorICAgICAgICB7CisgICAgICAgICAgICBBU1NFUlQoUnVuTG9vcDo6aXNN
YWluKCkpOworICAgICAgICAgICAgQVNTRVJUKG1fY291bnQpOworICAgICAgICAgICAgLS1tX2Nv
dW50OworICAgICAgICAgICAgbV90aHJvdHRsZXIudXBkYXRlQXNzZXJ0aW9uSWZOZWVkZWQoKTsK
KyAgICAgICAgfQorCisgICAgICAgIHVpbnQ2NF90IGNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9j
b3VudDsgfQorCisgICAgICAgIHZvaWQgcmVzZXQoKQorICAgICAgICB7CisgICAgICAgICAgICBt
X2NvdW50ID0gMDsKKyAgICAgICAgICAgIHdlYWtQdHJGYWN0b3J5KCkucmV2b2tlQWxsKCk7Cisg
ICAgICAgICAgICBtX3Rocm90dGxlci51cGRhdGVBc3NlcnRpb25JZk5lZWRlZCgpOworICAgICAg
ICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICB1aW50NjRfdCBtX2NvdW50IHsgMCB9OworICAg
ICAgICBQcm9jZXNzVGhyb3R0bGVyJiBtX3Rocm90dGxlcjsKKyAgICB9OworCisgICAgY2xhc3Mg
UXVpZXRBY3Rpdml0eSB7CisgICAgICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworICAgIHB1
YmxpYzoKKyAgICAgICAgUXVpZXRBY3Rpdml0eShRdWlldEFjdGl2aXR5Q291bnQmIGFjdGl2aXR5
Q291bnQpCisgICAgICAgICAgICA6IG1fYWN0aXZpdHlDb3VudChtYWtlV2Vha1B0cihhY3Rpdml0
eUNvdW50KSkKKyAgICAgICAgeworICAgICAgICAgICAgYWN0aXZpdHlDb3VudC5pbmNyZW1lbnQo
KTsKKyAgICAgICAgfQorCisgICAgICAgIH5RdWlldEFjdGl2aXR5KCkKKyAgICAgICAgeworICAg
ICAgICAgICAgaWYgKG1fYWN0aXZpdHlDb3VudCkKKyAgICAgICAgICAgICAgICBtX2FjdGl2aXR5
Q291bnQtPmRlY3JlbWVudCgpOworICAgICAgICB9CisKKyAgICBwcml2YXRlOgorICAgICAgICBX
ZWFrUHRyPFF1aWV0QWN0aXZpdHlDb3VudD4gbV9hY3Rpdml0eUNvdW50OworICAgIH07CisKICAg
ICB1c2luZyBGb3JlZ3JvdW5kQWN0aXZpdHkgPSBBY3Rpdml0eTxBY3Rpdml0eVR5cGU6OkZvcmVn
cm91bmQ+OwogICAgIFVuaXF1ZVJlZjxGb3JlZ3JvdW5kQWN0aXZpdHk+IGZvcmVncm91bmRBY3Rp
dml0eShBU0NJSUxpdGVyYWwgbmFtZSk7CiAKICAgICB1c2luZyBCYWNrZ3JvdW5kQWN0aXZpdHkg
PSBBY3Rpdml0eTxBY3Rpdml0eVR5cGU6OkJhY2tncm91bmQ+OwogICAgIFVuaXF1ZVJlZjxCYWNr
Z3JvdW5kQWN0aXZpdHk+IGJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWwgbmFtZSk7CiAK
KyAgICAvLyBTYW1lIGFzIGJhY2tncm91bmRBY3Rpdml0eSgpIGJ1dCB3aXRob3V0IGFueSBsb2dn
aW5nIGFuZCBoaWdobHkgZWZmaWNpZW50IChmb3IgdXNlIGluIHBlcmZvcm1hbmNlIHNlbnNpdGl2
ZSBjb2RlKS4KKyAgICBVbmlxdWVSZWY8UXVpZXRBY3Rpdml0eT4gcXVpZXRCYWNrZ3JvdW5kQWN0
aXZpdHkoKTsKKwogICAgIHVzaW5nIEFjdGl2aXR5VmFyaWFudCA9IFZhcmlhbnQ8c3RkOjpudWxs
cHRyX3QsIFVuaXF1ZVJlZjxCYWNrZ3JvdW5kQWN0aXZpdHk+LCBVbmlxdWVSZWY8Rm9yZWdyb3Vu
ZEFjdGl2aXR5Pj47CiAgICAgc3RhdGljIGJvb2wgaXNWYWxpZEJhY2tncm91bmRBY3Rpdml0eShj
b25zdCBBY3Rpdml0eVZhcmlhbnQmKTsKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkRm9yZWdyb3Vu
ZEFjdGl2aXR5KGNvbnN0IEFjdGl2aXR5VmFyaWFudCYpOwogICAgIAogICAgIHZvaWQgZGlkQ29u
bmVjdFRvUHJvY2VzcyhQcm9jZXNzSUQpOwotICAgIGJvb2wgc2hvdWxkQmVSdW5uYWJsZSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9yZWdyb3VuZEFjdGl2aXRpZXMuc2l6ZSgpIHx8IG1fYmFja2dyb3Vu
ZEFjdGl2aXRpZXMuc2l6ZSgpOyB9CisgICAgYm9vbCBzaG91bGRCZVJ1bm5hYmxlKCkgY29uc3Qg
eyByZXR1cm4gbV9mb3JlZ3JvdW5kQWN0aXZpdGllcy5zaXplKCkgfHwgbV9iYWNrZ3JvdW5kQWN0
aXZpdGllcy5zaXplKCkgfHwgbV9xdWlldEJhY2tncm91bmRBY3Rpdml0aWVzLmNvdW50KCk7IH0K
IAogcHJpdmF0ZToKICAgICBBc3NlcnRpb25TdGF0ZSBleHBlY3RlZEFzc2VydGlvblN0YXRlKCk7
CkBAIC0xMzIsNiArMTkwLDcgQEAgcHJpdmF0ZToKICAgICBSdW5Mb29wOjpUaW1lcjxQcm9jZXNz
VGhyb3R0bGVyPiBtX3ByZXBhcmVUb1N1c3BlbmRUaW1lb3V0VGltZXI7CiAgICAgSGFzaFNldDxG
b3JlZ3JvdW5kQWN0aXZpdHkqPiBtX2ZvcmVncm91bmRBY3Rpdml0aWVzOwogICAgIEhhc2hTZXQ8
QmFja2dyb3VuZEFjdGl2aXR5Kj4gbV9iYWNrZ3JvdW5kQWN0aXZpdGllczsKKyAgICBRdWlldEFj
dGl2aXR5Q291bnQgbV9xdWlldEJhY2tncm91bmRBY3Rpdml0aWVzOwogICAgIE9wdGlvbmFsPHVp
bnQ2NF90PiBtX3BlbmRpbmdSZXF1ZXN0VG9TdXNwZW5kSUQ7CiAgICAgYm9vbCBtX3Nob3VsZFRh
a2VVSUJhY2tncm91bmRBc3NlcnRpb247CiB9OwpAQCAtMTQ2LDYgKzIwNSwxMSBAQCBpbmxpbmUg
YXV0byBQcm9jZXNzVGhyb3R0bGVyOjpiYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFsIG5h
bWUpIC0+IFVuaXF1ZVJlZgogICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPEJhY2tncm91bmRBY3Rp
dml0eT4oKnRoaXMsIG5hbWUpOwogfQogCitpbmxpbmUgYXV0byBQcm9jZXNzVGhyb3R0bGVyOjpx
dWlldEJhY2tncm91bmRBY3Rpdml0eSgpIC0+IFVuaXF1ZVJlZjxRdWlldEFjdGl2aXR5Pgorewor
ICAgIHJldHVybiBtYWtlVW5pcXVlUmVmPFF1aWV0QWN0aXZpdHk+KG1fcXVpZXRCYWNrZ3JvdW5k
QWN0aXZpdGllcyk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCiAjZW5kaWYgLy8gUHJv
Y2Vzc1Rocm90dGxlcl9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmNwcAppbmRleCBhZTU2ZTUzM2E2MGIyN2Y3OWNjMWFlM2U3NjZh
YzgxNzQ5YTdkMTc5Li5jMDA3ZGZhODZkYWI1MTAzZmNiZGU3NGVkZGMwYzg0ZmE2Y2U1YTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVF
bnRyeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Ojp+V2Vi
QmFja0ZvcndhcmRDYWNoZUVudHJ5KCkKIHsKICAgICBpZiAobV9iYWNrRm9yd2FyZEl0ZW1JRCAm
JiAhbV9zdXNwZW5kZWRQYWdlKSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSB0aGlzLT5wcm9j
ZXNzKCk7Ci0gICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFthY3Rpdml0eSA9
IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJDbGVhcmluZyBiYWNrL2Zv
cndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOworICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0Zvcndh
cmRJdGVtSUQpLCBbXSB7IH0pOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5kZXggZGMyY2Q2OTYzNTEyODE0Y2Jl
ZGIxMDhmYmI1ZDQzMmNkMjZkYTVlZC4uYzU2MDA3YzMyNjM1ZTVhNTlhZGMzYzliMDM5MGJmMzI3
ZmM0MDY5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFu
YWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5h
Z2VyUHJveHkuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9u
KQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25J
RCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZp
dHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMiX3MpXShWZWN0b3I8U3Ry
aW5nPiYmIGhvc3RuYW1lcykgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29v
a2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbildKFZlY3RvcjxTdHJpbmc+JiYgaG9zdG5hbWVzKSBtdXRhYmxlIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbihXVEZNb3ZlKGhvc3RuYW1lcykpOwogICAgIH0pOwogfQpAQCAtMTIwLDcg
KzEyMCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0
byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVu
Y3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5
OjpkZWxldGVDb29raWUiX3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNl
c3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7
CiB9CkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRpbWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwgdGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0g
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2UiX3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRl
QWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rp
b24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pXSgpIG11dGFibGUgewogICAgICAgICBjYWxs
YmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb24KIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8m
IG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsK
LSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3Mu
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMiX3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25JRCwg
Y29va2llcyksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0o
KSBtdXRhYmxlIHsKICAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAt
MTQ0LDcgKzE0NCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZl
Y3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9j
dW1lbnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQog
ewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29y
a1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmws
IG1haW5Eb2N1bWVudFVSTCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyJfcyldKCkgbXV0YWJs
ZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9j
dW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbild
KCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAg
LTE1Miw3ICsxNTIsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQ
QUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDbwogdm9pZCBXZWJDb29raWVN
YW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24p
CiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3
b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29y
a1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEFsbENvb2tpZXMiX3MpXShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFi
bGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildKFZlY3RvcjxDb29raWU+JiYgY29va2llcykg
bXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7CiAg
ICAgfSk7CiB9CkBAIC0xNjAsNyArMTYwLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmdldEFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGEKIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tp
ZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9
IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nl
c3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29r
aWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNr
RnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzIl9zKV0oVmVjdG9y
PENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lv
bklELCB1cmwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbild
KFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oV1RGTW92ZShjb29raWVzKSk7CiAgICAgfSk7CiB9CkBAIC0yMzIsNyArMjMyLDcgQEAg
dm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFM
OjpTZXNzaW9uSUQsIEhUVFBDb29raWUKICNlbmRpZgogCiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29r
aWVBY2NlcHRQb2xpY3kiX3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9
KTsKIH0KQEAgLTI0MCw3ICsyNDAsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZQogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2VwdFBvbGljeSk+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSJfcyld
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKKyAgICBuZXR3b3JrUHJv
Y2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhU
VFBDb29raWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7CiAg
ICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKICAgICB9KTsKIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCmluZGV4IDhkMjgzODVkNTg1NTMwZTg1
MDJiNGZmYWMzMGFkNTY1NDdjNDNjNjYuLmQzMDRkYmVmMzM3MzJmMDY4YTY5NTgyOTE4NzY0ZGZh
MDE3MThiYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtMTA5NywxMCArMTA5Nyw5IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNp
dGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgQVNT
RVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNz
aW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byBhY3Rpdml0eSA9IHRocm90
dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVE
YXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQ
cm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tn
cm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGZldGNoaW5nIFdlYnNp
dGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoZGF0YVR5cGVzKSwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2
aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1
dG8gcmVwbHkpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhp
cyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMTE0LDEwICsxMTEz
LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnMKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2Uo
KSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNz
aW9uSUQoKSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhIl9zKTsKICAgICBSRUxF
QVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwg
IiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJl
Y2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwog
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0
eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVs
ZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAg
ICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMTMxLDEwICsxMTI5LDkgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIE9wdGkKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQo
KSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyJfcyk7CiAgICAg
UkVMRUFTRV9MT0dfSUYoaXNSZWxlYXNlTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNp
b24sICIlcCAtIFdlYlByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlv
biBiZWNhdXNlIHRoZSBXZWIgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNl
dmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhk
YXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhkYXRh
VHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7
CiAjZW5kaWYKQEAgLTE1NDEsNyArMTUzOCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRD
b2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tCiAK
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphY3RpdmVQYWdlc0RvbWFpbnNGb3JUZXN0aW5nKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3RpbmcoKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6R2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggMzdmMzEzMTkxNzA3OTIxYmMwNTI3NDhiM2JkZDU5OWRj
ZGM4YWU1ZC4uMGQ5NDZlNDU5YTk0NGMzNWJkNzY2ODk3YmMwMDBjZDkyY2JmMTA3YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI0MCw3ICsyNDAsNyBA
QCBwdWJsaWM6CiAKICAgICB2b2lkIHNldElzSG9sZGluZ0xvY2tlZEZpbGVzKGJvb2wpOwogCi0g
ICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0K
KyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90
dGxlcjsgfQogCiAgICAgdm9pZCBpc1Jlc3BvbnNpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPiYmKTsKICAgICB2b2lkIGlzUmVzcG9uc2l2ZVdp
dGhMYXp5U3RvcCgpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398651</attachid>
            <date>2020-05-06 13:48:02 -0700</date>
            <delta_ts>2020-05-06 13:53:56 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>209928_sendWithAsyncReply_takeActivity_wip.patch</filename>
            <type>text/plain</type>
            <size>41462</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDA5NDM3NDU5MTQ1Li5iNmZkZTE2MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTAsOCArMTUwLDE1IEBA
IGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29uc3QKICNlbmRp
ZgogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJiBhc3luY1JlcGx5SW5mbywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCiB7CisgICAgaWYgKGFzeW5j
UmVwbHlJbmZvICYmIGNhblNlbmRNZXNzYWdlKCkgJiYgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHkgPT0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcykg
eworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShhc3luY1Jl
cGx5SW5mby0+Zmlyc3QsIG51bGxwdHIpOworICAgICAgICBhc3luY1JlcGx5SW5mby0+Zmlyc3Qg
PSBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFs
OjpudWxsKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGVjb2Rlcik7CisgICAgICAgIH07CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0
ZSgpKSB7CiAgICAgY2FzZSBTdGF0ZTo6TGF1bmNoaW5nOgogICAgICAgICAvLyBJZiB3ZSdyZSB3
YWl0aW5nIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2gg
YXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUgYSBjb25u
ZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAppbmRleCA3YTI2OGM0YmI3OS4uZTIwYmY0Nzc3YWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0yOCw3ICsyOCw3IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgog
I2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotCisjaW5jbHVkZSAiUHJvY2Vzc1Rocm90dGxl
ci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUHJvY2Vzc0lkZW50aWZpZXIuaD4KICNpbmNsdWRlIDx3
dGYvUHJvY2Vzc0lELmg+CiAjaW5jbHVkZSA8d3RmL1N5c3RlbVRyYWNpbmcuaD4KQEAgLTQ4LDkg
KzQ4LDEzIEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbm5lY3QoKTsKICAgICB2b2lkIHRlcm1pbmF0
ZSgpOwogCisgICAgdmlydHVhbCBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSA9IDA7CisK
ICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmQoVCYmIG1lc3NhZ2UsIHVpbnQ2NF90
IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zID0g
eyB9KTsKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBib29sIHNlbmRTeW5jKFQmJiBtZXNzYWdl
LCB0eXBlbmFtZSBUOjpSZXBseSYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBTZWNvbmRzIHRp
bWVvdXQgPSAxX3MsIE9wdGlvblNldDxJUEM6OlNlbmRTeW5jT3B0aW9uPiBzZW5kU3luY09wdGlv
bnMgPSB7IH0pOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0
aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0pOworCisgICAgZW51bSBjbGFzcyBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA6IGJvb2wgeyBObywgWWVzIH07CisgICAgdGVt
cGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4gdm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYm
LCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQgPSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0
aW9uPiA9IHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgPSBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKTsKICAgICAKICAgICB0ZW1wbGF0ZTx0
eXBlbmFtZSBULCB0eXBlbmFtZSBVPgogICAgIGJvb2wgc2VuZChUJiYgbWVzc2FnZSwgT2JqZWN0
SWRlbnRpZmllcjxVPiBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucyA9IHsgfSkKQEAgLTEwNCw3ICsxMDgsNyBAQCBwdWJsaWM6CiAgICAgUHJvY2Vz
c0lEIHByb2Nlc3NJZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9wcm9jZXNzTGF1bmNoZXIg
PyBtX3Byb2Nlc3NMYXVuY2hlci0+cHJvY2Vzc0lkZW50aWZpZXIoKSA6IDA7IH0KIAogICAgIGJv
b2wgY2FuU2VuZE1lc3NhZ2UoKSBjb25zdCB7IHJldHVybiBzdGF0ZSgpICE9IFN0YXRlOjpUZXJt
aW5hdGVkO30KLSAgICBib29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29k
ZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBs
eUluZm8gPSBXVEY6Om51bGxvcHQpOworICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxz
dGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90
Pj4mJiBhc3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCwgU2hvdWxkU3RhcnRQcm9jZXNzVGhy
b3R0bGVyQWN0aXZpdHkgPSBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVz
KTsKIAogICAgIHZvaWQgc2h1dERvd25Qcm9jZXNzKCk7CiAKQEAgLTE3MCw3ICsxNzQsNyBAQCBi
b29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFN5bmMoVSYmIG1lc3NhZ2UsIHR5cGVuYW1l
IFU6OlJlcGx5JiYgcmVwbHksIHVpbgogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDPgotdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBP
cHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucykKK3ZvaWQgQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9u
SGFuZGxlciwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4gc2VuZE9wdGlvbnMsIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IHNob3Vs
ZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KQogewogICAgIENPTVBJTEVfQVNTRVJUKCFU
Ojppc1N5bmMsIEFzeW5jTWVzc2FnZUV4cGVjdGVkKTsKIApAQCAtMTc4LDEyICsxODIsMTMgQEAg
dm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2Fn
ZSwgQyYmIGNvbXBsZXRpb25IYW5kbGUKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gSVBDOjpu
ZXh0QXN5bmNSZXBseUhhbmRsZXJJRCgpOwogICAgIGVuY29kZXItPmVuY29kZShsaXN0ZW5lcklE
KTsKICAgICBlbmNvZGVyLT5lbmNvZGUobWVzc2FnZS5hcmd1bWVudHMoKSk7CisKICAgICBzZW5k
TWVzc2FnZShXVEZNb3ZlKGVuY29kZXIpLCBzZW5kT3B0aW9ucywge3sgW2NvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChJUEM6OkRlY29kZXIqIGRlY29kZXIp
IG11dGFibGUgewogICAgICAgICBpZiAoZGVjb2RlciAmJiBkZWNvZGVyLT5pc1ZhbGlkKCkpCiAg
ICAgICAgICAgICBUOjpjYWxsUmVwbHkoKmRlY29kZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgVDo6Y2FuY2VsUmVwbHkoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0sIGxpc3RlbmVySUQgfX0pOworICAgIH0sIGxpc3Rl
bmVySUQgfX0sIHNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5KTsKIH0KICAgICAK
IH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUv
R1BVUHJvY2Vzc1Byb3h5LmNwcAppbmRleCA2MTYwNDgxYzAxNS4uZDFlMTJhZmQ0ZGIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCkBAIC0x
ODMsNyArMTgzLDcgQEAgdm9pZCBHUFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0
aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vzc1Byb3h5LAogI2VuZGlmCiAKICAgICBSRUxF
QVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gR1BVUHJvY2Vzc1Byb3h5IGlzIHRha2lu
ZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0
aW5nIGEgY29ubmVjdGlvbiIsIHRoaXMpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nl
c3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25J
RCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KSwgYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIkdQ
VVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24iX3MpXShhdXRvJiYgY29ubmVj
dGlvbklkZW50aWZpZXIpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6R1BVUHJvY2Vzczo6Q3JlYXRlR1BVQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nl
c3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25J
RCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZN
b3ZlKHJlcGx5KV0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyKSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vz
cywgIkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb246IEdQVVByb2Nlc3NQ
cm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuaAppbmRleCAzM2IzZTI3MTFjNS4uNWYxNjc2MjI2YWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDcg
KzU3LDcgQEAgcHVibGljOgogCiAgICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQ
cm9jZXNzUHJveHkmLCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29u
bmVjdGlvbkRlbGF5ZWRSZXBseSYmKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxl
cigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nl
c3NBc3NlcnRpb24oKTsKIAogICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
Y3BwCmluZGV4IDUwMjk4OGFlNTVlLi5kY2E2OGE4MDA5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCkBAIC0x
MjgsNyArMTI4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpwcm9jZXNzV2lsbFNodXRE
b3duKElQQzo6Q29ubmVjdGlvbiYgY29ubmVjdGlvbikKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYgd2ViUHJvY2Vz
c1Byb3h5LCBNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb246OkRlbGF5ZWRSZXBseSYmIHJlcGx5KQogewogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NT
dXNwZW5zaW9uLCAiJXAgLSBOZXR3b3JrUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91
bmQgYXNzZXJ0aW9uIGJlY2F1c2UgYSB3ZWIgcHJvY2VzcyBpcyByZXF1ZXN0aW5nIGEgY29ubmVj
dGlvbiIsIHRoaXMpOwotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1By
b3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkg
fSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUo
cmVwbHkpLCBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29y
a1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uIl9zKV0oYXV0byYmIGNv
bm5lY3Rpb25JZGVudGlmaWVyLCBhdXRvIGNvb2tpZUFjY2VwdFBvbGljeSkgbXV0YWJsZSB7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0
d29ya0Nvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJ
ZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1Ro
aXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSldKGF1dG8mJiBj
b25uZWN0aW9uSWRlbnRpZmllciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgewog
ICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQ
cm9jZXNzLCAiTmV0d29ya1Byb2Nlc3NQcm94eTo6Z2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OiBOZXR3b3JrUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBjb25uZWN0aW9uIGVzdGFi
bGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0pOwpAQCAtODQ5LDcgKzg0
OSw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0R3JhbmRmYXRoZXJlZChQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZ2lzCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94
eTo6c2V0VXNlSVRQRGF0YWJhc2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBib29sIHZhbHVl
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VXNlSVRQRGF0
YWJhc2Uoc2Vzc2lvbklELCB2YWx1ZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91
bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VXNlSVRQRGF0YWJhc2UiX3MpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFVz
ZUlUUERhdGFiYXNlKHNlc3Npb25JRCwgdmFsdWUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTk4Miw3ICs5ODIsNyBAQCB2b2lkIE5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoUEFMOjpT
ZXNzaW9uSQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2
YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklEKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENhY2hlTWF4QWdlQ2FwRm9y
UHJldmFsZW50UmVzb3VyY2VzIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3Vy
Y2VzKHNlc3Npb25JRCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0p
OwogfQpAQCAtOTk0LDcgKzk5NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRQ
YXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKHNlc3Npb25JRCks
IFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nl
c3NQcm94eTo6cmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzIl9zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMoc2Vzc2lvbklEKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiB9CkBAIC0xMDE2LDcgKzEwMTYsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoUEFMOjpTZXNzaW9uSUQg
c2VzcwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVu
dChzZXNzaW9uSUQsIHsgfSwgc2hvdWxkR3JhbmRmYXRoZXIpLCBbYWN0aXZpdHkgPSB0aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNjaGVkdWxlQ2xl
YXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3Rl
bnQoc2Vzc2lvbklELCB7IH0sIHNob3VsZEdyYW5kZmF0aGVyKSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBs
ZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xMDk2LDcgKzEwOTYsNyBAQCB2b2lkIE5l
dHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25G
b3JUZXN0aW5nKFBBTDo6UwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q3Jvc3NTaXRlTG9h
ZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKHNlc3Npb25JRCksIFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmciX3MpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0Q3Jvc3NTaXRl
TG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nKHNlc3Npb25JRCksIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtMTEzOCw3ICsxMTM4LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpoYXNJc29sYXRlZFNlc3Npb24oUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWcKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgSGFzaFNldDxSZWdpc3RyYWJsZURvbWFpbj4mIGFwcEJvdW5kRG9tYWlu
cywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEFwcEJvdW5k
RG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBhcHBCb3VuZERvbWFp
bnMpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Mi
X3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3Moc2Vzc2lvbklELCBh
cHBCb3VuZERvbWFpbnMpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25I
YW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9
KTsKIH0KQEAgLTExNTAsMjEgKzExNTAsMjEgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5Ojpz
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoYm9vbCBlbmFibGVkLCBDb20KICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3Rpbmco
ZW5hYmxlZCksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0
d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nIl9z
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTaG91bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmcoZW5hYmxlZCksIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIGJsb2NraW5nTW9kZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUoc2Vzc2lvbklELCBibG9ja2luZ01vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoc2Vz
c2lvbklELCBibG9ja2luZ01vZGUpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
ICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGRFbmJsZVNh
bWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgV2ViQ29yZTo6U2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEVuYWJsZWQgZW5hYmxlZCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZEVuYmxlU2Ft
ZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3Rpbmcoc2Vzc2lvbklELCBlbmFibGVkKSwgW2Fj
dGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1By
b3h5OjpzZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nIl9z
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
ZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKHNlc3Npb25J
RCwgZW5hYmxlZCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwog
fQpAQCAtMTE3Niw3ICsxMTc2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJz
dFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhz
ZXNzaW9uSUQsIG1vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxN
b2RlRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0
aW5nKHNlc3Npb25JRCwgbW9kZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogfQpAQCAtMTIwOCw3ICsxMjA4LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZW5kUHJvY2Vzc1dpbGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQogICAgIAogdm9p
ZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25J
bW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0g
SXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVwYXJl
VG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZ
ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCwgeyB9LCBTaG91bGRTdGFydFByb2Nl
c3NUaHJvdHRsZXJBY3Rpdml0eTo6Tm8pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzFlZTNiZjQ5YTAuLjIzYjll
YWMzM2UxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdv
cmtQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lk
IHRlc3RQcm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShX
ZWJQYWdlUHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVz
dFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXll
ZFJlcGx5JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclBy
b2Nlc3NlcyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKLSAgICBQcm9jZXNzVGhyb3R0
bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJv
dHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9p
ZCB1cGRhdGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vz
c1Bvb2woKSB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzRiZTE2
NmFmOWQuLjdkOWQ5YjI4NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCkBAIC02Miw3ICs2Miw4IEBAIFJlZjxQ
bHVnaW5Qcm9jZXNzUHJveHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nl
c3NNYW5hZ2VyKiBQbHVnaW5QCiB9CiAKIFBsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vz
c1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3Qg
UGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLCB1aW50NjRf
dCBwbHVnaW5Qcm9jZXNzVG9rZW4pCi0gICAgOiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdp
blByb2Nlc3NNYW5hZ2VyKQorICAgIDogbV90aHJvdHRsZXIoKnRoaXMsIGZhbHNlKQorICAgICwg
bV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9jZXNzTWFuYWdlcikKICAgICAsIG1fcGx1
Z2luUHJvY2Vzc0F0dHJpYnV0ZXMocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiAgICAgLCBtX3Bs
dWdpblByb2Nlc3NUb2tlbihwbHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAgLCBtX251bVBlbmRpbmdD
b25uZWN0aW9uUmVxdWVzdHMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCmluZGV4IGFmMjIzZGJkOTU3Li5mOWI2NzFlOGE3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCkBAIC02MSw3ICs2MSw3IEBAIGludCBwbHVnaW5Qcm9jZXNzTGF0ZW5jeVFP
UygpOwogaW50IHBsdWdpblByb2Nlc3NUaHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKIAotY2xhc3Mg
UGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NQcm94eT4geworY2xhc3Mg
UGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwg
cHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NQcm94eT4sIHByaXZhdGUg
UHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQbHVnaW5Q
cm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKTsKICAgICB+UGx1
Z2luUHJvY2Vzc1Byb3h5KCk7CkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMg
Ym9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURh
dGEmIHJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJv
Y2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJp
YnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCkBAIC05OSw2ICsxMDEsMTEg
QEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1
bmNoKCk7CiAKKyAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CisgICAgdm9pZCBzZW5kUHJl
cGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWwg
eyB9CisgICAgdm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkgZmluYWwg
eyB9CisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVy
Jiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKQEAgLTEzNyw2ICsx
NDQsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9j
ZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogCisgICAg
UHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKKwogICAgIC8vIFRoZSBwbHVnLWluIGhvc3Qg
cHJvY2VzcyBtYW5hZ2VyLgogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBtX3BsdWdpblByb2Nl
c3NNYW5hZ2VyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgK
aW5kZXggOGEyMTJlNTA3NTUuLjA5ZDZkMzI2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvUHJvY2Vzc1Rocm90dGxlci5oCkBAIC02NSw4ICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAsIG1fbmFtZShuYW1lKQogICAgICAgICB7CiAgICAgICAgICAgICB0aHJvdHRsZXIuYWRk
QWN0aXZpdHkoKnRoaXMpOwotICAgICAgICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9S
RUxFQVNFX0xPRygiQWN0aXZpdHk6IFN0YXJ0aW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0
aXZpdHkgLyAnJSIgUFVCTElDX0xPR19TVFJJTkcgIiciLAotICAgICAgICAgICAgICAgIHR5cGUg
PT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQi
LCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAgIGlmICghaXNRdWlldEFjdGl2aXR5
KCkpIHsKKyAgICAgICAgICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0Vf
TE9HKCJBY3Rpdml0eTogU3RhcnRpbmcgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAv
ICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0g
QWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBt
X25hbWUuY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAg
IH5BY3Rpdml0eSgpCkBAIC04MCwxMSArODIsMTUgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAg
ICAgICAgIGZyaWVuZCBjbGFzcyBQcm9jZXNzVGhyb3R0bGVyOwogCisgICAgICAgIGJvb2wgaXNR
dWlldEFjdGl2aXR5KCkgY29uc3QgeyByZXR1cm4gIW1fbmFtZS5jaGFyYWN0ZXJzKCk7IH0KKwog
ICAgICAgICB2b2lkIGludmFsaWRhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQo
aXNWYWxpZCgpKTsKLSAgICAgICAgICAgIFBST0NFU1NUSFJPVFRMRVJfQUNUSVZJVFlfUkVMRUFT
RV9MT0coImludmFsaWRhdGU6IEVuZGluZyAlIiBQVUJMSUNfTE9HX1NUUklORyAiIGFjdGl2aXR5
IC8gJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIiwKLSAgICAgICAgICAgICAgICB0eXBlID09IEFj
dGl2aXR5VHlwZTo6Rm9yZWdyb3VuZCA/ICJmb3JlZ3JvdW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9u
YW1lLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICBpZiAoIWlzUXVpZXRBY3Rpdml0eSgpKSB7
CisgICAgICAgICAgICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygi
aW52YWxpZGF0ZTogRW5kaW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIg
UFVCTElDX0xPR19TVFJJTkcgIiciLAorICAgICAgICAgICAgICAgICAgICB0eXBlID09IEFjdGl2
aXR5VHlwZTo6Rm9yZWdyb3VuZCA/ICJmb3JlZ3JvdW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9uYW1l
LmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3Rocm90dGxlci0+
cmVtb3ZlQWN0aXZpdHkoKnRoaXMpOwogICAgICAgICAgICAgbV90aHJvdHRsZXIgPSBudWxscHRy
OwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVk
aWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTE1
NTM5ZmQ4ZDcuLmNjZWI2MWYxNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHku
Y3BwCkBAIC0yNjAsMTIgKzI2MCwxMiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVybQogICAgICAg
ICB9CiAjZW5kaWYKIAotICAgICAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFu
dGVkIHsgcmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVl
c3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSwgaGFu
ZGxlIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgIG1f
cGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vz
c1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2Uo
KSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2Fs
dCgpLCBoYW5kbGUgfSwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAg
ICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICAgICAgaWYgKCEtLW1faGFzUGVuZGluZ0NhcHR1cmUpCiAgICAgICAgICAgICAgICAgVXNlck1l
ZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLnJldm9rZVNhbmRib3hFeHRlbnNpb25zSWZO
ZWVkZWQocGFnZSgpLnByb2Nlc3MoKSk7Ci0gICAgICAgIH0sIG1fcGFnZS53ZWJQYWdlSUQoKSk7
CisgICAgICAgIH0pOwogCiAgICAgICAgIHByb2Nlc3NOZXh0VXNlck1lZGlhUmVxdWVzdElmTmVl
ZGVkKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFj
a0ZvcndhcmRDYWNoZUVudHJ5LmNwcAppbmRleCBhZTU2ZTUzM2E2MC4uYzAwN2RmYTg2ZGEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRy
eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6On5XZWJC
YWNrRm9yd2FyZENhY2hlRW50cnkoKQogewogICAgIGlmIChtX2JhY2tGb3J3YXJkSXRlbUlEICYm
ICFtX3N1c3BlbmRlZFBhZ2UpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nl
c3MoKTsKLSAgICAgICAgcHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZShtX2JhY2tGb3J3YXJkSXRlbUlEKSwgW2FjdGl2aXR5ID0g
cHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIkNsZWFyaW5nIGJhY2svZm9y
d2FyZCBjYWNoZSBlbnRyeSJfcyldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2Fy
ZEl0ZW1JRCksIFtdIHsgfSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAppbmRleCBkYzJjZDY5NjM1MS4uNDAxODYw
ZDIwYzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdl
clByb3h5LmNwcApAQCAtMTAyLDkgKzEwMiw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpkZXJlZldlYkNvbnRleHRTdXBwbGVtZW50KCkKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIb3N0bmFtZXNXaXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikK
IHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5
ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmlu
Zz4mJiBob3N0bmFtZXMpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1v
dmUoaG9zdG5hbWVzKSk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2ll
cyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtMTIwLDcg
KzExOCw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFBB
TDo6U2Vzc2lvbklEIHNlc3Npb25JRCkKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0
byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVu
Y3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5
OjpkZWxldGVDb29raWUiX3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNl
c3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVu
Y3Rpb24pXSgpIG11dGFibGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7
CiB9CkBAIC0xMjgsNDEgKzEyNiwzMSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJgogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNz
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxs
Q29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxl
dGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZSJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmll
ZFNpbmNlKHNlc3Npb25JRCwgdGltZSksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQog
CiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBz
ZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1By
b2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRD
b29raWUoc2Vzc2lvbklELCBjb29raWVzKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9zKV0o
KSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAgIG5l
dHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6U2V0Q29va2llKHNlc3Npb25JRCwgY29va2llcyksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBV
UkwmIHVybCwgY29uc3QgVVJMJiBtYWluRG9jdW1lbnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0g
cHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tp
ZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCksIFtjYWxsYmFja0Z1
bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJv
Y2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6c2V0Q29va2llcyJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24o
KTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmws
IG1haW5Eb2N1bWVudFVSTCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25J
RCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZp
dHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNv
b2tpZU1hbmFnZXJQcm94eTo6Z2V0QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29v
a2llcykgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVz
KSk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0
Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCksIFtjYWxsYmFj
a0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3Jr
UHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6Z2V0Q29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7
Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7Ci0gICAgfSk7Cisg
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0
aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nv
b2tpZUNoYW5nZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMjMyLDE3ICsyMjAsMTMg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3ko
UEFMOjpTZXNzaW9uSUQsIEhUVFBDb29raWUKICNlbmRpZgogCiAgICAgYXV0byYgbmV0d29ya1By
b2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
U2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kiX3MpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGlj
eSksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwg
W2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9
IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2ll
TWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5Il9zKV0oSFRUUENvb2tpZUFj
Y2VwdFBvbGljeSBwb2xpY3kpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHBv
bGljeSk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCksIFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZGExZjc2YjRhLi4z
MzdhOGYwNzFiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0xMDE0MCw3ICsxMDE0MCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVn
cm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24oKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5n
JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFByb2Nlc3NEaXNwbGF5
TmFtZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1l
KCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnNldE9yaWVudGF0aW9uRm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9yaWVudGF0aW9uKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2FhOTk0YWM5
NTEuLjUyYmJhZjY3NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKQEAgLTQ2MCw5ICs0NjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5
UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGly
ZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
KTsKLSAgICB9KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCkBAIC0xMTA2
LDEwICsxMTA0LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NFUlQoY2FuU2Vu
ZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0
aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEiX3MpOwog
ICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwg
dGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVk
VGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkg
bXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpG
ZXRjaFdlYnNpdGVEYXRhKGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJl
ZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
IChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAg
ICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTExMjMsMTAgKzExMjAsOSBAQCB2b2lk
IFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBPcHRpb25TZXQ8V2VicwogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBB
U1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsK
IAotICAgIGF1dG8gYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lG
KGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQ
cm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUg
V2ViIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25u
ZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRl
V2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRl
RGF0YShkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVT
RURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTExNDAsMTAgKzExMzYsOSBAQCB2b2lkIFdlYlBy
b2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aQogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRf
VU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAg
IGF1dG8gYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nl
c3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xP
R19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ug
dGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmln
aW5zIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywg
b3JpZ2lucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5
ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3Jp
Z2lucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogI2lmIFJF
TEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICNlbmRpZgpA
QCAtMTMyNSw3ICsxMzIwLDcgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6
OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqIG9iamUKIAogdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50IGlz
U3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbklt
bWluZW50OjpZZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVu
c2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSwgMCwgeyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0
eTo6Tm8pOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUo
KQpAQCAtMTU0Niw3ICsxNTQxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENvbGxlY3RQ
cmV3YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb20KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAg
ICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
R2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRB
Y3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9y
TWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQpAQCAtMTY0Nyw3ICsxNjQyLDcgQEAgdm9pZCBXZWJQ
cm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAj
aWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlz
aFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250
ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdl
R3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2Vydmlj
ZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdv
cmtlclBhZ2VJRCwgc3RvcmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJ
bmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFthY3Rpdml0eSA9IG1fdGhyb3R0bGVy
LmJhY2tncm91bmRBY3Rpdml0eSgiRXN0YWJsaXNoIFNlcnZpY2UgV29ya2VyIl9zKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtl
ckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVs
dFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5z
ZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2
aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgKm1fcmVnaXN0cmFibGVEb21haW4sIG1fc2VydmljZVdv
cmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW2NvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVB
U0VfTE9HKExvYWRpbmcsICJXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0IGZpbmlzaGVkIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwg
MCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDUxYmY5
ZmRmYWE0Li40ZGI2OWFhZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmgKQEAgLTI0Miw3ICsyNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbmRvd1Nl
cnZlckNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRo
cm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYg
dGhyb3R0bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KIAogICAgIHZvaWQgaXNS
ZXNwb25zaXZlKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25z
aXZlKT4mJik7CiAgICAgdm9pZCBpc1Jlc3BvbnNpdmVXaXRoTGF6eVN0b3AoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY5YjQ5Mzlj
MTdlLi43NjYzMDRiZTE0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2Vi
UGFnZVByb3h5SU9TLm1tCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omlu
c2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxl
cjwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQ
bGFjZWhvbGRlcihjb25zdCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250
ZXh0JiBwbGFjZWhvbGRlciwgQ29tcAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBs
YWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vo
b2xkZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmlu
ZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9j
b3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9y
QXV0b2NvcnJlY3Rpb24KICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29y
cmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRl
eHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBj
b25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJp
bmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTIyMiw3
ICsxMjIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNl
bGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGNvbnMKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZN
b3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUGFnZTo6UmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1v
dmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldp
dGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMzIsNyArMTIz
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRf
dCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3Ro
RGVsdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aERl
bHRhKGxvY2F0aW9uRGVsdGEsIGxlbmd0aERlbHRhKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRl
eHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVx
dWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0
UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERvY3VtZW50RWRp
dGluZ0NvbnRleHQocmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0
RG9jdW1lbnRFZGl0aW5nQ29udGV4dChyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogfQogCiAjaWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMjcyLDcgKzEyNzIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNz
aW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQbwogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgT3B0aW9uYWw8
V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAg
ICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZElt
YWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
bV93ZWJQYWdlSUQpOworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6Okluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9LCBXVEY6Om51bGxvcHQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398653</attachid>
            <date>2020-05-06 13:53:56 -0700</date>
            <delta_ts>2020-05-06 14:00:07 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>209928_sendWithAsyncReply_takeActivity_wip.patch</filename>
            <type>text/plain</type>
            <size>41618</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDA5NDM3NDU5MTQ1Li5iNmZkZTE2MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTAsOCArMTUwLDE1IEBA
IGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29uc3QKICNlbmRp
ZgogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJiBhc3luY1JlcGx5SW5mbywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCiB7CisgICAgaWYgKGFzeW5j
UmVwbHlJbmZvICYmIGNhblNlbmRNZXNzYWdlKCkgJiYgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHkgPT0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcykg
eworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShhc3luY1Jl
cGx5SW5mby0+Zmlyc3QsIG51bGxwdHIpOworICAgICAgICBhc3luY1JlcGx5SW5mby0+Zmlyc3Qg
PSBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFs
OjpudWxsKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGVjb2Rlcik7CisgICAgICAgIH07CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0
ZSgpKSB7CiAgICAgY2FzZSBTdGF0ZTo6TGF1bmNoaW5nOgogICAgICAgICAvLyBJZiB3ZSdyZSB3
YWl0aW5nIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2gg
YXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUgYSBjb25u
ZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAppbmRleCA3YTI2OGM0YmI3OS4uNmE5ODk4MmNlYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0yOCw3ICsyOCw2IEBACiAj
aW5jbHVkZSAiQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIk1lc3NhZ2VSZWNlaXZlck1hcC5oIgog
I2luY2x1ZGUgIlByb2Nlc3NMYXVuY2hlci5oIgotCiAjaW5jbHVkZSA8V2ViQ29yZS9Qcm9jZXNz
SWRlbnRpZmllci5oPgogI2luY2x1ZGUgPHd0Zi9Qcm9jZXNzSUQuaD4KICNpbmNsdWRlIDx3dGYv
U3lzdGVtVHJhY2luZy5oPgpAQCAtMzYsNiArMzUsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsK
IAorY2xhc3MgUHJvY2Vzc1Rocm90dGxlcjsKKwogY2xhc3MgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5
IDogUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQsIHB1YmxpYyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dCB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5KTsKIApA
QCAtNDgsOSArNDksMTMgQEAgcHVibGljOgogICAgIHZvaWQgY29ubmVjdCgpOwogICAgIHZvaWQg
dGVybWluYXRlKCk7CiAKKyAgICB2aXJ0dWFsIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
ID0gMDsKKwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZChUJiYgbWVzc2FnZSwg
dWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9w
dGlvbnMgPSB7IH0pOwogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGJvb2wgc2VuZFN5bmMoVCYm
IG1lc3NhZ2UsIHR5cGVuYW1lIFQ6OlJlcGx5JiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIFNl
Y29uZHMgdGltZW91dCA9IDFfcywgT3B0aW9uU2V0PElQQzo6U2VuZFN5bmNPcHRpb24+IHNlbmRT
eW5jT3B0aW9ucyA9IHsgfSk7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4g
dm9pZCBzZW5kV2l0aEFzeW5jUmVwbHkoVCYmLCBDJiYsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQg
PSAwLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiA9IHsgfSk7CisKKyAgICBlbnVtIGNsYXNz
IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5IDogYm9vbCB7IE5vLCBZZXMgfTsK
KyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNS
ZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6
OlNlbmRPcHRpb24+ID0geyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9
IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpZZXMpOwogICAgIAogICAgIHRl
bXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFU+CiAgICAgYm9vbCBzZW5kKFQmJiBtZXNzYWdl
LCBPYmplY3RJZGVudGlmaWVyPFU+IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRP
cHRpb24+IHNlbmRPcHRpb25zID0geyB9KQpAQCAtMTA0LDcgKzEwOSw3IEBAIHB1YmxpYzoKICAg
ICBQcm9jZXNzSUQgcHJvY2Vzc0lkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX3Byb2Nlc3NM
YXVuY2hlciA/IG1fcHJvY2Vzc0xhdW5jaGVyLT5wcm9jZXNzSWRlbnRpZmllcigpIDogMDsgfQog
CiAgICAgYm9vbCBjYW5TZW5kTWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRlKCkgIT0gU3Rh
dGU6OlRlcm1pbmF0ZWQ7fQotICAgIGJvb2wgc2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQ
Qzo6RW5jb2Rlcj4sIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+LCBPcHRpb25hbDxzdGQ6OnBh
aXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2NF90Pj4mJiBh
c3luY1JlcGx5SW5mbyA9IFdURjo6bnVsbG9wdCk7CisgICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9w
dGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwg
dWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0LCBTaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9IFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5OjpZZXMpOwogCiAgICAgdm9pZCBzaHV0RG93blByb2Nlc3MoKTsKIApAQCAtMTcwLDcgKzE3
NSw3IEBAIGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kU3luYyhVJiYgbWVzc2FnZSwg
dHlwZW5hbWUgVTo6UmVwbHkmJiByZXBseSwgdWluCiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQs
IHR5cGVuYW1lIEM+Ci12b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1Jl
cGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0
aW9uSUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zKQordm9pZCBBdXhp
bGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYgbWVzc2FnZSwgQyYmIGNv
bXBsZXRpb25IYW5kbGVyLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpT
ZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCiB7CiAgICAgQ09NUElMRV9B
U1NFUlQoIVQ6OmlzU3luYywgQXN5bmNNZXNzYWdlRXhwZWN0ZWQpOwogCkBAIC0xODMsNyArMTg4
LDcgQEAgdm9pZCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseShUJiYg
bWVzc2FnZSwgQyYmIGNvbXBsZXRpb25IYW5kbGUKICAgICAgICAgICAgIFQ6OmNhbGxSZXBseSgq
ZGVjb2RlciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICBUOjpjYW5jZWxSZXBseShXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAg
fSwgbGlzdGVuZXJJRCB9fSk7CisgICAgfSwgbGlzdGVuZXJJRCB9fSwgc2hvdWxkU3RhcnRQcm9j
ZXNzVGhyb3R0bGVyQWN0aXZpdHkpOwogfQogICAgIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuY3BwCmluZGV4
IDYxNjA0ODFjMDE1Li5kMWUxMmFmZDRkYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEdQVVBy
b2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQ
cm9jZXNzUHJveHksCiAjZW5kaWYKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNwZW5zaW9u
LCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24g
YmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7
Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9j
ZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVhdGVHUFVD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVj
dGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7CiAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5OjpnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1cmluZyBj
b25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBseSh7IH0p
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94
eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCmluZGV4
IDMzYjNlMjcxMWM1Li41ZjE2NzYyMjZhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0dQVS9HUFVQcm9jZXNzUHJveHkuaApAQCAtNTcsNyArNTcsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIGdldEdQVVByb2Nlc3NDb25uZWN0aW9uKFdlYlByb2Nlc3NQcm94eSYsIE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkdldEdQVVByb2Nlc3NDb25uZWN0aW9uRGVsYXllZFJlcGx5JiYpOwog
Ci0gICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyByZXR1cm4gbV90aHJvdHRsZXI7
IH0KKyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Ro
cm90dGxlcjsgfQogICAgIHZvaWQgdXBkYXRlUHJvY2Vzc0Fzc2VydGlvbigpOwogCiAgICAgLy8g
UHJvY2Vzc1Rocm90dGxlckNsaWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKaW5kZXggNTAyOTg4YWU1NWUuLmYw
NjMzNjVhYjliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05l
dHdvcmtQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnByb2Nlc3NXaWxsU2h1dERvd24oSVBDOjpDb25uZWN0aW9uJiBjb25u
ZWN0aW9uKQogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5l
Y3Rpb24oV2ViUHJvY2Vzc1Byb3h5JiB3ZWJQcm9jZXNzUHJveHksIE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzUHJveHk6OkdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5JiYgcmVw
bHkpCiB7CiAgICAgUkVMRUFTRV9MT0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIE5ldHdvcmtQ
cm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSBhIHdl
YiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwgdGhpcyk7Ci0gICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6Q3JlYXRlTmV0d29ya0Nvbm5l
Y3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJveHkuY29yZVByb2Nlc3NJZGVudGlmaWVy
KCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShyZXBseSksIGFjdGl2aXR5ID0gdGhyb3R0
bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpnZXROZXR3b3Jr
UHJvY2Vzc0Nvbm5lY3Rpb24iX3MpXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZpZXIsIGF1dG8g
Y29va2llQWNjZXB0UG9saWN5KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2Vz
cyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1By
b3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwg
cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KV0oYXV0byYmIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBhdXRv
IGNvb2tpZUFjY2VwdFBvbGljeSkgbXV0YWJsZSB7CiAgICAgICAgIGlmICghd2Vha1RoaXMpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJOZXR3b3JrUHJvY2Vzc1By
b3h5OjpnZXROZXR3b3JrUHJvY2Vzc0Nvbm5lY3Rpb246IE5ldHdvcmtQcm9jZXNzUHJveHkgZGVh
bGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCIpOwogICAgICAgICAgICAg
cmV0dXJuIHJlcGx5KHsgfSk7CkBAIC04NDksNyArODQ5LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRHcmFuZGZhdGhlcmVkKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
UmVnaXMKIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRVc2VJVFBEYXRhYmFzZShQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIGJvb2wgdmFsdWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRVc2VJVFBEYXRhYmFzZShzZXNzaW9uSUQsIHZhbHVlKSwg
W2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRVc2VJVFBEYXRhYmFzZSJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0VXNlSVRQRGF0YWJhc2Uoc2Vzc2lvbklELCB2
YWx1ZSksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAt
OTgyLDcgKzk4Miw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFn
ZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhQQUw6OlNlc3Npb25JCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJv
Y2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQp
LCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9j
ZXNzUHJveHk6OnJlc2V0Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMiX3MpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
eworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJlc2V0
Q2FjaGVNYXhBZ2VDYXBGb3JQcmV2YWxlbnRSZXNvdXJjZXMoc2Vzc2lvbklEKSwgW2NvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC05OTQsNyArOTk0LDcgQEAg
dm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFtZXRlcnNUb0RlZmF1bHRWYWx1ZXMo
UEFMOjpTZXNzaW9uSUQgc2Vzc2lvbkkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldFBhcmFt
ZXRlcnNUb0RlZmF1bHRWYWx1ZXMoc2Vzc2lvbklEKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldFBhcmFtZXRlcnNU
b0RlZmF1bHRWYWx1ZXMiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
TmV0d29ya1Byb2Nlc3M6OlJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhzZXNzaW9uSUQp
LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRh
YmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTEwMTYs
NyArMTAxNiw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVt
b3J5QW5kUGVyc2lzdGVudChQQUw6OlNlc3Npb25JRCBzZXNzCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpT
Y2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgeyB9LCBzaG91bGRH
cmFuZGZhdGhlciksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudCJf
cyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0
YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6
U2NoZWR1bGVDbGVhckluTWVtb3J5QW5kUGVyc2lzdGVudChzZXNzaW9uSUQsIHsgfSwgc2hvdWxk
R3JhbmRmYXRoZXIpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsK
IH0KQEAgLTEwOTYsNyArMTA5Niw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRD
cm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRlc3RpbmcoUEFMOjpTCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZvclRl
c3Rpbmcoc2Vzc2lvbklEKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRDcm9zc1NpdGVMb2Fkc1dpdGhMaW5rRGVjb3JhdGlvbkZv
clRlc3Rpbmcoc2Vzc2lvbklEKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CiB9CkBAIC0xMTM4LDcgKzExMzgsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6
Omhhc0lzb2xhdGVkU2Vzc2lvbihQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFJlZwog
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNl
TG9hZFN0YXRpc3RpY3MoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBIYXNoU2V0PFJl
Z2lzdHJhYmxlRG9tYWluPiYgYXBwQm91bmREb21haW5zLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3Rh
dGlzdGljcyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmRE
b21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0QXBwQm91bmREb21haW5zRm9yUmVz
b3VyY2VMb2FkU3RhdGlzdGljcyhzZXNzaW9uSUQsIGFwcEJvdW5kRG9tYWlucyksIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtMTE1MCwyMyArMTE1MCwy
MSBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhib29sIGVuYWJsZWQsIENvbQogICAgICAgICByZXR1cm47CiAgICAgfQogICAg
IAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNo
b3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyhlbmFibGVkKSwgW2FjdGl2aXR5ID0gdGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91
bGREb3duZ3JhZGVSZWZlcnJlckZvclRlc3RpbmciX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFNob3VsZERvd25ncmFkZVJlZmVycmVy
Rm9yVGVzdGluZyhlbmFibGVkKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAg
ICAgfSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tp
ZUJsb2NraW5nTW9kZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFRoaXJkUGFydHlDb29raWVC
bG9ja2luZ01vZGUgYmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3
b3JrUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShzZXNzaW9uSUQsIGJs
b2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
TmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSJfcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0
VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShzZXNzaW9uSUQsIGJsb2NraW5nTW9kZSksIFtj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUg
ewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQogCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZv
clRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXZWJDb3JlOjpTYW1lU2l0ZVN0cmlj
dEVuZm9yY2VtZW50RW5hYmxlZCBlbmFibGVkLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9y
VGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFNob3VsZEVuYmxlU2FtZVNp
dGVTdHJpY3RFbmZvcmNlbWVudEZvclRlc3RpbmciX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwotICAgIH0pOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldFNob3VsZEVuYmxlU2FtZVNpdGVTdHJpY3RFbmZvcmNlbWVudEZvclRl
c3Rpbmcoc2Vzc2lvbklELCBlbmFibGVkKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
fQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJl
bW92YWxNb2RlRm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIEZpcnN0UGFydHlX
ZWJzaXRlRGF0YVJlbW92YWxNb2RlIG1vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKQEAgLTExNzYsOSArMTE3NCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBB
TDo6U2VzCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFs
TW9kZUZvclRlc3Rpbmcoc2Vzc2lvbklELCBtb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vi
c2l0ZURhdGFSZW1vdmFsTW9kZUZvclRlc3RpbmciX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwotICAgIH0pOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0
d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGlu
ZyhzZXNzaW9uSUQsIG1vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0VG9TYW1lU2l0ZVN0cmljdENvb2tpZXNGb3JUZXN0
aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIGRv
bWFpbiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAt
MTIwOCw3ICsxMjA0LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc1dp
bGxTdXNwZW5kSW1taW5lbnRseUZvclRlc3RpbmcoKQogICAgIAogdm9pZCBOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCBpc1N1c3Bl
bnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6
OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1t
aW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpQcmVwYXJlVG9TdXNwZW5kKGlzU3Vz
cGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSwgMCwgeyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rp
dml0eTo6Tm8pOwogfQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlk
UmVzdW1lKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsvTmV0
d29ya1Byb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3
b3JrUHJvY2Vzc1Byb3h5LmgKaW5kZXggNzFlZTNiZjQ5YTAuLjIzYjllYWMzM2UxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHku
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJv
eHkuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQcm9jZXNzSW5j
b21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdlUHJveHlJZGVu
dGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nlc3NJbmNvbWlu
Z1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5JiYpOwogICAg
IHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3NlcyhXZWJDb3Jl
OjpQcm9jZXNzSWRlbnRpZmllcik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIo
KSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxl
cigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNz
QXNzZXJ0aW9uKCk7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSB7IHJldHVy
biBtX3Byb2Nlc3NQb29sOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzRiZTE2NmFmOWQuLjdkOWQ5YjI4
NmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVn
aW5Qcm9jZXNzUHJveHkuY3BwCkBAIC02Miw3ICs2Miw4IEBAIFJlZjxQbHVnaW5Qcm9jZXNzUHJv
eHk+IFBsdWdpblByb2Nlc3NQcm94eTo6Y3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBQbHVn
aW5QCiB9CiAKIFBsdWdpblByb2Nlc3NQcm94eTo6UGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblBy
b2Nlc3NNYW5hZ2VyKiBQbHVnaW5Qcm9jZXNzTWFuYWdlciwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMmIHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNz
VG9rZW4pCi0gICAgOiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdpblByb2Nlc3NNYW5hZ2Vy
KQorICAgIDogbV90aHJvdHRsZXIoKnRoaXMsIGZhbHNlKQorICAgICwgbV9wbHVnaW5Qcm9jZXNz
TWFuYWdlcihQbHVnaW5Qcm9jZXNzTWFuYWdlcikKICAgICAsIG1fcGx1Z2luUHJvY2Vzc0F0dHJp
YnV0ZXMocGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMpCiAgICAgLCBtX3BsdWdpblByb2Nlc3NUb2tl
bihwbHVnaW5Qcm9jZXNzVG9rZW4pCiAgICAgLCBtX251bVBlbmRpbmdDb25uZWN0aW9uUmVxdWVz
dHMoMCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2lu
UHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblBy
b2Nlc3NQcm94eS5oCmluZGV4IGFmMjIzZGJkOTU3Li5mOWI2NzFlOGE3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oCkBA
IC02MSw3ICs2MSw3IEBAIGludCBwbHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdp
blByb2Nlc3NUaHJvdWdocHV0UU9TKCk7CiAjZW5kaWYKIAotY2xhc3MgUGx1Z2luUHJvY2Vzc1By
b3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NQcm94eT4geworY2xhc3MgUGx1Z2luUHJvY2Vzc1By
b3h5IGZpbmFsIDogcHVibGljIEF1eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNh
ZmVSZWZDb3VudGVkPFBsdWdpblByb2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxl
ckNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNy
ZWF0ZShQbHVnaW5Qcm9jZXNzTWFuYWdlciosIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVz
JiwgdWludDY0X3QgcGx1Z2luUHJvY2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5
KCk7CkBAIC04Nyw2ICs4Nyw4IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2lu
KGNvbnN0IFN0cmluZyYgcGx1Z2luUGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCk7CiAj
ZW5kaWYKIAorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJu
IG1fdGhyb3R0bGVyOyB9CisKIHByaXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdp
blByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmLCB1aW50NjRf
dCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogCkBAIC05OSw2ICsxMDEsMTEgQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcGx1Z2luUHJvY2Vzc0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKKyAgICAv
LyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZChJ
c1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7
IH0KKyAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmluYWwgeyB9CisgICAgdm9pZCBk
aWRTZXRBc3NlcnRpb25TdGF0ZShBc3NlcnRpb25TdGF0ZSkgZmluYWwgeyB9CisKICAgICAvLyBJ
UEM6OkNvbm5lY3Rpb246OkNsaWVudAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpD
b25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZl
U3luY01lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVf
cHRyPElQQzo6RW5jb2Rlcj4mKSBvdmVycmlkZTsKQEAgLTEzNyw2ICsxNDQsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCBwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRlcnMpOwogCisgICAgUHJvY2Vzc1Rocm90dGxl
ciBtX3Rocm90dGxlcjsKKwogICAgIC8vIFRoZSBwbHVnLWluIGhvc3QgcHJvY2VzcyBtYW5hZ2Vy
LgogICAgIFBsdWdpblByb2Nlc3NNYW5hZ2VyKiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggOGEyMTJlNTA3
NTUuLjA5ZDZkMzI2NzZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90
dGxlci5oCkBAIC02NSw4ICs2NSwxMCBAQCBwdWJsaWM6CiAgICAgICAgICAgICAsIG1fbmFtZShu
YW1lKQogICAgICAgICB7CiAgICAgICAgICAgICB0aHJvdHRsZXIuYWRkQWN0aXZpdHkoKnRoaXMp
OwotICAgICAgICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygiQWN0
aXZpdHk6IFN0YXJ0aW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIgUFVC
TElDX0xPR19TVFJJTkcgIiciLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBl
OjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFj
dGVycygpKTsKKyAgICAgICAgICAgIGlmICghaXNRdWlldEFjdGl2aXR5KCkpIHsKKyAgICAgICAg
ICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJBY3Rpdml0eTog
U3RhcnRpbmcgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNfTE9H
X1NUUklORyAiJyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpG
b3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFjdGVy
cygpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIH5BY3Rpdml0eSgpCkBA
IC04MCwxMSArODIsMTUgQEAgcHVibGljOgogICAgIHByaXZhdGU6CiAgICAgICAgIGZyaWVuZCBj
bGFzcyBQcm9jZXNzVGhyb3R0bGVyOwogCisgICAgICAgIGJvb2wgaXNRdWlldEFjdGl2aXR5KCkg
Y29uc3QgeyByZXR1cm4gIW1fbmFtZS5jaGFyYWN0ZXJzKCk7IH0KKwogICAgICAgICB2b2lkIGlu
dmFsaWRhdGUoKQogICAgICAgICB7CiAgICAgICAgICAgICBBU1NFUlQoaXNWYWxpZCgpKTsKLSAg
ICAgICAgICAgIFBST0NFU1NUSFJPVFRMRVJfQUNUSVZJVFlfUkVMRUFTRV9MT0coImludmFsaWRh
dGU6IEVuZGluZyAlIiBQVUJMSUNfTE9HX1NUUklORyAiIGFjdGl2aXR5IC8gJyUiIFBVQkxJQ19M
T0dfU1RSSU5HICInIiwKLSAgICAgICAgICAgICAgICB0eXBlID09IEFjdGl2aXR5VHlwZTo6Rm9y
ZWdyb3VuZCA/ICJmb3JlZ3JvdW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9uYW1lLmNoYXJhY3RlcnMo
KSk7CisgICAgICAgICAgICBpZiAoIWlzUXVpZXRBY3Rpdml0eSgpKSB7CisgICAgICAgICAgICAg
ICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygiaW52YWxpZGF0ZTogRW5k
aW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIgUFVCTElDX0xPR19TVFJJ
TkcgIiciLAorICAgICAgICAgICAgICAgICAgICB0eXBlID09IEFjdGl2aXR5VHlwZTo6Rm9yZWdy
b3VuZCA/ICJmb3JlZ3JvdW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9uYW1lLmNoYXJhY3RlcnMoKSk7
CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBtX3Rocm90dGxlci0+cmVtb3ZlQWN0aXZpdHko
KnRoaXMpOwogICAgICAgICAgICAgbV90aHJvdHRsZXIgPSBudWxscHRyOwogICAgICAgICB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQ
ZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggOTE1NTM5ZmQ4ZDcuLmNjZWI2
MWYxNGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJt
aXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yNjAsMTIg
KzI2MCwxMiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Ojpm
aW5pc2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVybQogICAgICAgICB9CiAjZW5kaWYKIAot
ICAgICAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51
c2VyTWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2Uo
KSwgcmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSwgaGFuZGxlIH0sIFt0aGlzLCB3
ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgIG1fcGFnZS5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyBy
ZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRl
b0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpLCBoYW5kbGUgfSwg
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAgICAgIGlmICgh
d2Vha1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCEtLW1f
aGFzUGVuZGluZ0NhcHR1cmUpCiAgICAgICAgICAgICAgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFn
ZXI6OnNpbmdsZXRvbigpLnJldm9rZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQocGFnZSgpLnBy
b2Nlc3MoKSk7Ci0gICAgICAgIH0sIG1fcGFnZS53ZWJQYWdlSUQoKSk7CisgICAgICAgIH0pOwog
CiAgICAgICAgIHByb2Nlc3NOZXh0VXNlck1lZGlhUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgfSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5LmNwcAppbmRleCBhZTU2ZTUzM2E2MC4uYzAwN2RmYTg2ZGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcApAQCAtNTAs
NyArNTAsNyBAQCBXZWJCYWNrRm9yd2FyZENhY2hlRW50cnk6On5XZWJCYWNrRm9yd2FyZENhY2hl
RW50cnkoKQogewogICAgIGlmIChtX2JhY2tGb3J3YXJkSXRlbUlEICYmICFtX3N1c3BlbmRlZFBh
Z2UpIHsKICAgICAgICAgYXV0byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKLSAgICAgICAg
cHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2Fj
aGVkUGFnZShtX2JhY2tGb3J3YXJkSXRlbUlEKSwgW2FjdGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIkNsZWFyaW5nIGJhY2svZm9yd2FyZCBjYWNoZSBlbnRy
eSJfcyldIHsgfSk7CisgICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFtdIHsg
fSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJD
b29raWVNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2ll
TWFuYWdlclByb3h5LmNwcAppbmRleCBkYzJjZDY5NjM1MS4uNDAxODYwZDIwYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApAQCAt
MTAyLDkgKzEwMiw3IEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZXJlZldlYkNvbnRl
eHRTdXBwbGVtZW50KCkKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNX
aXRoQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoVmVjdG9yPFN0cmluZz4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBu
ZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0g
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5j
dGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nl
c3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6
OmdldEhvc3RuYW1lc1dpdGhDb29raWVzIl9zKV0oVmVjdG9yPFN0cmluZz4mJiBob3N0bmFtZXMp
IG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1vdmUoaG9zdG5hbWVzKSk7
Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpHZXRIb3N0bmFtZXNXaXRoQ29va2llcyhzZXNzaW9uSUQpLCBX
VEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUNvb2tpZXNGb3JIb3N0bmFtZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaG9zdG5hbWVzKQpAQCAtMTIwLDcgKzExOCw3IEBAIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCkKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmIGNvb2tpZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nl
c3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQ
cm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVs
ZXRlQ29va2llKHNlc3Npb25JRCwgY29va2llKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUi
X3MpXSgpIG11dGFibGUgeworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQ29va2llKHNlc3Npb25JRCwgY29va2ll
KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pXSgpIG11dGFi
bGUgewogICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7CiAgICAgfSk7CiB9CkBAIC0xMjgsNDEg
KzEyNiwzMSBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgQ29va2llJgogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCwgV2FsbFRpbWUgdGltZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5l
bnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVk
U2luY2Uoc2Vzc2lvbklELCB0aW1lKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxDb29raWVzTW9k
aWZpZWRTaW5jZSJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsK
LSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25J
RCwgdGltZSksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0
IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2Fs
bGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29s
KCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklE
LCBjb29raWVzKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9zKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNl
c3Npb25JRCwgY29va2llcyksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IFZlY3RvcjxDb29raWU+JiBjb29raWVzLCBjb25zdCBVUkwmIHVybCwgY29uc3Qg
VVJMJiBtYWluRG9jdW1lbnRVUkwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFj
a0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+
ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBj
b29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVSTCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92
ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIo
KS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0Q29va2llcyJf
cyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKLSAgICB9KTsKKyAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OlNldENvb2tpZXMoc2Vzc2lvbklELCBjb29raWVzLCB1cmwsIG1haW5Eb2N1bWVudFVS
TCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Z2V0QWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsK
ICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQ
cm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJDb29raWVNYW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1
bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJv
Y2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94
eTo6Z2V0QWxsQ29va2llcyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7
Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7Ci0gICAgfSk7Cisg
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpHZXRBbGxDb29raWVzKHNlc3Npb25JRCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
bikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2llcyhQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFVSTCYgdXJsLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFZlY3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0
d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAg
IG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVybCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0Q29va2ll
cyJfcyldKFZlY3RvcjxDb29raWU+JiYgY29va2llcykgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oV1RGTW92ZShjb29raWVzKSk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nl
c3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29r
aWVzKHNlc3Npb25JRCwgdXJsKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZv
aWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzdGFydE9ic2VydmluZ0Nvb2tpZUNoYW5nZXMoUEFM
OjpTZXNzaW9uSUQgc2Vzc2lvbklEKQpAQCAtMjMyLDE3ICsyMjAsMTMgQEAgdm9pZCBXZWJDb29r
aWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3koUEFMOjpTZXNzaW9uSUQs
IEhUVFBDb29raWUKICNlbmRpZgogCiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNz
UG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeShwb2xpY3kpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3kiX3MpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Ci0gICAgfSk7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIVFRQQ29va2llQWNjZXB0UG9saWN5KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1
dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3Mo
KTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNv
b2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgW2NhbGxiYWNrRnVuY3Rp
b24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNz
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5Il9zKV0oSFRUUENvb2tpZUFjY2VwdFBvbGljeSBwb2xp
Y3kpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKHBvbGljeSk7Ci0gICAgfSk7
CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29r
aWVNYW5hZ2VyOjpHZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KCksIFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbikpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDUyZGExZjc2YjRhLi4zMzdhOGYwNzFiNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE0MCw3ICsxMDE0
MCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZv
ckNsaWVudE5hdmlnYXRpb24oKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UHJvY2Vz
c0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFByb2Nlc3NEaXNwbGF5TmFtZSgpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE9yaWVudGF0aW9u
Rm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2FhOTk0YWM5NTEuLjUyYmJhZjY3NTU3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTQ2
MCw5ICs0NjAsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NU
ZWxlbWV0cnlGaW5pc2hlZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxv
Y2tpbmdNb2RlIHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUodGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tn
cm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpKTsKIH0KICNlbmRpZgogCkBAIC0xMTA2LDEwICsxMTA0LDkgQEAg
dm9pZCBXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklELCBPcHRpb25TZXQ8V2Vic2kKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAg
ICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQo
KSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9H
X0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBX
ZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0
aGUgV2ViIHByb2Nlc3MgaXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBj
b25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0
Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRh
KGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBt
dXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0o
dGhpcyk7CiAjZW5kaWYKQEAgLTExMjMsMTAgKzExMjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94
eTo6ZGVsZXRlV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8
V2VicwogICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNl
c3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0
aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6
ZGVsZXRlV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dp
bmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMg
dGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMg
ZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0
YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0
aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShkYXRhVHlwZXMs
IG1vZGlmaWVkU2luY2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBj
b21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxl
IHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7
CiAjZW5kaWYKQEAgLTExNDAsMTAgKzExMzYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVs
ZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aQog
ICAgIEFTU0VSVChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25J
RCwgc2Vzc2lvbklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VM
b2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5
IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNz
IGlzIGRlbGV0aW5nIFdlYnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAK
LSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vz
czo6RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rp
dml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
RGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FC
TEVECiAgICAgICAgIFVOVVNFRF9QQVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTMyNSw3ICsxMzIw
LDcgQEAgUmVmUHRyPEFQSTo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXMoQVBJOjpPYmplY3QqIG9iamUKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNl
bmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50IGlzU3VzcGVuc2lvbkltbWlu
ZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcmVwYXJlVG9TdXNw
ZW5kKGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQcm9jZXNzOjpQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWluZW50ID09
IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwg
MCwgeyB9LCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6Tm8pOwogfQogCiB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQpAQCAtMTU0Niw3ICsx
NTQxLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRp
b24oY29uc3QgV2ViQ29yZTo6UmVnaXN0cmFibGVEb20KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8U3RyaW5nPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb25uZWN0aW9uKCkt
PnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNP
cmlnaW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3RpdmVQYWdlc09yaWdp
bnNGb3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0
IFVSTCYgdXJsKQpAQCAtMTY0Nyw3ICsxNjQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVu
ZEJhY2tncm91bmRBY3Rpdml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAjaWYgRU5BQkxFKFNFUlZJ
Q0VfV09SS0VSKQogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJD
b250ZXh0KGNvbnN0IFdlYlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRv
TmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3Jv
dXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94
eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3Rv
cmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5p
dGlhbGl6YXRpb25EYXRhIH0sIFthY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rp
dml0eSgiRXN0YWJsaXNoIFNlcnZpY2UgV29ya2VyIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0
aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBh
Z2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlE
LCBzdG9yZSwgKm1fcmVnaXN0cmFibGVEb21haW4sIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9u
LT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcs
ICJXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0IGZpbmlzaGVk
Iik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4IDUxYmY5ZmRmYWE0Li40ZGI2OWFh
ZGVlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTI0
Miw3ICsyNDIsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHdpbmRvd1NlcnZlckNvbm5lY3Rpb25T
dGF0ZUNoYW5nZWQoKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0
dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmlu
YWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KIAogICAgIHZvaWQgaXNSZXNwb25zaXZlKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoYm9vbCBpc1dlYlByb2Nlc3NSZXNwb25zaXZlKT4mJik7CiAgICAg
dm9pZCBpc1Jlc3BvbnNpdmVXaXRoTGF6eVN0b3AoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCmluZGV4IGY5YjQ5MzljMTdlLi43NjYzMDRiZTE0
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1t
CkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFjZWhv
bGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJ
bnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
LCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25z
dCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRl
ciwgQ29tcAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xkZXIgeyBwbGFjZWhv
bGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9j
b3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+
JiYgY2FsbGJhY2spCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVl
c3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24K
ICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1v
dmUoY2FsbGJhY2spLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVj
dGlvbiksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5
QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9y
aWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jh
c2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSwg
bV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6
UmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90
IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRh
LCBpbnQ2NF90IGxlbmd0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3Mt
PmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRh
dGVTZWxlY3Rpb25XaXRoRGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9uRGVs
dGEsIGxlbmd0aERlbHRhKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lk
IFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBA
IC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRp
dGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UgogICAgICAgICByZXR1
cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQocmVx
dWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5n
Q29udGV4dChyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjaWYg
RU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBv
aW50JiBjbGllbnRQbwogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNl
aG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dElu
ZGljYXRvckRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoaGFzUnVubmlu
Z1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJz
KGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOwor
ICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3Bw
ZWRJbWFnZVBsYWNlaG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxv
cHQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398654</attachid>
            <date>2020-05-06 14:00:07 -0700</date>
            <delta_ts>2020-05-06 15:04:00 -0700</delta_ts>
            <desc>WIP Patch</desc>
            <filename>209928_sendWithAsyncReply_takeActivity_wip.patch</filename>
            <type>text/plain</type>
            <size>41626</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3Bw
CmluZGV4IDA5NDM3NDU5MTQ1Li5iNmZkZTE2MzJmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwCkBAIC0xNTAsOCArMTUwLDE1IEBA
IGJvb2wgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Ojp3YXNUZXJtaW5hdGVkKCkgY29uc3QKICNlbmRp
ZgogfQogCi1ib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZE1lc3NhZ2Uoc3RkOjp1bmlx
dWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4g
c2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQ
Qzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvKQorYm9vbCBBdXhpbGlh
cnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+
IGVuY29kZXIsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBPcHRpb25h
bDxzdGQ6OnBhaXI8Q29tcGxldGlvbkhhbmRsZXI8dm9pZChJUEM6OkRlY29kZXIqKT4sIHVpbnQ2
NF90Pj4mJiBhc3luY1JlcGx5SW5mbywgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZp
dHkgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkpCiB7CisgICAgaWYgKGFzeW5j
UmVwbHlJbmZvICYmIGNhblNlbmRNZXNzYWdlKCkgJiYgc2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0
bGVyQWN0aXZpdHkgPT0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcykg
eworICAgICAgICBhdXRvIGNvbXBsZXRpb25IYW5kbGVyID0gc3RkOjpleGNoYW5nZShhc3luY1Jl
cGx5SW5mby0+Zmlyc3QsIG51bGxwdHIpOworICAgICAgICBhc3luY1JlcGx5SW5mby0+Zmlyc3Qg
PSBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoQVNDSUlMaXRlcmFs
OjpudWxsKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XShJUEM6OkRlY29kZXIqIGRlY29kZXIpIG11dGFibGUgeworICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoZGVjb2Rlcik7CisgICAgICAgIH07CisgICAgfQorCiAgICAgc3dpdGNoIChzdGF0
ZSgpKSB7CiAgICAgY2FzZSBTdGF0ZTo6TGF1bmNoaW5nOgogICAgICAgICAvLyBJZiB3ZSdyZSB3
YWl0aW5nIGZvciB0aGUgY2hpbGQgcHJvY2VzcyB0byBsYXVuY2gsIHdlIG5lZWQgdG8gc3Rhc2gg
YXdheSB0aGUgbWVzc2FnZXMgc28gd2UgY2FuIHNlbmQgdGhlbSBvbmNlIHdlIGhhdmUgYSBjb25u
ZWN0aW9uLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJv
Y2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJv
eHkuaAppbmRleCA3YTI2OGM0YmI3OS4uYzVkNzJlZGU0MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw4IEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCitjbGFzcyBQcm9jZXNzVGhyb3R0bGVyOworCiBjbGFzcyBB
dXhpbGlhcnlQcm9jZXNzUHJveHkgOiBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgcHVibGljIElQ
Qzo6Q29ubmVjdGlvbjo6Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXhpbGlh
cnlQcm9jZXNzUHJveHkpOwogCkBAIC00OCw5ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBj
b25uZWN0KCk7CiAgICAgdm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIHZpcnR1YWwgUHJvY2Vzc1Ro
cm90dGxlciYgdGhyb3R0bGVyKCkgPSAwOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9v
bCBzZW5kKFQmJiBtZXNzYWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBD
OjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
VD4gYm9vbCBzZW5kU3luYyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0
X3QgZGVzdGluYXRpb25JRCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpT
ZW5kU3luY09wdGlvbj4gc2VuZFN5bmNPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBl
bmFtZSBULCB0eXBlbmFtZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWlu
dDY0X3QgZGVzdGluYXRpb25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9
KTsKKworICAgIGVudW0gY2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkg
OiBib29sIHsgTm8sIFllcyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+
IHZvaWQgc2VuZFdpdGhBc3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklE
ID0gMCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vz
c1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6
Olllcyk7CiAgICAgCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBi
b29sIHNlbmQoVCYmIG1lc3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwg
T3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBAIC0xMDQsNyAr
MTEwLDcgQEAgcHVibGljOgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1fcHJvY2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJ
ZGVudGlmaWVyKCkgOiAwOyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyBy
ZXR1cm4gc3RhdGUoKSAhPSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2Fn
ZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlv
bj4sIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2Rl
ciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0KTsKKyAgICBi
b29sIHNlbmRNZXNzYWdlKHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8
SVBDOjpTZW5kT3B0aW9uPiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSVBDOjpEZWNvZGVyKik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBXVEY6Om51
bGxvcHQsIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQ
cm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAKICAgICB2b2lkIHNodXREb3duUHJvY2Vz
cygpOwogCkBAIC0xNzAsNyArMTc2LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRTeW5jKFUmJiBtZXNzYWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW4KIH0KIAog
dGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1By
b3h5OjpzZW5kV2l0aEFzeW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxl
ciwgdWludDY0X3QgZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2Vu
ZE9wdGlvbnMpCit2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9u
SUQsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBTaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0
eSkKIHsKICAgICBDT01QSUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3Rl
ZCk7CiAKQEAgLTE4Myw3ICsxODksNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2Vu
ZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZQogICAgICAg
ICAgICAgVDo6Y2FsbFJlcGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7
CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpKTsKLSAgICB9LCBsaXN0ZW5lcklEIH19KTsKKyAgICB9LCBsaXN0ZW5lcklE
IH19LCBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSk7CiB9CiAgICAgCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQ
VS9HUFVQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVBy
b2Nlc3NQcm94eS5jcHAKaW5kZXggNjE2MDQ4MWMwMTUuLmQxZTEyYWZkNGRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTgzLDcg
KzE4Myw3IEBAIHZvaWQgR1BVUHJvY2Vzc1Byb3h5OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihX
ZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwKICNlbmRpZgogCiAgICAgUkVMRUFTRV9M
T0coUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIEdQVVByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBi
YWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBh
IGNvbm5lY3Rpb24iLCB0aGlzKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQ
VVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJv
eHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShy
ZXBseSksIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJHUFVQcm9j
ZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uIl9zKV0oYXV0byYmIGNvbm5lY3Rpb25J
ZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OkdQ
VVByb2Nlc3M6OkNyZWF0ZUdQVUNvbm5lY3Rpb25Ub1dlYlByb2Nlc3MgeyB3ZWJQcm9jZXNzUHJv
eHkuY29yZVByb2Nlc3NJZGVudGlmaWVyKCksIHdlYlByb2Nlc3NQcm94eS5zZXNzaW9uSUQoKSB9
LCBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cigqdGhpcyksIHJlcGx5ID0gV1RGTW92ZShy
ZXBseSldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0YWJsZSB7CiAgICAgICAgIGlm
ICghd2Vha1RoaXMpIHsKICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9SKFByb2Nlc3MsICJH
UFVQcm9jZXNzUHJveHk6OmdldEdQVVByb2Nlc3NDb25uZWN0aW9uOiBHUFVQcm9jZXNzUHJveHkg
ZGVhbGxvY2F0ZWQgZHVyaW5nIGNvbm5lY3Rpb24gZXN0YWJsaXNobWVudCIpOwogICAgICAgICAg
ICAgcmV0dXJuIHJlcGx5KHsgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BV
UHJvY2Vzc1Byb3h5LmgKaW5kZXggMzNiM2UyNzExYzUuLjVmMTY3NjIyNmFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5oCkBAIC01Nyw3ICs1Nyw3
IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgZ2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vz
c1Byb3h5JiwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0R1BVUHJvY2Vzc0Nvbm5lY3Rp
b25EZWxheWVkUmVwbHkmJik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSB7
IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigp
IGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRhdGVQcm9jZXNzQXNz
ZXJ0aW9uKCk7CiAKICAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xpZW50CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApp
bmRleCA1MDI5ODhhZTU1ZS4uZjA2MzM2NWFiOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI4LDcg
KzEyOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJ
UEM6OkNvbm5lY3Rpb24mIGNvbm5lY3Rpb24pCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94
eSwgTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9u
OjpEZWxheWVkUmVwbHkmJiByZXBseSkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVu
c2lvbiwgIiVwIC0gTmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFz
c2VydGlvbiBiZWNhdXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24i
LCB0aGlzKTsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNz
OjpDcmVhdGVOZXR3b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5j
b3JlUHJvY2Vzc0lkZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0
aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5
KSwgYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9j
ZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0
aW9uSWRlbnRpZmllciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgeworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtD
b25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRp
ZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVj
dGlvbklkZW50aWZpZXIsIGF1dG8gY29va2llQWNjZXB0UG9saWN5KSBtdXRhYmxlIHsKICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2Vz
cywgIk5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjogTmV0
d29ya1Byb2Nlc3NQcm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2ht
ZW50Iik7CiAgICAgICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTg0OSw3ICs4NDksNyBA
QCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBjb25zdCBSZWdpcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNl
dFVzZUlUUERhdGFiYXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFVzZUlUUERhdGFiYXNl
KHNlc3Npb25JRCwgdmFsdWUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlIl9zKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRVc2VJVFBE
YXRhYmFzZShzZXNzaW9uSUQsIHZhbHVlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVy
KCk7CiAgICAgfSk7CiB9CkBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1By
b3h5OjpyZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lv
bkkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50
UmVzb3VyY2VzKHNlc3Npb25JRCksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRB
Y3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZh
bGVudFJlc291cmNlcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhz
ZXNzaW9uSUQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0K
QEAgLTk5NCw3ICs5OTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFyYW1l
dGVyc1RvRGVmYXVsdFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29y
a1Byb2Nlc3M6OlJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhzZXNzaW9uSUQpLCBbYWN0
aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJv
eHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyJfcyksIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRQYXJhbWV0ZXJzVG9EZWZh
dWx0VmFsdWVzKHNlc3Npb25JRCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogfQpAQCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3MK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6TmV0d29ya1Byb2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vz
c2lvbklELCB7IH0sIHNob3VsZEdyYW5kZmF0aGVyKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5N
ZW1vcnlBbmRQZXJzaXN0ZW50Il9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNl
c3Npb25JRCwgeyB9LCBzaG91bGRHcmFuZGZhdGhlciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcigpOwogICAgIH0pOwogfQpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBOZXR3b3Jr
UHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVz
dGluZyhQQUw6OlMKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0
aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NT
aXRlTG9hZHNXaXRoTGlua0RlY29yYXRpb25Gb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRz
V2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQg
TmV0d29ya1Byb2Nlc3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgY29uc3QgUmVnCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91
bmREb21haW5zRm9yUmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IEhhc2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwg
W2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vz
c1Byb3h5OjpzZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91
bmREb21haW5zKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9
CkBAIC0xMTUwLDIzICsxMTUwLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpO
ZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJs
ZWQpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQ
cm9jZXNzUHJveHk6OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyJfcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hv
dWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tp
bmdNb2RlKHNlc3Npb25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29v
a2llQmxvY2tpbmdNb2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Npb25J
RCwgYmxvY2tpbmdNb2RlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAg
fSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0
ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdl
YkNvcmU6OlNhbWVTaXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRFbmJsZVNhbWVTaXRl
U3RyaWN0RW5mb3JjZW1lbnRGb3JUZXN0aW5nKHNlc3Npb25JRCwgZW5hYmxlZCksIFthY3Rpdml0
eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6
c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyJfcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0
cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBXVEZNb3ZlKGNv
bXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgRmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE3Niw5ICsxMTc0LDcg
QEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1v
dmFsTW9kZUZvclRlc3RpbmcoUEFMOjpTZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBbYWN0
aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEZpcnN0UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyJfcyksIGNv
bXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRh
UmVtb3ZhbE1vZGVGb3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRl
U3RyaWN0Q29va2llc0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBS
ZWdpc3RyYWJsZURvbWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCkBAIC0xMjA4LDcgKzEyMDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
UHJveHk6OnNlbmRQcm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCiAgICAg
CiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVu
c2lvbkltbWluZW50IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVu
dCA9PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlBy
ZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5l
bnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0
UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpObyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQ
cm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3MWVlM2JmNDlhMC4u
MjNiOWVhYzMzZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdvcmsv
TmV0d29ya1Byb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05ldHdv
cmsvTmV0d29ya1Byb2Nlc3NQcm94eS5oCkBAIC0xOTMsNyArMTkzLDcgQEAgcHVibGljOgogICAg
IHZvaWQgdGVzdFByb2Nlc3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1Jl
cGx5KFdlYlBhZ2VQcm94eUlkZW50aWZpZXIsIE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpUZXN0UHJvY2Vzc0luY29taW5nU3luY01lc3NhZ2VzV2hlbldhaXRpbmdGb3JTeW5jUmVwbHlE
ZWxheWVkUmVwbHkmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVVbnJlc3BvbnNpdmVTZXJ2aWNlV29y
a2VyUHJvY2Vzc2VzKFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyKTsKIAotICAgIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisgICAgUHJvY2Vz
c1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KICAg
ICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAogICAgIFdlYlByb2Nlc3NQb29sJiBw
cm9jZXNzUG9vbCgpIHsgcmV0dXJuIG1fcHJvY2Vzc1Bvb2w7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBj
NGJlMTY2YWY5ZC4uN2Q5ZDliMjg2ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKQEAgLTYyLDcgKzYyLDggQEAg
UmVmPFBsdWdpblByb2Nlc3NQcm94eT4gUGx1Z2luUHJvY2Vzc1Byb3h5OjpjcmVhdGUoUGx1Z2lu
UHJvY2Vzc01hbmFnZXIqIFBsdWdpblAKIH0KIAogUGx1Z2luUHJvY2Vzc1Byb3h5OjpQbHVnaW5Q
cm9jZXNzUHJveHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqIFBsdWdpblByb2Nlc3NNYW5hZ2VyLCBj
b25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYgcGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMsIHVp
bnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbikKLSAgICA6IG1fcGx1Z2luUHJvY2Vzc01hbmFnZXIo
UGx1Z2luUHJvY2Vzc01hbmFnZXIpCisgICAgOiBtX3Rocm90dGxlcigqdGhpcywgZmFsc2UpCisg
ICAgLCBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyKFBsdWdpblByb2Nlc3NNYW5hZ2VyKQogICAgICwg
bV9wbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyhwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcykKICAgICAs
IG1fcGx1Z2luUHJvY2Vzc1Rva2VuKHBsdWdpblByb2Nlc3NUb2tlbikKICAgICAsIG1fbnVtUGVu
ZGluZ0Nvbm5lY3Rpb25SZXF1ZXN0cygwKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvUGx1Z2lucy9QbHVnaW5Qcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmgKaW5kZXggYWYyMjNkYmQ5NTcuLmQzNWQ4
OTRkOWMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luUHJvY2Vzc1Byb3h5LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9j
ZXNzLmgiCiAjaW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQ
cm9jZXNzTGF1bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCiAjaW5jbHVk
ZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXNSZXBsaWVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CiAKQEAgLTYxLDcgKzYyLDcgQEAgaW50IHBsdWdpblByb2Nlc3NMYXRlbmN5UU9TKCk7CiBp
bnQgcGx1Z2luUHJvY2Vzc1Rocm91Z2hwdXRRT1MoKTsKICNlbmRpZgogCi1jbGFzcyBQbHVnaW5Q
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luUHJvY2Vzc1Byb3h5PiB7CitjbGFzcyBQbHVnaW5Q
cm9jZXNzUHJveHkgZmluYWwgOiBwdWJsaWMgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LCBwdWJsaWMg
VGhyZWFkU2FmZVJlZkNvdW50ZWQ8UGx1Z2luUHJvY2Vzc1Byb3h5PiwgcHJpdmF0ZSBQcm9jZXNz
VGhyb3R0bGVyQ2xpZW50IHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsdWdpblByb2Nlc3NQ
cm94eT4gY3JlYXRlKFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29uc3QgUGx1Z2luUHJvY2Vzc0F0
dHJpYnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4pOwogICAgIH5QbHVnaW5Qcm9j
ZXNzUHJveHkoKTsKQEAgLTg3LDYgKzg4LDggQEAgcHVibGljOgogICAgIHN0YXRpYyBib29sIHNj
YW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYgcmVz
dWx0KTsKICNlbmRpZgogCisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwg
eyByZXR1cm4gbV90aHJvdHRsZXI7IH0KKwogcHJpdmF0ZToKICAgICBQbHVnaW5Qcm9jZXNzUHJv
eHkoUGx1Z2luUHJvY2Vzc01hbmFnZXIqLCBjb25zdCBQbHVnaW5Qcm9jZXNzQXR0cmlidXRlcyYs
IHVpbnQ2NF90IHBsdWdpblByb2Nlc3NUb2tlbik7CiAKQEAgLTk5LDYgKzEwMiwxMSBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCBwbHVnaW5Qcm9jZXNzQ3Jhc2hlZE9yRmFpbGVkVG9MYXVuY2goKTsK
IAorICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKKyAgICB2b2lkIHNlbmRQcmVwYXJlVG9T
dXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYp
IGZpbmFsIHsgfQorICAgIHZvaWQgc2VuZFByb2Nlc3NEaWRSZXN1bWUoKSBmaW5hbCB7IH0KKyAg
ICB2b2lkIGRpZFNldEFzc2VydGlvblN0YXRlKEFzc2VydGlvblN0YXRlKSBmaW5hbCB7IH0KKwog
ICAgIC8vIElQQzo6Q29ubmVjdGlvbjo6Q2xpZW50CiAgICAgdm9pZCBkaWRSZWNlaXZlTWVzc2Fn
ZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImKSBvdmVycmlkZTsKICAgICB2b2lkIGRp
ZFJlY2VpdmVTeW5jTWVzc2FnZShJUEM6OkNvbm5lY3Rpb24mLCBJUEM6OkRlY29kZXImLCBzdGQ6
OnVuaXF1ZV9wdHI8SVBDOjpFbmNvZGVyPiYpIG92ZXJyaWRlOwpAQCAtMTM3LDYgKzE0NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIHBsYXRmb3JtSW5pdGlhbGl6ZVBsdWdpblByb2Nlc3MoUGx1
Z2luUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycyk7CiAKKyAgICBQcm9jZXNz
VGhyb3R0bGVyIG1fdGhyb3R0bGVyOworCiAgICAgLy8gVGhlIHBsdWctaW4gaG9zdCBwcm9jZXNz
IG1hbmFnZXIuCiAgICAgUGx1Z2luUHJvY2Vzc01hbmFnZXIqIG1fcGx1Z2luUHJvY2Vzc01hbmFn
ZXI7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRs
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAppbmRleCA4
YTIxMmU1MDc1NS4uMDlkNmQzMjY3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9j
ZXNzVGhyb3R0bGVyLmgKQEAgLTY1LDggKzY1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICwg
bV9uYW1lKG5hbWUpCiAgICAgICAgIHsKICAgICAgICAgICAgIHRocm90dGxlci5hZGRBY3Rpdml0
eSgqdGhpcyk7Ci0gICAgICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0Vf
TE9HKCJBY3Rpdml0eTogU3RhcnRpbmcgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAv
ICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBBY3Rp
dml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3VuZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFt
ZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgaWYgKCFpc1F1aWV0QWN0aXZpdHkoKSkgewor
ICAgICAgICAgICAgICAgIFBST0NFU1NUSFJPVFRMRVJfQUNUSVZJVFlfUkVMRUFTRV9MT0coIkFj
dGl2aXR5OiBTdGFydGluZyAlIiBQVUJMSUNfTE9HX1NUUklORyAiIGFjdGl2aXR5IC8gJyUiIFBV
QkxJQ19MT0dfU1RSSU5HICInIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0
eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3VuZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5j
aGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgfkFjdGl2
aXR5KCkKQEAgLTgwLDExICs4MiwxNSBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAg
ZnJpZW5kIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7CiAKKyAgICAgICAgYm9vbCBpc1F1aWV0QWN0
aXZpdHkoKSBjb25zdCB7IHJldHVybiAhbV9uYW1lLmNoYXJhY3RlcnMoKTsgfQorCiAgICAgICAg
IHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlk
KCkpOwotICAgICAgICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygi
aW52YWxpZGF0ZTogRW5kaW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIg
UFVCTElDX0xPR19TVFJJTkcgIiciLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlU
eXBlOjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hh
cmFjdGVycygpKTsKKyAgICAgICAgICAgIGlmICghaXNRdWlldEFjdGl2aXR5KCkpIHsKKyAgICAg
ICAgICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJpbnZhbGlk
YXRlOiBFbmRpbmcgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNf
TE9HX1NUUklORyAiJyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBl
OjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFj
dGVycygpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVB
Y3Rpdml0eSgqdGhpcyk7CiAgICAgICAgICAgICBtX3Rocm90dGxlciA9IG51bGxwdHI7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Vz
ZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA5MTU1MzlmZDhk
Ny4uY2NlYjYxZjE0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAg
LTI2MCwxMiArMjYwLDEyIEBAIHZvaWQgVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVzdChVc2VyTWVkaWFQZXJtCiAgICAgICAgIH0KICNl
bmRpZgogCi0gICAgICAgIG1fcGFnZS5wcm9jZXNzKCkuY29ubmVjdGlvbigpLT5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyBy
ZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRl
b0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpLCBoYW5kbGUgfSwg
W3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKKyAgICAgICAgbV9wYWdlLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3Jh
bnRlZCB7IHJlcXVlc3QudXNlck1lZGlhSUQoKSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1
ZXN0LnZpZGVvRGV2aWNlKCksIHJlcXVlc3QuZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCksIGhh
bmRsZSB9LCBbdGhpcywgd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKV0gewogICAgICAgICAg
ICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBp
ZiAoIS0tbV9oYXNQZW5kaW5nQ2FwdHVyZSkKICAgICAgICAgICAgICAgICBVc2VyTWVkaWFQcm9j
ZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkucmV2b2tlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChw
YWdlKCkucHJvY2VzcygpKTsKLSAgICAgICAgfSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKKyAgICAg
ICAgfSk7CiAKICAgICAgICAgcHJvY2Vzc05leHRVc2VyTWVkaWFSZXF1ZXN0SWZOZWVkZWQoKTsK
ICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2Fy
ZENhY2hlRW50cnkuY3BwCmluZGV4IGFlNTZlNTMzYTYwLi5jMDA3ZGZhODZkYSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3Bw
CkBAIC01MCw3ICs1MCw3IEBAIFdlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3
YXJkQ2FjaGVFbnRyeSgpCiB7CiAgICAgaWYgKG1fYmFja0ZvcndhcmRJdGVtSUQgJiYgIW1fc3Vz
cGVuZGVkUGFnZSkgewogICAgICAgICBhdXRvJiBwcm9jZXNzID0gdGhpcy0+cHJvY2VzcygpOwot
ICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbYWN0aXZpdHkgPSBwcm9jZXNz
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiQ2xlYXJpbmcgYmFjay9mb3J3YXJkIGNh
Y2hlIGVudHJ5Il9zKV0geyB9KTsKKyAgICAgICAgcHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZShtX2JhY2tGb3J3YXJkSXRlbUlE
KSwgW10geyB9KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCmluZGV4IGRjMmNkNjk2MzUxLi40MDE4NjBkMjBjMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
Y3BwCkBAIC0xMDIsOSArMTAyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVm
V2ViQ29udGV4dFN1cHBsZW1lbnQoKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhv
c3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3
b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMiX3MpXShWZWN0b3I8U3RyaW5nPiYmIGhv
c3RuYW1lcykgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShob3N0
bmFtZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Np
b25JRCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1h
bmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNz
aW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCkBAIC0xMjAsNyArMTE4LDcg
QEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNz
aW9uSUQgc2Vzc2lvbklEKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tp
ZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3
b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAg
bmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9
IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhy
b3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0
ZUNvb2tpZSJfcyldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklE
LCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbild
KCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAg
LTEyOCw0MSArMTI2LDMxIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29r
aWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9u
SUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVz
TW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENv
b2tpZXNNb2RpZmllZFNpbmNlIl9zKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5j
dGlvbigpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uo
c2Vzc2lvbklELCB0aW1lKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShz
ZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tG
dW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3Vu
ZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFi
bGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0d29ya1By
b2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRD
b29raWUoc2Vzc2lvbklELCBjb29raWVzKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklE
IHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJs
LCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNz
UG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNz
aW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24g
PSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRD
b29raWVzIl9zKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAg
IH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRv
Y3VtZW50VVJMKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29v
a2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0
aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJl
TmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2Nh
bGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5l
dHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFu
YWdlclByb3h5OjpnZXRBbGxDb29raWVzIl9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKLSAg
ICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVz
KFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBh
dXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rp
b24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNz
LnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5Ojpn
ZXRDb29raWVzIl9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hh
bmdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yMzIsMTcgKzIyMCwxMyBAQCB2b2lk
IFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNl
c3Npb25JRCwgSFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9
IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nl
c3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFj
Y2VwdFBvbGljeSJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsK
LSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29y
a1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9s
aWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsK
LSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTJkYTFmNzZiNGEuLjMzN2E4ZjA3
MWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMTQw
LDcgKzEwMTQwLDcgQEAgYm9vbCBXZWJQYWdlUHJveHk6OnNob3VsZEZvcmNlRm9yZWdyb3VuZFBy
aW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlvbigpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5Ojpn
ZXRQcm9jZXNzRGlzcGxheU5hbWUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpHZXRQcm9jZXNzRGlzcGxheU5hbWUoKSwgV1RG
TW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3Jp
ZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUodWludDY0X3Qgb3JpZW50YXRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAppbmRleCAzYWE5OTRhYzk1MS4uNTJi
YmFmNjc1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cApAQCAtNDYwLDkgKzQ2MCw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpub3RpZnlQYWdlU3Rh
dGlzdGljc1RlbGVtZXRyeUZpbmlzaGVkKEFQSTo6T2JqZWN0KiBtZXNzYWdlCiAKIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKFRoaXJkUGFydHlD
b29raWVCbG9ja2luZ01vZGUgdGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5n
TW9kZSh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFydHlDb29r
aWVCbG9ja2luZ01vZGUiX3MpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewotICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwotICAg
IH0pOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6U2V0VGhp
cmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSh0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogI2VuZGlmCiAKQEAgLTExMDYsMTAgKzEx
MDQsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YShQQUw6OlNlc3Np
b25JRCBzZXNzaW9uSUQsIE9wdGlvblNldDxXZWJzaQogICAgIEFTU0VSVChjYW5TZW5kTWVzc2Fn
ZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09IHRoaXMtPnNl
c3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZmV0Y2hXZWJzaXRlRGF0YSJfcyk7CiAgICAgUkVM
RUFTRV9MT0dfSUYoaXNSZWxlYXNlTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24s
ICIlcCAtIFdlYlByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBi
ZWNhdXNlIHRoZSBXZWIgcHJvY2VzcyBpcyBmZXRjaGluZyBXZWJzaXRlIGRhdGEiLCB0aGlzKTsK
IAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpGZXRjaFdlYnNpdGVEYXRhKGRhdGFUeXBlcyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxl
IHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkZldGNoV2Vi
c2l0ZURhdGEoZGF0YVR5cGVzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlz
KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8g
cmVwbHkpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNF
RF9QQVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTEyMywxMCArMTEyMCw5IEBAIHZvaWQgV2ViUHJv
Y2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9w
dGlvblNldDxXZWJzCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9V
TlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAg
YXV0byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vz
c1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YSJfcyk7CiAgICAgUkVMRUFTRV9MT0dfSUYoaXNSZWxl
YXNlTG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQ
cm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWIgcHJv
Y2VzcyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEiLCB0aGlzKTsKIAotICAgIGNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRl
RGF0YShkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2UpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRh
dGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgp
IG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVOVVNFRF9QQVJB
TSh0aGlzKTsKICNlbmRpZgpAQCAtMTE0MCwxMCArMTEzNiw5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBPcHRpCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byBh
Y3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlz
UmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9j
ZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2Vi
IHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0ZSBkYXRhIGZvciBzZXZlcmFsIG9yaWdpbnMiLCB0
aGlzKTsKIAotICAgIGNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5z
KSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZN
b3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoZGF0YVR5cGVzLCBvcmlnaW5zKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMzI1
LDcgKzEzMjAsNyBAQCBSZWZQdHI8QVBJOjpPYmplY3Q+IFdlYlByb2Nlc3NQcm94eTo6dHJhbnNm
b3JtT2JqZWN0c1RvSGFuZGxlcyhBUEk6Ok9iamVjdCogb2JqZQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQoSXNTdXNwZW5zaW9uSW1taW5lbnQgaXNTdXNwZW5z
aW9uSW1taW5lbnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlByZXBh
cmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6
OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlByZXBhcmVUb1N1c3BlbmQoaXNTdXNwZW5zaW9uSW1t
aW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5OjpObyk7
CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJvY2Vzc0RpZFJlc3VtZSgpCkBAIC0x
NTQ2LDcgKzE1NDEsNyBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkQ29sbGVjdFByZXdhcm1J
bmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpSZWdpc3RyYWJsZURvbQogCiB2b2lkIFdlYlByb2Nl
c3NQcm94eTo6YWN0aXZlUGFnZXNEb21haW5zRm9yVGVzdGluZyhDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxTdHJpbmc+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIGNvbm5l
Y3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3Rp
dmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldEFjdGl2ZVBh
Z2VzT3JpZ2luc0ZvclRlc3RpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQog
CiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JNYWluRnJh
bWUoY29uc3QgVVJMJiB1cmwpCkBAIC0xNjQ3LDcgKzE2NDIsNyBAQCB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6ZW5kQmFja2dyb3VuZEFjdGl2aXR5Rm9yRnVsbHNjcmVlbklucHV0KCkKICNpZiBFTkFC
TEUoU0VSVklDRV9XT1JLRVIpCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2Vydmlj
ZVdvcmtlckNvbnRleHQoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYgc3RvcmUsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25u
ZWN0aW9uVG9OZXR3b3JrUHJvY2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgp
LnBhZ2VHcm91cElEKCksIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2Vy
UGFnZVByb3h5SUQsIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFn
ZUlELCBzdG9yZSwgKm1fcmVnaXN0cmFibGVEb21haW4sIG1fc2VydmljZVdvcmtlckluZm9ybWF0
aW9uLT5pbml0aWFsaXphdGlvbkRhdGEgfSwgW2FjdGl2aXR5ID0gbV90aHJvdHRsZXIuYmFja2dy
b3VuZEFjdGl2aXR5KCJFc3RhYmxpc2ggU2VydmljZSBXb3JrZXIiX3MpLCBjb21wbGV0aW9uSGFu
ZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4
dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdy
b3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VX
b3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3Jr
ZXJQYWdlSUQsIHN0b3JlLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VySW5m
b3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9LCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgUkVMRUFTRV9MT0co
TG9hZGluZywgIldlYlByb2Nlc3NQcm94eTo6ZXN0YWJsaXNoU2VydmljZVdvcmtlckNvbnRleHQg
ZmluaXNoZWQiKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9LCAwKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggNTFiZjlmZGZhYTQu
LjRkYjY5YWFkZWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtMjQyLDcgKzI0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2luZG93U2VydmVyQ29u
bmVjdGlvblN0YXRlQ2hhbmdlZCgpOwogCi0gICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVy
KCkgeyByZXR1cm4gbV90aHJvdHRsZXI7IH0KKyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRs
ZXIoKSBmaW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogCiAgICAgdm9pZCBpc1Jlc3BvbnNp
dmUoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPiYm
KTsKICAgICB2b2lkIGlzUmVzcG9uc2l2ZVdpdGhMYXp5U3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjliNDkzOWMxN2UuLjc2
NjMwNGJlMTQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFn
ZVByb3h5SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJv
eHlJT1MubW0KQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4
dFBsYWNlaG9sZGVyKGNvbnN0IEludFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPAogICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6Okluc2VydFRleHRQbGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlciksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6Okluc2VydFRleHRQbGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9s
ZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpyZW1vdmVUZXh0UGxhY2Vob2xkZXIoY29uc3QgRWxlbWVudENvbnRleHQmIHBs
YWNlaG9sZGVyLCBDb21wCiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVtb3ZlVGV4dFBsYWNlaG9sZGVyIHsgcGxhY2Vob2xk
ZXIgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7
IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0
Rm9yQXV0b2NvcnJlY3Rpb24sIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rp
b25EYXRhKT4mJiBjYWxsYmFjaykKQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEF1dG9jb3JyZWN0aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29y
cmVjdGlvbgogICAgICAgICBjYWxsYmFjayh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9u
KSwgV1RGTW92ZShjYWxsYmFjayksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1
dG9jb3JyZWN0aW9uKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6YXBwbHlBdXRvY29ycmVjdGlvbihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0
cmluZyYgb3JpZ2luYWxUZXh0LCBXVEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENh
bGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0xMjIyLDcgKzEyMjIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9u
KENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2Fs
bGJhY2spLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpSZXF1ZXN0RXZhc2lvblJlY3RzQWJvdmVTZWxlY3Rpb24oKSwgV1RGTW92ZShjYWxs
YmFjaykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRh
KGludDY0X3QgbG9jYXRpb25EZWx0YSwgaW50NjRfdCBsZW5ndGhEZWx0YSwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0
aW9uRGVsdGEsIGludDY0X3QgbGVuZ3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShsb2NhdGlvbkRlbHRhLCBsZW5ndGhEZWx0YSks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEobG9j
YXRpb25EZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChXZWJL
aXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSZXF1ZXN0IHJlcXVlc3QsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0KT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTEyNDIsNyArMTI0Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RG9j
dW1lbnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSCiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29u
dGV4dChyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsK
KyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REb2N1bWVu
dEVkaXRpbmdDb250ZXh0KHJlcXVlc3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9
CiAKICNpZiBFTkFCTEUoREFUQV9JTlRFUkFDVElPTikKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29u
c3QgSW50UG9pbnQmIGNsaWVudFBvCiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZElt
YWdlUGxhY2Vob2xkZXJzKGNvbnN0IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChjb25zdCBWZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YT4pPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmICho
YXNSdW5uaW5nUHJvY2VzcygpKQotICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnREcm9wcGVkSW1hZ2VQbGFj
ZWhvbGRlcnMoaW1hZ2VTaXplcyksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBh
Z2VJRCk7CisgICAgICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5z
ZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAgICAgZWxzZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdU
Rjo6bnVsbG9wdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398670</attachid>
            <date>2020-05-06 15:04:02 -0700</date>
            <delta_ts>2020-05-06 15:16:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209928-20200506150401.patch</filename>
            <type>text/plain</type>
            <size>47419</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1MzBlODE5OWViYjYzMTg5
Y2I0MzkxODRhMTU0NGM1ZTY3NTgxODcuLjI5MTJmM2ZhOGUyZjJlOWM1MTM3NTcwZGFiMTI4ZDkz
MDUyNDVhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDUtMDYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9j
ZXNzIHN1c3BlbnNpb24gd2hpbGUgcHJvY2Vzc2luZyB0aGUgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9jZXNzIHN1c3Bl
bnNpb24KKyAgICAgICAgb24gaU9TIHdoaWxlIHByb2Nlc3NpbmcgdGhlIElQQy4gSWYgdGhlIHBy
b2Nlc3MgaXMgc3VzcGVuZGVkIGVpdGhlciBiZWZvcmUgb3IgZHVyaW5nCisgICAgICAgIHRoZSBJ
UEMsIHRoaXMgY291bGQgcmVzdWx0IGluIGhhbmdzLiBUaGlzIGlzIGEgc3BlY3VsYXRpdmUgZml4
IGZvciB0aGUgZmxha3kgdGltZW91dHMKKyAgICAgICAgd2Ugc2VlIG9uIG1hbnkgdGVzdHMgb24g
aU9TIG9ubHkuIFdlIGtub3cgdGhhdCBtaXNzaW5nIGFjdGl2aXRpZXMgd2l0aAorICAgICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkgaGFzIGNhdXNlZCB0ZXN0IHRpbWVvdXRzIGluIHRoZSBwYXN0IChC
dWcgMjExNDIxKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
OjpBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
Ojppc1F1aWV0QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFByb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVU
ZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKwogMjAyMC0w
NS0wNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRhdGEgc3VtbWFyeSBjYWxsIHNob3VsZCBjcmVhdGUg
YSB3ZWIgcHJvY2VzcyBwb29sIGlmIG9uZSBkb2Vzbid0IGV4aXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwOTQzNzQ1OTE0
NTYwNGIxZGYzZGNlN2YzOWI5NWVlM2YxYjRmNmRjLi5iNmZkZTE2MzJmZGNiMzQ5YTFkMjA4NjMx
NjUzMWEzZGYzMDdkZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MCw4ICsxNTAsMTUgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6Ondhc1Rlcm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKKyAgICBpZiAoYXN5bmNSZXBseUluZm8gJiYgY2Fu
U2VuZE1lc3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9PSBT
aG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVwbHlJbmZvLT5maXJzdCwg
bnVsbHB0cik7CisgICAgICAgIGFzeW5jUmVwbHlJbmZvLT5maXJzdCA9IFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWw6Om51bGwoKSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElQQzo6RGVjb2Rlciog
ZGVjb2RlcikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWNvZGVy
KTsKKyAgICAgICAgfTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKICAgICBjYXNl
IFN0YXRlOjpMYXVuY2hpbmc6CiAgICAgICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBj
aGlsZCBwcm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdl
cyBzbyB3ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZSBhIGNvbm5lY3Rpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDdhMjY4
YzRiYjc5ZDVhYzNlZWE0NWZhOTY1NjY4MmNkM2U1OWZiMzAuLmM1ZDcyZWRlNDI1ZjAxZTk2NTdk
ZTM1MDJhN2RkOGYxZDNjOGQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBQcm9jZXNzVGhyb3R0bGVyOworCiBjbGFzcyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkgOiBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXhpbGlhcnlQcm9jZXNzUHJveHkp
OwogCkBAIC00OCw5ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0KCk7CiAgICAg
dm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgPSAwOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRp
b25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9KTsKKworICAgIGVudW0g
Y2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFll
cyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhB
c3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYmIG1l
c3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBAIC0xMDQsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkgOiAw
OyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSAh
PSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0KTsKKyAgICBib29sIHNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBXVEY6Om51bGxvcHQsIFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVy
QWN0aXZpdHk6Olllcyk7CiAKICAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwogCkBAIC0xNzAs
NyArMTc2LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW4KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCit2b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJB
Y3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKQEAgLTE4Myw3
ICsxODksNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LSAgICB9LCBsaXN0ZW5lcklEIH19KTsKKyAgICB9LCBsaXN0ZW5lcklEIH19LCBzaG91bGRTdGFy
dFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAK
aW5kZXggNjE2MDQ4MWMwMTVkYzdkYjA0YzAwNzQ2ZTRhNzljYjMwZDAxNzU1Yy4uZDFlMTJhZmQ0
ZGI3ZWJiODJhYzE5NGU1MGRhMzYzOGY0NzFiZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lk
IEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksCiAjZW5kaWYKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwg
dGhpcyk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0
eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiR1BVUHJvY2Vzc1Byb3h5OjpnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYg
Y29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5
OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1
cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBs
eSh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5o
CmluZGV4IDMzYjNlMjcxMWM1NzMxZjMxNTRmNzJmYjVjYzIxYjdlNzk4NjlhNzcuLjVmMTY3NjIy
NmFkMzA1NmZiYTk5OGYzM2Y4YTdmMTQxZWZhMzVkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSYmKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhy
b3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1
cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAog
ICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUwMjk4OGFl
NTVlODFhMWE0Mzc4ZTRlNzE4OTgzYzc3MzgxZjcyZmEuLmYwNjMzNjVhYjliNTkxMDg1ZGY2Y2Vk
YTQ2N2ZhYThkZDUwNjRkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQ
cm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGF1dG8gY29va2llQWNjZXB0UG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIk5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjogTmV0d29ya1Byb2Nlc3NQ
cm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFi
YXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFVzZUlUUERhdGFiYXNlKHNlc3Npb25JRCwg
dmFsdWUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRVc2VJVFBEYXRhYmFzZShzZXNz
aW9uSUQsIHZhbHVlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7
CiB9CkBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbkkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNl
c3Npb25JRCksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTk5NCw3ICs5
OTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKHNl
c3Npb25JRCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0s
IHNob3VsZEdyYW5kZmF0aGVyKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50Il9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgeyB9
LCBzaG91bGRHcmFuZGZhdGhlciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogfQpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwgW2FjdGl2aXR5ID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xMTUwLDIz
ICsxMTUwLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbYWN0aXZp
dHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Np
b25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Npb25JRCwgYmxvY2tpbmdN
b2RlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRGb3JUZXN0aW5nKHNlc3Npb25JRCwgZW5hYmxlZCksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5i
bGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE3Niw5ICsxMTc0LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoUEFMOjpTZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVG
b3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMjA4LDcgKzEyMDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCiAgICAgCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3Bl
bnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3Bl
bmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90
dGxlckFjdGl2aXR5OjpObyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NEaWRSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3MWVlM2JmNDlhMDhiMzRhNDdlN2NmNDFk
MjNjZjk0ODNjNWE1ZTRjLi4yM2I5ZWFjMzNlMTVmODkzODMxNjI4YmZmY2YzMjZlZjk1MzFkZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0
aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXIm
IHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wo
KSB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzRiZTE2NmFmOWRm
YjE0YmVmMzY0ZjlkZDc4Yzc0OTFkYWIwZjk1Mi4uN2Q5ZDliMjg2ZDRlOTZlOTMxNjEwY2M2ZjRj
YmIwYTQ2NzBlMmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjIsNyArNjIsOCBAQCBSZWY8UGx1Z2lu
UHJvY2Vzc1Byb3h5PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciogUGx1Z2luUAogfQogCiBQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgdWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuKQotICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9j
ZXNzTWFuYWdlcikKKyAgICA6IG1fdGhyb3R0bGVyKCp0aGlzLCBmYWxzZSkKKyAgICAsIG1fcGx1
Z2luUHJvY2Vzc01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzKHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzKQogICAgICwgbV9wbHVnaW5Q
cm9jZXNzVG9rZW4ocGx1Z2luUHJvY2Vzc1Rva2VuKQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVj
dGlvblJlcXVlc3RzKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBhZjIyM2RiZDk1N2QxODQzOTg4OWZkYmNmMmQ5
NWZmNzJlOGNkMDhlLi43MjEyNDBkMDk0ZWFmMTZjMmNhZjA0ZjQ3OGYxNzE4ZGJjM2UyMzRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1
bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCkBAIC02MSw3ICs2Myw3IEBAIGludCBw
bHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdpblByb2Nlc3NUaHJvdWdocHV0UU9T
KCk7CiAjZW5kaWYKIAotY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4geworY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciosIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5KCk7CkBAIC04Nyw2ICs4OSw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisKIHBy
aXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29u
c3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4p
OwogCkBAIC05OSw2ICsxMDMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGx1Z2luUHJvY2Vz
c0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKKyAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNlbmRQcm9j
ZXNzRGlkUmVzdW1lKCkgZmluYWwgeyB9CisgICAgdm9pZCBkaWRTZXRBc3NlcnRpb25TdGF0ZShB
c3NlcnRpb25TdGF0ZSkgZmluYWwgeyB9CisKICAgICAvLyBJUEM6OkNvbm5lY3Rpb246OkNsaWVu
dAogICAgIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiwgSVBDOjpEZWNv
ZGVyJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRSZWNlaXZlU3luY01lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiwgSVBDOjpEZWNvZGVyJiwgc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4mKSBv
dmVycmlkZTsKQEAgLTEzNyw2ICsxNDYsOCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBwbGF0Zm9y
bUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMm
IHBhcmFtZXRlcnMpOwogCisgICAgUHJvY2Vzc1Rocm90dGxlciBtX3Rocm90dGxlcjsKKwogICAg
IC8vIFRoZSBwbHVnLWluIGhvc3QgcHJvY2VzcyBtYW5hZ2VyLgogICAgIFBsdWdpblByb2Nlc3NN
YW5hZ2VyKiBtX3BsdWdpblByb2Nlc3NNYW5hZ2VyOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Qcm9jZXNzVGhyb3R0bGVyLmgKaW5kZXggOGEyMTJlNTA3NTVmNGVjYzg1ZjE0MjdlMjMxMWY3
YjYzNjI0YjZlMS4uMDlkNmQzMjY3NmNlZmJhYzI2OWQ2Y2Q3OGI4NjE5YTY3ZjY5MzcwNSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaApAQCAtNjUsOCArNjUs
MTAgQEAgcHVibGljOgogICAgICAgICAgICAgLCBtX25hbWUobmFtZSkKICAgICAgICAgewogICAg
ICAgICAgICAgdGhyb3R0bGVyLmFkZEFjdGl2aXR5KCp0aGlzKTsKLSAgICAgICAgICAgIFBST0NF
U1NUSFJPVFRMRVJfQUNUSVZJVFlfUkVMRUFTRV9MT0coIkFjdGl2aXR5OiBTdGFydGluZyAlIiBQ
VUJMSUNfTE9HX1NUUklORyAiIGFjdGl2aXR5IC8gJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIiwK
LSAgICAgICAgICAgICAgICB0eXBlID09IEFjdGl2aXR5VHlwZTo6Rm9yZWdyb3VuZCA/ICJmb3Jl
Z3JvdW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9uYW1lLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAg
ICBpZiAoIWlzUXVpZXRBY3Rpdml0eSgpKSB7CisgICAgICAgICAgICAgICAgUFJPQ0VTU1RIUk9U
VExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygiQWN0aXZpdHk6IFN0YXJ0aW5nICUiIFBVQkxJQ19M
T0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIgUFVCTElDX0xPR19TVFJJTkcgIiciLAorICAgICAg
ICAgICAgICAgICAgICB0eXBlID09IEFjdGl2aXR5VHlwZTo6Rm9yZWdyb3VuZCA/ICJmb3JlZ3Jv
dW5kIiA6ICJiYWNrZ3JvdW5kIiwgbV9uYW1lLmNoYXJhY3RlcnMoKSk7CisgICAgICAgICAgICB9
CiAgICAgICAgIH0KIAogICAgICAgICB+QWN0aXZpdHkoKQpAQCAtODAsMTEgKzgyLDE1IEBAIHB1
YmxpYzoKICAgICBwcml2YXRlOgogICAgICAgICBmcmllbmQgY2xhc3MgUHJvY2Vzc1Rocm90dGxl
cjsKIAorICAgICAgICBib29sIGlzUXVpZXRBY3Rpdml0eSgpIGNvbnN0IHsgcmV0dXJuICFtX25h
bWUuY2hhcmFjdGVycygpOyB9CisKICAgICAgICAgdm9pZCBpbnZhbGlkYXRlKCkKICAgICAgICAg
ewogICAgICAgICAgICAgQVNTRVJUKGlzVmFsaWQoKSk7Ci0gICAgICAgICAgICBQUk9DRVNTVEhS
T1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJpbnZhbGlkYXRlOiBFbmRpbmcgJSIgUFVCTElD
X0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyIsCi0gICAg
ICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3Vu
ZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgaWYg
KCFpc1F1aWV0QWN0aXZpdHkoKSkgeworICAgICAgICAgICAgICAgIFBST0NFU1NUSFJPVFRMRVJf
QUNUSVZJVFlfUkVMRUFTRV9MT0coImludmFsaWRhdGU6IEVuZGluZyAlIiBQVUJMSUNfTE9HX1NU
UklORyAiIGFjdGl2aXR5IC8gJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIiwKKyAgICAgICAgICAg
ICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3VuZCIg
OiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgfQogICAg
ICAgICAgICAgbV90aHJvdHRsZXItPnJlbW92ZUFjdGl2aXR5KCp0aGlzKTsKICAgICAgICAgICAg
IG1fdGhyb3R0bGVyID0gbnVsbHB0cjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCmluZGV4IDkxNTUzOWZkOGQ3ZjY1ZjE0MzUxYWQyZjUwNzc1MGYzNzUwNDUx
YjcuLmNjZWI2MWYxNGI1ODVjODUxYzE2YWQ2MWZkY2ZiYTdiODE3MDhhMzYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKQEAgLTI2MCwxMiArMjYwLDEyIEBAIHZvaWQgVXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVz
dChVc2VyTWVkaWFQZXJtCiAgICAgICAgIH0KICNlbmRpZgogCi0gICAgICAgIG1fcGFnZS5wcm9j
ZXNzKCkuY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVl
c3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRldmljZUlk
ZW50aWZpZXJIYXNoU2FsdCgpLCBoYW5kbGUgfSwgW3RoaXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3
ZWFrVGhpcyldIHsKKyAgICAgICAgbV9wYWdlLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6VXNlck1lZGlhQWNjZXNzV2FzR3JhbnRlZCB7IHJlcXVlc3QudXNlck1lZGlhSUQo
KSwgcmVxdWVzdC5hdWRpb0RldmljZSgpLCByZXF1ZXN0LnZpZGVvRGV2aWNlKCksIHJlcXVlc3Qu
ZGV2aWNlSWRlbnRpZmllckhhc2hTYWx0KCksIGhhbmRsZSB9LCBbdGhpcywgd2Vha1RoaXMgPSBX
VEZNb3ZlKHdlYWtUaGlzKV0gewogICAgICAgICAgICAgaWYgKCF3ZWFrVGhpcykKICAgICAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBpZiAoIS0tbV9oYXNQZW5kaW5nQ2FwdHVyZSkK
ICAgICAgICAgICAgICAgICBVc2VyTWVkaWFQcm9jZXNzTWFuYWdlcjo6c2luZ2xldG9uKCkucmV2
b2tlU2FuZGJveEV4dGVuc2lvbnNJZk5lZWRlZChwYWdlKCkucHJvY2VzcygpKTsKLSAgICAgICAg
fSwgbV9wYWdlLndlYlBhZ2VJRCgpKTsKKyAgICAgICAgfSk7CiAKICAgICAgICAgcHJvY2Vzc05l
eHRVc2VyTWVkaWFSZXF1ZXN0SWZOZWVkZWQoKTsKICAgICB9KTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCmluZGV4IGFlNTZl
NTMzYTYwYjI3Zjc5Y2MxYWUzZTc2NmFjODE3NDlhN2QxNzkuLmMwMDdkZmE4NmRhYjUxMDNmY2Jk
ZTc0ZWRkYzBjODRmYTZjZTVhMzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcApAQCAtNTAsNyArNTAsNyBAQCBXZWJCYWNr
Rm9yd2FyZENhY2hlRW50cnk6On5XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkoKQogewogICAgIGlm
IChtX2JhY2tGb3J3YXJkSXRlbUlEICYmICFtX3N1c3BlbmRlZFBhZ2UpIHsKICAgICAgICAgYXV0
byYgcHJvY2VzcyA9IHRoaXMtPnByb2Nlc3MoKTsKLSAgICAgICAgcHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkNsZWFyQ2FjaGVkUGFnZShtX2JhY2tGb3J3
YXJkSXRlbUlEKSwgW2FjdGl2aXR5ID0gcHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0
aXZpdHkoIkNsZWFyaW5nIGJhY2svZm9yd2FyZCBjYWNoZSBlbnRyeSJfcyldIHsgfSk7CisgICAg
ICAgIHByb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVh
ckNhY2hlZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFtdIHsgfSk7CiAgICAgfQogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcApp
bmRleCBkYzJjZDY5NjM1MTI4MTRjYmVkYjEwOGZiYjVkNDMyY2QyNmRhNWVkLi40MDE4NjBkMjBj
Mjc4NzZlYzQwODI3NTRjNWYwYjJkNmIzNzVhZjM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKQEAgLTEwMiw5ICsxMDIsNyBAQCB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVyZWZXZWJDb250ZXh0U3VwcGxlbWVudCgpCiB2
b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxTdHJpbmc+
JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBw
cm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNz
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SG9zdG5h
bWVzV2l0aENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIb3N0bmFtZXNXaXRo
Q29va2llcyJfcyldKFZlY3RvcjxTdHJpbmc+JiYgaG9zdG5hbWVzKSBtdXRhYmxlIHsKLSAgICAg
ICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGhvc3RuYW1lcykpOwotICAgIH0pOworICAgIG5l
dHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6R2V0SG9zdG5hbWVzV2l0aENvb2tpZXMoc2Vzc2lvbklEKSwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWVz
Rm9ySG9zdG5hbWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIGhvc3RuYW1lcykKQEAgLTEyMCw3ICsxMTgsNyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQpCiB2b2lkIFdl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgQ29va2llJiBjb29raWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9u
SUQsIGNvb2tpZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZp
dHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llIl9zKV0oKSBtdXRhYmxlIHsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkRlbGV0ZUNvb2tpZShzZXNzaW9uSUQsIGNvb2tpZSksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY2Fs
bGJhY2tGdW5jdGlvbigpOwogICAgIH0pOwogfQpAQCAtMTI4LDQxICsxMjYsMzEgQEAgdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQsIGNvbnN0IENvb2tpZSYKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVBbGxD
b29raWVzTW9kaWZpZWRTaW5jZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdhbGxUaW1lIHRp
bWUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAg
IGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nl
c3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YkNvb2tpZU1hbmFnZXI6OkRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlKHNlc3Npb25JRCwg
dGltZSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0
aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UiX3MpXSgp
IG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0
d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2Vy
OjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRpbWUpLCBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNl
dENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8Q29va2llPiYg
Y29va2llcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7
CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3Jr
UHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llKHNlc3Npb25JRCwgY29va2llcyksIFtjYWxs
YmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3
b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c2V0Q29va2llcyJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVu
Y3Rpb24oKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMp
LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBWZWN0b3I8
Q29va2llPiYgY29va2llcywgY29uc3QgVVJMJiB1cmwsIGNvbnN0IFVSTCYgbWFpbkRvY3VtZW50
VVJMLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAg
ICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9j
ZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVzKHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWlu
RG9jdW1lbnRVUkwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlv
biksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewot
ICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Mu
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWVz
KHNlc3Npb25JRCwgY29va2llcywgdXJsLCBtYWluRG9jdW1lbnRVUkwpLCBXVEZNb3ZlKGNhbGxi
YWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENv
b2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxDb29raWU+JiYpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29y
a1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5l
dHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdl
cjo6R2V0QWxsQ29va2llcyhzZXNzaW9uSUQpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEFsbENvb2tpZXMi
X3MpXShWZWN0b3I8Q29va2llPiYmIGNvb2tpZXMpIG11dGFibGUgewotICAgICAgICBjYWxsYmFj
a0Z1bmN0aW9uKFdURk1vdmUoY29va2llcykpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNz
LnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0QWxsQ29v
a2llcyhzZXNzaW9uSUQpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBVUkwmIHVybCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYm
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMo
c2Vzc2lvbklELCB1cmwpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldENvb2tpZXMiX3MpXShWZWN0b3I8Q29v
a2llPiYmIGNvb2tpZXMpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0aW9uKFdURk1v
dmUoY29va2llcykpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0Q29va2llcyhzZXNzaW9uSUQsIHVy
bCksIFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFn
ZXJQcm94eTo6c3RhcnRPYnNlcnZpbmdDb29raWVDaGFuZ2VzKFBBTDo6U2Vzc2lvbklEIHNlc3Np
b25JRCkKQEAgLTIzMiwxNyArMjIwLDEzIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5Ojpz
ZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBIVFRQQ29va2llCiAjZW5k
aWYKIAogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0
d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5
KSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0
eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29v
a2llTWFuYWdlclByb3h5OjpzZXRIVFRQQ29va2llQWNjZXB0UG9saWN5Il9zKV0oKSBtdXRhYmxl
IHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeShwb2xpY3kpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsK
IH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xp
Y3koUEFMOjpTZXNzaW9uSUQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSFRUUENvb2tpZUFjY2Vw
dFBvbGljeSk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1By
b2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRI
VFRQQ29va2llQWNjZXB0UG9saWN5KCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SFRUUENvb2tpZUFjY2Vw
dFBvbGljeSJfcyldKEhUVFBDb29raWVBY2NlcHRQb2xpY3kgcG9saWN5KSBtdXRhYmxlIHsKLSAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbihwb2xpY3kpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSgpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAog
fSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcAppbmRleCA1MmRhMWY3NmI0YTczNjEyYmI4MTUwNmEzOTBmYTc2NjliNjk0NWI1Li4zMzdh
OGYwNzFiNzAyMDFiMzZjMzgxOTFhZGFkMzU0MTY3ODNiMWZlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTEwMTQwLDcgKzEwMTQwLDcgQEAgYm9vbCBXZWJQ
YWdlUHJveHk6OnNob3VsZEZvcmNlRm9yZWdyb3VuZFByaW9yaXR5Rm9yQ2xpZW50TmF2aWdhdGlv
bigpIGNvbnN0CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRQcm9jZXNzRGlzcGxheU5hbWUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChTdHJpbmcmJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpHZXRQcm9jZXNzRGlzcGxheU5hbWUoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0T3JpZW50YXRpb25Gb3JNZWRpYUNhcHR1cmUo
dWludDY0X3Qgb3JpZW50YXRpb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5LmNwcAppbmRleCAzYWE5OTRhYzk1MWViYWQxOWQ1ZWY4NzQ4MjdhYTc0MTZiNTQ2YTYw
Li41MmJiYWY2NzU1N2I5ZmViODc4YzM1OWRmZGVkZmYxZDFjNmMwZWI3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKQEAgLTQ2MCw5ICs0NjAsNyBAQCB2
b2lkIFdlYlByb2Nlc3NQcm94eTo6bm90aWZ5UGFnZVN0YXRpc3RpY3NUZWxlbWV0cnlGaW5pc2hl
ZChBUEk6Ok9iamVjdCogbWVzc2FnZQogCiB2b2lkIFdlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZShUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIHRoaXJk
UGFydHlDb29raWVCbG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21w
bGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBy
b2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUodGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgi
V2ViUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlIl9zKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsK
LSAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKLSAgICB9KTsKKyAgICBzZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OlNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01v
ZGUodGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKIH0KICNlbmRpZgogCkBAIC0xMTA2LDEwICsxMTA0LDkgQEAgdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmZldGNoV2Vic2l0ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25T
ZXQ8V2Vic2kKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNF
RChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRv
IGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJv
eHk6OmZldGNoV2Vic2l0ZURhdGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxv
Z2dpbmdBbGxvd2VkKCksIFByb2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkg
aXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3Mg
aXMgZmV0Y2hpbmcgV2Vic2l0ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShk
YXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhY3Rpdml0
eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpGZXRjaFdlYnNpdGVEYXRhKGRhdGFUeXBlcyksIFt0
aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIChhdXRvIHJlcGx5KSBtdXRhYmxlIHsKICNpZiBS
RUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYK
QEAgLTExMjMsMTAgKzExMjAsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0
ZURhdGEoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBPcHRpb25TZXQ8V2VicwogICAgIEFTU0VS
VChjYW5TZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lv
bklEID09IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0aXZpdHkgPSB0aHJvdHRs
ZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURh
dGEiX3MpOwogICAgIFJFTEVBU0VfTE9HX0lGKGlzUmVsZWFzZUxvZ2dpbmdBbGxvd2VkKCksIFBy
b2Nlc3NTdXNwZW5zaW9uLCAiJXAgLSBXZWJQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dy
b3VuZCBhc3NlcnRpb24gYmVjYXVzZSB0aGUgV2ViIHByb2Nlc3MgaXMgZGVsZXRpbmcgV2Vic2l0
ZSBkYXRhIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmll
ZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkg
PSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShkYXRhVHlwZXMsIG1vZGlmaWVkU2luY2Up
LCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICNpZiBSRUxFQVNF
X0xPR19ESVNBQkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTEx
NDAsMTAgKzExMzYsOSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aQogICAgIEFTU0VSVChjYW5T
ZW5kTWVzc2FnZSgpKTsKICAgICBBU1NFUlRfVU5VU0VEKHNlc3Npb25JRCwgc2Vzc2lvbklEID09
IHRoaXMtPnNlc3Npb25JRCgpKTsKIAotICAgIGF1dG8gYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5i
YWNrZ3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGFGb3JP
cmlnaW5zIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgp
LCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJh
Y2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdl
YnNpdGUgZGF0YSBmb3Igc2V2ZXJhbCBvcmlnaW5zIiwgdGhpcyk7CiAKLSAgICBjb25uZWN0aW9u
KCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRp
b25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKGRhdGFUeXBlcywgb3JpZ2lucyksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZigqdGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildICgpIG11dGFibGUgewogI2lmIFJFTEVBU0VfTE9HX0RJU0FCTEVECiAgICAgICAgIFVO
VVNFRF9QQVJBTSh0aGlzKTsKICNlbmRpZgpAQCAtMTMyNSw3ICsxMzIwLDcgQEAgUmVmUHRyPEFQ
STo6T2JqZWN0PiBXZWJQcm9jZXNzUHJveHk6OnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXMoQVBJ
OjpPYmplY3QqIG9iamUKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNw
ZW5kKElzU3VzcGVuc2lvbkltbWluZW50IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lv
bkltbWluZW50ID09IElzU3VzcGVuc2lvbkltbWluZW50OjpZZXMpLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNz
OjpQcmVwYXJlVG9TdXNwZW5kKGlzU3VzcGVuc2lvbkltbWluZW50ID09IElzU3VzcGVuc2lvbklt
bWluZW50OjpZZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgMCwgeyB9LCBTaG91bGRT
dGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6Tm8pOwogfQogCiB2b2lkIFdlYlByb2Nlc3NQ
cm94eTo6c2VuZFByb2Nlc3NEaWRSZXN1bWUoKQpAQCAtMTU0Niw3ICsxNTQxLDcgQEAgdm9pZCBX
ZWJQcm9jZXNzUHJveHk6OmRpZENvbGxlY3RQcmV3YXJtSW5mb3JtYXRpb24oY29uc3QgV2ViQ29y
ZTo6UmVnaXN0cmFibGVEb20KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OmFjdGl2ZVBhZ2VzRG9t
YWluc0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBjb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGlu
ZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpHZXRBY3RpdmVQYWdlc09yaWdpbnNGb3JUZXN0aW5nKCks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6
OmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yTWFpbkZyYW1lKGNvbnN0IFVSTCYgdXJsKQpAQCAt
MTY0Nyw3ICsxNjQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmVuZEJhY2tncm91bmRBY3Rp
dml0eUZvckZ1bGxzY3JlZW5JbnB1dCgpCiAjaWYgRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQogdm9p
ZCBXZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KGNvbnN0IFdl
YlByZWZlcmVuY2VzU3RvcmUmIHN0b3JlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29t
cGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3Mg
eyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZpY2VX
b3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsICptX3JlZ2lzdHJh
YmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25EYXRh
IH0sIFthY3Rpdml0eSA9IG1fdGhyb3R0bGVyLmJhY2tncm91bmRBY3Rpdml0eSgiRXN0YWJsaXNo
IFNlcnZpY2UgV29ya2VyIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYlByb2Nlc3M6OkVzdGFibGlzaFdvcmtlckNvbnRleHRDb25uZWN0aW9uVG9OZXR3b3JrUHJv
Y2VzcyB7IHByb2Nlc3NQb29sKCkuZGVmYXVsdFBhZ2VHcm91cCgpLnBhZ2VHcm91cElEKCksIG1f
c2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZVByb3h5SUQsIG1fc2Vy
dmljZVdvcmtlckluZm9ybWF0aW9uLT5zZXJ2aWNlV29ya2VyUGFnZUlELCBzdG9yZSwgKm1fcmVn
aXN0cmFibGVEb21haW4sIG1fc2VydmljZVdvcmtlckluZm9ybWF0aW9uLT5pbml0aWFsaXphdGlv
bkRhdGEgfSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcild
KCkgbXV0YWJsZSB7CiAgICAgICAgIFJFTEVBU0VfTE9HKExvYWRpbmcsICJXZWJQcm9jZXNzUHJv
eHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0IGZpbmlzaGVkIik7CiAgICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSwgMCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlByb2Nlc3NQcm94eS5oCmluZGV4IDUxYmY5ZmRmYWE0ZDgyOGQ2Y2ViN2NmZjZkNzVkYjM0N2Q2
YzIzODcuLjRkYjY5YWFkZWVlYWMxMWYyMDBmMDA0OWFkMDIwOWFlNzFkM2NhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCkBAIC0yNDIsNyArMjQyLDcgQEAg
cHVibGljOgogCiAgICAgdm9pZCB3aW5kb3dTZXJ2ZXJDb25uZWN0aW9uU3RhdGVDaGFuZ2VkKCk7
CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxl
cjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1f
dGhyb3R0bGVyOyB9CiAKICAgICB2b2lkIGlzUmVzcG9uc2l2ZShDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wgaXNXZWJQcm9jZXNzUmVzcG9uc2l2ZSk+JiYpOwogICAgIHZvaWQgaXNSZXNwb25z
aXZlV2l0aExhenlTdG9wKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9p
b3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBh
Z2VQcm94eUlPUy5tbQppbmRleCBmOWI0OTM5YzE3ZWQ2M2FjZjNmYWZmMWE0ZWQxOWM5MTM4NzMx
YjQ5Li43NjYzMDRiZTE0NGZiMDI1OGI4NjY3MDQxNjhlNjRhNmFkZTEzZTdkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KQEAgLTQ2Niw3ICs0
NjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0VGV4dFBsYWNlaG9sZGVyKGNvbnN0IElu
dFNpemUmIHNpemUsIENvbXBsZXRpb25IYW5kbGVyPAogICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cih7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRQbGFj
ZWhvbGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlE
KTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydFRleHRQ
bGFjZWhvbGRlciB7IHNpemUgfSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250
ZXh0JiBwbGFjZWhvbGRlciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25I
YW5kbGVyKQpAQCAtNDc1LDcgKzQ3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZW1vdmVUZXh0
UGxhY2Vob2xkZXIoY29uc3QgRWxlbWVudENvbnRleHQmIHBsYWNlaG9sZGVyLCBDb21wCiAgICAg
ICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgbV9w
cm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6UmVtb3ZlVGV4dFBsYWNlaG9sZGVyIHsgcGxhY2Vob2xkZXIgfSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24sIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViQXV0b2NvcnJlY3Rpb25EYXRhKT4mJiBjYWxsYmFjaykK
QEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdEF1dG9jb3JyZWN0
aW9uRGF0YShjb25zdCBTdHJpbmcmIHRleHRGb3JBdXRvY29ycmVjdGlvbgogICAgICAgICBjYWxs
YmFjayh7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVj
dGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RBdXRv
Y29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwgV1RGTW92ZShjYWxsYmFjayks
IG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlcXVlc3RBdXRvY29ycmVjdGlvbkRhdGEodGV4dEZvckF1dG9jb3JyZWN0aW9uKSwgV1RGTW92
ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6YXBwbHlBdXRvY29ycmVjdGlv
bihjb25zdCBTdHJpbmcmIGNvcnJlY3Rpb24sIGNvbnN0IFN0cmluZyYgb3JpZ2luYWxUZXh0LCBX
VEY6OkZ1bmN0aW9uPHZvaWQgKGNvbnN0IFN0cmluZyYsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCkBAIC0xMjIyLDcgKzEyMjIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6cmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoY29ucwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0
aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEV2YXNp
b25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spLCBtX3dlYlBhZ2VJRCk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RXZhc2lv
blJlY3RzQWJvdmVTZWxlY3Rpb24oKSwgV1RGTW92ZShjYWxsYmFjaykpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGludDY0X3QgbG9jYXRpb25EZWx0
YSwgaW50NjRfdCBsZW5ndGhEZWx0YSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQpAQCAtMTIzMiw3ICsxMjMyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVw
ZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVu
Z3QKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVwZGF0ZVNlbGVjdGlvbldp
dGhEZWx0YShsb2NhdGlvbkRlbHRhLCBsZW5ndGhEZWx0YSksIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3RoRGVs
dGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5
OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChXZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0Nv
bnRleHRSZXF1ZXN0IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoV2ViS2l0OjpEb2N1
bWVudEVkaXRpbmdDb250ZXh0KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyNDIsNyArMTI0
Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChX
ZWJLaXQ6OkRvY3VtZW50RWRpdGluZ0NvbnRleHRSCiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChyZXF1ZXN0KSwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlciksIG1fd2ViUGFnZUlEKTsKKyAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3REb2N1bWVudEVkaXRpbmdDb250ZXh0KHJlcXVl
c3QpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKICNpZiBFTkFCTEUoREFUQV9J
TlRFUkFDVElPTikKQEAgLTEyNzIsNyArMTI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1
ZXN0QWRkaXRpb25hbEl0ZW1zRm9yRHJhZ1Nlc3Npb24oY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
CiB2b2lkIFdlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGNvbnN0
IFZlY3RvcjxJbnRTaXplPiYgaW1hZ2VTaXplcywgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChjb25z
dCBWZWN0b3I8SW50UmVjdD4mLCBPcHRpb25hbDxXZWJDb3JlOjpUZXh0SW5kaWNhdG9yRGF0YT4p
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIGlmIChoYXNSdW5uaW5nUHJvY2VzcygpKQot
ICAgICAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJQYWdlOjpJbnNlcnREcm9wcGVkSW1hZ2VQbGFjZWhvbGRlcnMoaW1hZ2VTaXplcyks
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgICAgIHNlbmRX
aXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vo
b2xkZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxz
ZQogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcih7IH0sIFdURjo6bnVsbG9wdCk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398673</attachid>
            <date>2020-05-06 15:16:39 -0700</date>
            <delta_ts>2020-05-06 15:47:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209928-20200506151638.patch</filename>
            <type>text/plain</type>
            <size>47435</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1MzBlODE5OWViYjYzMTg5
Y2I0MzkxODRhMTU0NGM1ZTY3NTgxODcuLjI5MTJmM2ZhOGUyZjJlOWM1MTM3NTcwZGFiMTI4ZDkz
MDUyNDVhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDUtMDYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9j
ZXNzIHN1c3BlbnNpb24gd2hpbGUgcHJvY2Vzc2luZyB0aGUgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9jZXNzIHN1c3Bl
bnNpb24KKyAgICAgICAgb24gaU9TIHdoaWxlIHByb2Nlc3NpbmcgdGhlIElQQy4gSWYgdGhlIHBy
b2Nlc3MgaXMgc3VzcGVuZGVkIGVpdGhlciBiZWZvcmUgb3IgZHVyaW5nCisgICAgICAgIHRoZSBJ
UEMsIHRoaXMgY291bGQgcmVzdWx0IGluIGhhbmdzLiBUaGlzIGlzIGEgc3BlY3VsYXRpdmUgZml4
IGZvciB0aGUgZmxha3kgdGltZW91dHMKKyAgICAgICAgd2Ugc2VlIG9uIG1hbnkgdGVzdHMgb24g
aU9TIG9ubHkuIFdlIGtub3cgdGhhdCBtaXNzaW5nIGFjdGl2aXRpZXMgd2l0aAorICAgICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkgaGFzIGNhdXNlZCB0ZXN0IHRpbWVvdXRzIGluIHRoZSBwYXN0IChC
dWcgMjExNDIxKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
OjpBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
Ojppc1F1aWV0QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFByb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVU
ZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKwogMjAyMC0w
NS0wNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRhdGEgc3VtbWFyeSBjYWxsIHNob3VsZCBjcmVhdGUg
YSB3ZWIgcHJvY2VzcyBwb29sIGlmIG9uZSBkb2Vzbid0IGV4aXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwOTQzNzQ1OTE0
NTYwNGIxZGYzZGNlN2YzOWI5NWVlM2YxYjRmNmRjLi5iNmZkZTE2MzJmZGNiMzQ5YTFkMjA4NjMx
NjUzMWEzZGYzMDdkZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MCw4ICsxNTAsMTUgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6Ondhc1Rlcm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKKyAgICBpZiAoYXN5bmNSZXBseUluZm8gJiYgY2Fu
U2VuZE1lc3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9PSBT
aG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVwbHlJbmZvLT5maXJzdCwg
bnVsbHB0cik7CisgICAgICAgIGFzeW5jUmVwbHlJbmZvLT5maXJzdCA9IFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWw6Om51bGwoKSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElQQzo6RGVjb2Rlciog
ZGVjb2RlcikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWNvZGVy
KTsKKyAgICAgICAgfTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKICAgICBjYXNl
IFN0YXRlOjpMYXVuY2hpbmc6CiAgICAgICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBj
aGlsZCBwcm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdl
cyBzbyB3ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZSBhIGNvbm5lY3Rpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDdhMjY4
YzRiYjc5ZDVhYzNlZWE0NWZhOTY1NjY4MmNkM2U1OWZiMzAuLmM1ZDcyZWRlNDI1ZjAxZTk2NTdk
ZTM1MDJhN2RkOGYxZDNjOGQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBQcm9jZXNzVGhyb3R0bGVyOworCiBjbGFzcyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkgOiBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXhpbGlhcnlQcm9jZXNzUHJveHkp
OwogCkBAIC00OCw5ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0KCk7CiAgICAg
dm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgPSAwOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRp
b25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9KTsKKworICAgIGVudW0g
Y2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFll
cyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhB
c3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYmIG1l
c3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBAIC0xMDQsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkgOiAw
OyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSAh
PSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0KTsKKyAgICBib29sIHNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBXVEY6Om51bGxvcHQsIFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVy
QWN0aXZpdHk6Olllcyk7CiAKICAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwogCkBAIC0xNzAs
NyArMTc2LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW4KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCit2b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJB
Y3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKQEAgLTE4Myw3
ICsxODksNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LSAgICB9LCBsaXN0ZW5lcklEIH19KTsKKyAgICB9LCBsaXN0ZW5lcklEIH19LCBzaG91bGRTdGFy
dFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAK
aW5kZXggNjE2MDQ4MWMwMTVkYzdkYjA0YzAwNzQ2ZTRhNzljYjMwZDAxNzU1Yy4uZDFlMTJhZmQ0
ZGI3ZWJiODJhYzE5NGU1MGRhMzYzOGY0NzFiZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lk
IEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksCiAjZW5kaWYKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwg
dGhpcyk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0
eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiR1BVUHJvY2Vzc1Byb3h5OjpnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYg
Y29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5
OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1
cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBs
eSh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5o
CmluZGV4IDMzYjNlMjcxMWM1NzMxZjMxNTRmNzJmYjVjYzIxYjdlNzk4NjlhNzcuLjVmMTY3NjIy
NmFkMzA1NmZiYTk5OGYzM2Y4YTdmMTQxZWZhMzVkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSYmKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhy
b3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1
cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAog
ICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUwMjk4OGFl
NTVlODFhMWE0Mzc4ZTRlNzE4OTgzYzc3MzgxZjcyZmEuLmYwNjMzNjVhYjliNTkxMDg1ZGY2Y2Vk
YTQ2N2ZhYThkZDUwNjRkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQ
cm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGF1dG8gY29va2llQWNjZXB0UG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIk5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjogTmV0d29ya1Byb2Nlc3NQ
cm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFi
YXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFVzZUlUUERhdGFiYXNlKHNlc3Npb25JRCwg
dmFsdWUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRVc2VJVFBEYXRhYmFzZShzZXNz
aW9uSUQsIHZhbHVlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7
CiB9CkBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbkkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNl
c3Npb25JRCksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTk5NCw3ICs5
OTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKHNl
c3Npb25JRCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0s
IHNob3VsZEdyYW5kZmF0aGVyKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50Il9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgeyB9
LCBzaG91bGRHcmFuZGZhdGhlciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogfQpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwgW2FjdGl2aXR5ID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xMTUwLDIz
ICsxMTUwLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbYWN0aXZp
dHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Np
b25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Npb25JRCwgYmxvY2tpbmdN
b2RlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRGb3JUZXN0aW5nKHNlc3Npb25JRCwgZW5hYmxlZCksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5i
bGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE3Niw5ICsxMTc0LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoUEFMOjpTZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVG
b3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMjA4LDcgKzEyMDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCiAgICAgCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3Bl
bnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3Bl
bmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90
dGxlckFjdGl2aXR5OjpObyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NEaWRSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3MWVlM2JmNDlhMDhiMzRhNDdlN2NmNDFk
MjNjZjk0ODNjNWE1ZTRjLi4yM2I5ZWFjMzNlMTVmODkzODMxNjI4YmZmY2YzMjZlZjk1MzFkZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0
aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXIm
IHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wo
KSB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzRiZTE2NmFmOWRm
YjE0YmVmMzY0ZjlkZDc4Yzc0OTFkYWIwZjk1Mi4uN2Q5ZDliMjg2ZDRlOTZlOTMxNjEwY2M2ZjRj
YmIwYTQ2NzBlMmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjIsNyArNjIsOCBAQCBSZWY8UGx1Z2lu
UHJvY2Vzc1Byb3h5PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciogUGx1Z2luUAogfQogCiBQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgdWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuKQotICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9j
ZXNzTWFuYWdlcikKKyAgICA6IG1fdGhyb3R0bGVyKCp0aGlzLCBmYWxzZSkKKyAgICAsIG1fcGx1
Z2luUHJvY2Vzc01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzKHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzKQogICAgICwgbV9wbHVnaW5Q
cm9jZXNzVG9rZW4ocGx1Z2luUHJvY2Vzc1Rva2VuKQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVj
dGlvblJlcXVlc3RzKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBhZjIyM2RiZDk1N2QxODQzOTg4OWZkYmNmMmQ5
NWZmNzJlOGNkMDhlLi5kNDFiMjg3MGQ5MjRjZmExNDgzMGRjNDQzYzdkNzg2ODM1NTJhOTE1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1
bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCkBAIC02MSw3ICs2Myw3IEBAIGludCBw
bHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdpblByb2Nlc3NUaHJvdWdocHV0UU9T
KCk7CiAjZW5kaWYKIAotY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4geworY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciosIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5KCk7CkBAIC04Nyw2ICs4OSw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisKIHBy
aXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29u
c3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4p
OwogCkBAIC05OSw2ICsxMDMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGx1Z2luUHJvY2Vz
c0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKKyAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbCB7IH0KKyAgICB2b2lkIHNlbmRQcm9j
ZXNzRGlkUmVzdW1lKCkgZmluYWwgeyB9CisgICAgQVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiAiUGx1Z2luUHJvY2VzcyJfczsgfQorCiAgICAgLy8gSVBDOjpD
b25uZWN0aW9uOjpDbGllbnQKICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNN
ZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJ
UEM6OkVuY29kZXI+Jikgb3ZlcnJpZGU7CkBAIC0xMzcsNiArMTQ2LDggQEAgcHJpdmF0ZToKIAog
ICAgIHZvaWQgcGxhdGZvcm1Jbml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzKTsKIAorICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90
aHJvdHRsZXI7CisKICAgICAvLyBUaGUgcGx1Zy1pbiBob3N0IHByb2Nlc3MgbWFuYWdlci4KICAg
ICBQbHVnaW5Qcm9jZXNzTWFuYWdlciogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oCmluZGV4IDhhMjEyZTUwNzU1ZjRl
Y2M4NWYxNDI3ZTIzMTFmN2I2MzYyNGI2ZTEuLjA5ZDZkMzI2NzZjZWZiYWMyNjlkNmNkNzhiODYx
OWE2N2Y2OTM3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NU
aHJvdHRsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVy
LmgKQEAgLTY1LDggKzY1LDEwIEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgbV9uYW1lKG5hbWUp
CiAgICAgICAgIHsKICAgICAgICAgICAgIHRocm90dGxlci5hZGRBY3Rpdml0eSgqdGhpcyk7Ci0g
ICAgICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJBY3Rpdml0
eTogU3RhcnRpbmcgJSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNf
TE9HX1NUUklORyAiJyIsCi0gICAgICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZv
cmVncm91bmQgPyAiZm9yZWdyb3VuZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJz
KCkpOworICAgICAgICAgICAgaWYgKCFpc1F1aWV0QWN0aXZpdHkoKSkgeworICAgICAgICAgICAg
ICAgIFBST0NFU1NUSFJPVFRMRVJfQUNUSVZJVFlfUkVMRUFTRV9MT0coIkFjdGl2aXR5OiBTdGFy
dGluZyAlIiBQVUJMSUNfTE9HX1NUUklORyAiIGFjdGl2aXR5IC8gJyUiIFBVQkxJQ19MT0dfU1RS
SU5HICInIiwKKyAgICAgICAgICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVn
cm91bmQgPyAiZm9yZWdyb3VuZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJzKCkp
OworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgfkFjdGl2aXR5KCkKQEAgLTgw
LDExICs4MiwxNSBAQCBwdWJsaWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNz
IFByb2Nlc3NUaHJvdHRsZXI7CiAKKyAgICAgICAgYm9vbCBpc1F1aWV0QWN0aXZpdHkoKSBjb25z
dCB7IHJldHVybiAhbV9uYW1lLmNoYXJhY3RlcnMoKTsgfQorCiAgICAgICAgIHZvaWQgaW52YWxp
ZGF0ZSgpCiAgICAgICAgIHsKICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotICAgICAg
ICAgICAgUFJPQ0VTU1RIUk9UVExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygiaW52YWxpZGF0ZTog
RW5kaW5nICUiIFBVQkxJQ19MT0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIgUFVCTElDX0xPR19T
VFJJTkcgIiciLAotICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3Jv
dW5kID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFjdGVycygpKTsK
KyAgICAgICAgICAgIGlmICghaXNRdWlldEFjdGl2aXR5KCkpIHsKKyAgICAgICAgICAgICAgICBQ
Uk9DRVNTVEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJpbnZhbGlkYXRlOiBFbmRpbmcg
JSIgUFVCTElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNfTE9HX1NUUklORyAi
JyIsCisgICAgICAgICAgICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5k
ID8gImZvcmVncm91bmQiIDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVBY3Rpdml0eSgqdGhp
cyk7CiAgICAgICAgICAgICBtX3Rocm90dGxlciA9IG51bGxwdHI7CiAgICAgICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1p
c3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAppbmRleCA5MTU1MzlmZDhkN2Y2NWYxNDM1MWFk
MmY1MDc3NTBmMzc1MDQ1MWI3Li5jY2ViNjFmMTRiNTg1Yzg1MWMxNmFkNjFmZGNmYmE3YjgxNzA4
YTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNz
aW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
VXNlck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yNjAsMTIgKzI2
MCwxMiBAQCB2b2lkIFVzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5p
c2hHcmFudGluZ1JlcXVlc3QoVXNlck1lZGlhUGVybQogICAgICAgICB9CiAjZW5kaWYKIAotICAg
ICAgICBtX3BhZ2UucHJvY2VzcygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpVc2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51c2Vy
TWVkaWFJRCgpLCByZXF1ZXN0LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwg
cmVxdWVzdC5kZXZpY2VJZGVudGlmaWVySGFzaFNhbHQoKSwgaGFuZGxlIH0sIFt0aGlzLCB3ZWFr
VGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXSB7CisgICAgICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1
ZXN0LnVzZXJNZWRpYUlEKCksIHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0Rl
dmljZSgpLCByZXF1ZXN0LmRldmljZUlkZW50aWZpZXJIYXNoU2FsdCgpLCBoYW5kbGUgfSwgW3Ro
aXMsIHdlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCEtLW1faGFz
UGVuZGluZ0NhcHR1cmUpCiAgICAgICAgICAgICAgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6
OnNpbmdsZXRvbigpLnJldm9rZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQocGFnZSgpLnByb2Nl
c3MoKSk7Ci0gICAgICAgIH0sIG1fcGFnZS53ZWJQYWdlSUQoKSk7CisgICAgICAgIH0pOwogCiAg
ICAgICAgIHByb2Nlc3NOZXh0VXNlck1lZGlhUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgfSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50
cnkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5
LmNwcAppbmRleCBhZTU2ZTUzM2E2MGIyN2Y3OWNjMWFlM2U3NjZhYzgxNzQ5YTdkMTc5Li5jMDA3
ZGZhODZkYWI1MTAzZmNiZGU3NGVkZGMwYzg0ZmE2Y2U1YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKQEAgLTUwLDcg
KzUwLDcgQEAgV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5Ojp+V2ViQmFja0ZvcndhcmRDYWNoZUVu
dHJ5KCkKIHsKICAgICBpZiAobV9iYWNrRm9yd2FyZEl0ZW1JRCAmJiAhbV9zdXNwZW5kZWRQYWdl
KSB7CiAgICAgICAgIGF1dG8mIHByb2Nlc3MgPSB0aGlzLT5wcm9jZXNzKCk7Ci0gICAgICAgIHBy
b2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hl
ZFBhZ2UobV9iYWNrRm9yd2FyZEl0ZW1JRCksIFthY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJDbGVhcmluZyBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnki
X3MpXSB7IH0pOworICAgICAgICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzczo6Q2xlYXJDYWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbXSB7IH0p
OwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29v
a2llTWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1h
bmFnZXJQcm94eS5jcHAKaW5kZXggZGMyY2Q2OTYzNTEyODE0Y2JlZGIxMDhmYmI1ZDQzMmNkMjZk
YTVlZC4uNDAxODYwZDIwYzI3ODc2ZWM0MDgyNzU0YzVmMGIyZDZiMzc1YWYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0x
MDIsOSArMTAyLDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4
dFN1cHBsZW1lbnQoKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dp
dGhDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChWZWN0b3I8U3RyaW5nPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5l
dHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0
aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vz
cy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6
Z2V0SG9zdG5hbWVzV2l0aENvb2tpZXMiX3MpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1lcykg
bXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShob3N0bmFtZXMpKTsK
LSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFdU
Rk1vdmUoY2FsbGJhY2tGdW5jdGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94
eTo6ZGVsZXRlQ29va2llc0Zvckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNv
bnN0IFZlY3RvcjxTdHJpbmc+JiBob3N0bmFtZXMpCkBAIC0xMjAsNyArMTE4LDcgQEAgdm9pZCBX
ZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vz
c2lvbklEKQogdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNl
c3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2Vz
cyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1By
b2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxl
dGVDb29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUo
Y2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCku
YmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSJf
cyldKCkgbXV0YWJsZSB7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUp
LCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTEyOCw0MSAr
MTI2LDMxIEBAIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpT
ZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQ
cm94eTo6ZGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lv
bklELCBXYWxsVGltZSB0aW1lLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tG
dW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVu
c3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRT
aW5jZShzZXNzaW9uSUQsIHRpbWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2Rp
ZmllZFNpbmNlIl9zKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwot
ICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViQ29va2llTWFuYWdlcjo6RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklE
LCB0aW1lKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2ll
TWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3Qg
VmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxs
YmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2wo
KS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQs
IGNvb2tpZXMpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewotICAg
ICAgICBjYWxsYmFja0Z1bmN0aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vz
c2lvbklELCBjb29raWVzKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQg
V2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25J
RCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBV
UkwmIG1haW5Eb2N1bWVudFVSTCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNr
RnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5l
bnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNv
b2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3Zl
KGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigp
LmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9z
KV0oKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAg
IG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFu
YWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJM
KSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdl
clByb3h5OjpnZXRBbGxDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVu
Y3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9j
ZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5
OjpnZXRBbGxDb29raWVzIl9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsK
LSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKLSAgICB9KTsKKyAg
ICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1h
bmFnZXI6OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9u
KSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgY29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPENvb2tpZT4mJik+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3
b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAg
bmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5h
Z2VyOjpHZXRDb29raWVzKHNlc3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZN
b3ZlKGNhbGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVz
Il9zKV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJh
Y2tGdW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tp
ZXMoc2Vzc2lvbklELCB1cmwpLCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6
OlNlc3Npb25JRCBzZXNzaW9uSUQpCkBAIC0yMzIsMTcgKzIyMCwxMyBAQCB2b2lkIFdlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwg
SFRUUENvb2tpZQogI2VuZGlmCiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQ
b29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNj
ZXB0UG9saWN5KHBvbGljeSksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGlj
eSJfcyldKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKLSAgICB9KTsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OlNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQ
Q29va2llQWNjZXB0UG9saWN5KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhUVFBDb29raWVBY2NlcHRQb2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0
byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vzcygp
OwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29v
a2llTWFuYWdlcjo6R2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3Mu
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6Omdl
dEhUVFBDb29raWVBY2NlcHRQb2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGlj
eSkgbXV0YWJsZSB7Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKLSAgICB9KTsK
KyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tp
ZU1hbmFnZXI6OkdldEhUVFBDb29raWVBY2NlcHRQb2xpY3koKSwgV1RGTW92ZShjYWxsYmFja0Z1
bmN0aW9uKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggNTJkYTFmNzZiNGE3MzYxMmJiODE1MDZhMzkwZmE3
NjY5YjY5NDViNS4uMzM3YThmMDcxYjcwMjAxYjM2YzM4MTkxYWRhZDM1NDE2NzgzYjFmZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE0MCw3ICsxMDE0
MCw3IEBAIGJvb2wgV2ViUGFnZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZv
ckNsaWVudE5hdmlnYXRpb24oKSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UHJvY2Vz
c0Rpc3BsYXlOYW1lKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5j
UmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OkdldFByb2Nlc3NEaXNwbGF5TmFtZSgpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUGFnZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKCksIFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE9yaWVudGF0aW9u
Rm9yTWVkaWFDYXB0dXJlKHVpbnQ2NF90IG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKaW5kZXggM2FhOTk0YWM5NTFlYmFkMTlkNWVmODc0
ODI3YWE3NDE2YjU0NmE2MC4uNTJiYmFmNjc1NTdiOWZlYjg3OGMzNTlkZmRlZGZmMWQxYzZjMGVi
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00
NjAsOSArNDYwLDcgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNz
VGVsZW1ldHJ5RmluaXNoZWQoQVBJOjpPYmplY3QqIG1lc3NhZ2UKIAogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OnNldFRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJs
b2NraW5nTW9kZSB0aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHRo
aXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2Nr
aW5nTW9kZSJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxl
cildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7Cisg
ICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5
Q29va2llQmxvY2tpbmdNb2RlKHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAjZW5kaWYKIApAQCAtMTEwNiwxMCArMTEwNCw5IEBA
IHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNl
c3Npb25JRCwgT3B0aW9uU2V0PFdlYnNpCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwog
ICAgIEFTU0VSVF9VTlVTRUQoc2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklE
KCkpOwogCi0gICAgYXV0byBhY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhIl9zKTsKICAgICBSRUxFQVNFX0xP
R19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
V2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2Ug
dGhlIFdlYiBwcm9jZXNzIGlzIGZldGNoaW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAg
Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkZl
dGNoV2Vic2l0ZURhdGEoZGF0YVR5cGVzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVm
KCp0aGlzKSwgYWN0aXZpdHkgPSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0
YShkYXRhVHlwZXMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkg
bXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFN
KHRoaXMpOwogI2VuZGlmCkBAIC0xMTIzLDEwICsxMTIwLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OmRlbGV0ZVdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnMKICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChz
ZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIGFj
dGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6
OmRlbGV0ZVdlYnNpdGVEYXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dn
aW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlz
IHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlz
IGRlbGV0aW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRh
dGFUeXBlcywgbW9kaWZpZWRTaW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigq
dGhpcyksIGFjdGl2aXR5ID0gV1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVz
LCBtb2RpZmllZFNpbmNlKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CiAjaWYgUkVMRUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMp
OwogI2VuZGlmCkBAIC0xMTQwLDEwICsxMTM2LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGkK
ICAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9u
SUQsIHNlc3Npb25JRCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5
ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0
ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyJfcyk7CiAgICAgUkVMRUFTRV9MT0dfSUYoaXNSZWxlYXNl
TG9nZ2luZ0FsbG93ZWQoKSwgUHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94
eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWIgcHJvY2Vz
cyBpcyBkZWxldGluZyBXZWJzaXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwog
Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nl
c3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhkYXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0
aXZpdHkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAo
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6
OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhkYXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywg
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNB
QkxFRAogICAgICAgICBVTlVTRURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTEzMjUsNyArMTMy
MCw3IEBAIFJlZlB0cjxBUEk6Ok9iamVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmpl
Y3RzVG9IYW5kbGVzKEFQSTo6T2JqZWN0KiBvYmplCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpz
ZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCBpc1N1c3BlbnNpb25JbW1p
bmVudCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewot
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJlcGFyZVRvU3Vz
cGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKSwg
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9
PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IDAsIHsgfSwgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Ok5vKTsKIH0KIAog
dm9pZCBXZWJQcm9jZXNzUHJveHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKQEAgLTE1NDYsNyAr
MTU0MSw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0
aW9uKGNvbnN0IFdlYkNvcmU6OlJlZ2lzdHJhYmxlRG9tCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5
OjphY3RpdmVQYWdlc0RvbWFpbnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFN0cmluZz4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldEFjdGl2ZVBhZ2Vz
T3JpZ2luc0ZvclRlc3RpbmcoKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNPcmln
aW5zRm9yVGVzdGluZygpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25z
dCBVUkwmIHVybCkKQEAgLTE2NDcsNyArMTY0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpl
bmRCYWNrZ3JvdW5kQWN0aXZpdHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogI2lmIEVOQUJMRShTRVJW
SUNFX1dPUktFUikKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2Vy
Q29udGV4dChjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25U
b05ldHdvcmtQcm9jZXNzIHsgcHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdy
b3VwSUQoKSwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJv
eHlJRCwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0
b3JlLCAqbV9yZWdpc3RyYWJsZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmlu
aXRpYWxpemF0aW9uRGF0YSB9LCBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0
aXZpdHkoIkVzdGFibGlzaCBTZXJ2aWNlIFdvcmtlciJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVj
dGlvblRvTmV0d29ya1Byb2Nlc3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5w
YWdlR3JvdXBJRCgpLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBh
Z2VQcm94eUlELCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJ
RCwgc3RvcmUsICptX3JlZ2lzdHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlv
bi0+aW5pdGlhbGl6YXRpb25EYXRhIH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29t
cGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5n
LCAiV2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dCBmaW5pc2hl
ZCIpOwogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0sIDApOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAppbmRleCA1MWJmOWZkZmFhNGQ4MjhkNmNl
YjdjZmY2ZDc1ZGIzNDdkNmMyMzg3Li40ZGI2OWFhZGVlZWFjMTFmMjAwZjAwNDlhZDAyMDlhZTcx
ZDNjYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJv
eHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAt
MjQyLDcgKzI0Miw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlv
blN0YXRlQ2hhbmdlZCgpOwogCi0gICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyBy
ZXR1cm4gbV90aHJvdHRsZXI7IH0KKyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBm
aW5hbCB7IHJldHVybiBtX3Rocm90dGxlcjsgfQogCiAgICAgdm9pZCBpc1Jlc3BvbnNpdmUoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPiYmKTsKICAg
ICB2b2lkIGlzUmVzcG9uc2l2ZVdpdGhMYXp5U3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggZjliNDkzOWMxN2VkNjNhY2YzZmFm
ZjFhNGVkMTljOTEzODczMWI0OS4uNzY2MzA0YmUxNDRmYjAyNThiODY2NzA0MTY4ZTY0YTZhZGUx
M2U3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94
eUlPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9T
Lm1tCkBAIC00NjYsNyArNDY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFj
ZWhvbGRlcihjb25zdCBJbnRTaXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3By
b2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdl
OjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpJbnNlcnRUZXh0UGxhY2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihj
b25zdCBFbGVtZW50Q29udGV4dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFdlYlBhZ2VQ
cm94eTo6cmVtb3ZlVGV4dFBsYWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhv
bGRlciwgQ29tcAogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6OldlYlBhZ2U6OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0s
IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhB
c3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xkZXIgeyBwbGFj
ZWhvbGRlciB9LCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjpyZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1
dG9jb3JyZWN0aW9uLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0
YSk+JiYgY2FsbGJhY2spCkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJl
cXVlc3RBdXRvY29ycmVjdGlvbkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rp
b24KICAgICAgICAgY2FsbGJhY2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBt
X3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdU
Rk1vdmUoY2FsbGJhY2spLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29y
cmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFw
cGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsVGV4dCwgV1RGOjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFj
a0Jhc2U6OkVycm9yKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1f
cHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNr
KSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6UmVxdWVzdEV2YXNpb25SZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2sp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2
NF90IGxvY2F0aW9uRGVsdGEsIGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQg
V2ViUGFnZVByb3h5Ojp1cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRl
bHRhLCBpbnQ2NF90IGxlbmd0CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nl
c3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpV
cGRhdGVTZWxlY3Rpb25XaXRoRGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9u
RGVsdGEsIGxlbmd0aERlbHRhKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpE
b2N1bWVudEVkaXRpbmdDb250ZXh0UmVxdWVzdCByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFdlYktpdDo6RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
CkBAIC0xMjQyLDcgKzEyNDIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50
RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UgogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQo
cmVxdWVzdCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAg
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0
aW5nQ29udGV4dChyZXF1ZXN0KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAj
aWYgRU5BQkxFKERBVEFfSU5URVJBQ1RJT04pCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6cmVxdWVzdEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IElu
dFBvaW50JiBjbGllbnRQbwogdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBs
YWNlaG9sZGVycyhjb25zdCBWZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoY29uc3QgVmVjdG9yPEludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4
dEluZGljYXRvckRhdGE+KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoaGFzUnVu
bmluZ1Byb2Nlc3MoKSkKLSAgICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRo
QXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xk
ZXJzKGltYWdlU2l6ZXMpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQp
OworICAgICAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERy
b3BwZWRJbWFnZVBsYWNlaG9sZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcikpOwogICAgIGVsc2UKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51
bGxvcHQpOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>398676</attachid>
            <date>2020-05-06 15:48:01 -0700</date>
            <delta_ts>2020-05-07 08:01:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209928-20200506154800.patch</filename>
            <type>text/plain</type>
            <size>47474</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYxMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDQ1MzBlODE5OWViYjYzMTg5
Y2I0MzkxODRhMTU0NGM1ZTY3NTgxODcuLjI5MTJmM2ZhOGUyZjJlOWM1MTM3NTcwZGFiMTI4ZDkz
MDUyNDVhNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzcgQEAKKzIwMjAtMDUtMDYgIENocmlzIER1
bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KKworICAgICAgICBbaU9TXSBBdXhpbGlhcnlQcm9jZXNz
UHJveHk6OnNlbmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9j
ZXNzIHN1c3BlbnNpb24gd2hpbGUgcHJvY2Vzc2luZyB0aGUgSVBDCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk5MjgKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNl
bmRXaXRoQXN5bmNSZXBseSgpIHNob3VsZCBwcmV2ZW50IGF1eGlsaWFyeSBwcm9jZXNzIHN1c3Bl
bnNpb24KKyAgICAgICAgb24gaU9TIHdoaWxlIHByb2Nlc3NpbmcgdGhlIElQQy4gSWYgdGhlIHBy
b2Nlc3MgaXMgc3VzcGVuZGVkIGVpdGhlciBiZWZvcmUgb3IgZHVyaW5nCisgICAgICAgIHRoZSBJ
UEMsIHRoaXMgY291bGQgcmVzdWx0IGluIGhhbmdzLiBUaGlzIGlzIGEgc3BlY3VsYXRpdmUgZml4
IGZvciB0aGUgZmxha3kgdGltZW91dHMKKyAgICAgICAgd2Ugc2VlIG9uIG1hbnkgdGVzdHMgb24g
aU9TIG9ubHkuIFdlIGtub3cgdGhhdCBtaXNzaW5nIGFjdGl2aXRpZXMgd2l0aAorICAgICAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkgaGFzIGNhdXNlZCB0ZXN0IHRpbWVvdXRzIGluIHRoZSBwYXN0IChC
dWcgMjExNDIxKS4KKworICAgICAgICAqIFVJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHku
Y3BwOgorICAgICAgICAoV2ViS2l0OjpBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRNZXNzYWdl
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5Lmg6CisgICAgICAg
IChXZWJLaXQ6OkF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24pOgorICAgICAgICAq
IFVJUHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbik6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlKToKKyAgICAgICAgKFdl
YktpdDo6TmV0d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVu
dFJlc291cmNlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0
UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9j
ZXNzUHJveHk6OnNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQpOgorICAgICAgICAo
V2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtE
ZWNvcmF0aW9uRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJv
eHk6OnNldEFwcEJvdW5kRG9tYWluc0ZvclJlc291cmNlTG9hZFN0YXRpc3RpY3MpOgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRTaG91bGREb3duZ3JhZGVSZWZlcnJl
ckZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRU
aGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1By
b2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVz
dGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0UGFy
dHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNz
L1BsdWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGx1Z2lu
UHJvY2Vzc1Byb3h5OjpQbHVnaW5Qcm9jZXNzUHJveHkpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Q
bHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Qcm9jZXNz
VGhyb3R0bGVyLmg6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
OjpBY3Rpdml0eSk6CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NUaHJvdHRsZXI6OkFjdGl2aXR5
Ojppc1F1aWV0QWN0aXZpdHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzVGhyb3R0
bGVyOjpBY3Rpdml0eTo6aW52YWxpZGF0ZSk6CisgICAgICAgICogVUlQcm9jZXNzL1VzZXJNZWRp
YVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VXNl
ck1lZGlhUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmZpbmlzaEdyYW50aW5nUmVxdWVz
dCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeTo6fldlYkJhY2tGb3J3YXJk
Q2FjaGVFbnRyeSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVz
V2l0aENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRl
bGV0ZUNvb2tpZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVs
ZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVN
YW5hZ2VyUHJveHk6OnNldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldEFsbENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5h
Z2VyUHJveHk6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAoV2ViS2l0OjpXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQb2xpY3kpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmdldFByb2Nlc3NEaXNwbGF5TmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQ
YXJ0eUNvb2tpZUJsb2NraW5nTW9kZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZmV0Y2hXZWJzaXRlRGF0YSk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6
ZGVsZXRlV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmRl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQ
cm94eTo6c2VuZFByZXBhcmVUb1N1c3BlbmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNz
UHJveHk6OmFjdGl2ZVBhZ2VzRG9tYWluc0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQcm9jZXNzUHJveHk6OmVzdGFibGlzaFNlcnZpY2VXb3JrZXJDb250ZXh0KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6aW5zZXJ0
VGV4dFBsYWNlaG9sZGVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZW1vdmVU
ZXh0UGxhY2Vob2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVlc3RB
dXRvY29ycmVjdGlvbkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlcXVl
c3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6dXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpyZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6aW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKToKKwogMjAyMC0w
NS0wNiAgS2F0ZSBDaGVuZXkgIDxrYXRoZXJpbmVfY2hlbmV5QGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIGRhdGEgc3VtbWFyeSBjYWxsIHNob3VsZCBjcmVhdGUg
YSB3ZWIgcHJvY2VzcyBwb29sIGlmIG9uZSBkb2Vzbid0IGV4aXN0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5LmNwcAppbmRleCAwOTQzNzQ1OTE0
NTYwNGIxZGYzZGNlN2YzOWI5NWVlM2YxYjRmNmRjLi5iNmZkZTE2MzJmZGNiMzQ5YTFkMjA4NjMx
NjUzMWEzZGYzMDdkZWMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhp
bGlhcnlQcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGls
aWFyeVByb2Nlc3NQcm94eS5jcHAKQEAgLTE1MCw4ICsxNTAsMTUgQEAgYm9vbCBBdXhpbGlhcnlQ
cm9jZXNzUHJveHk6Ondhc1Rlcm1pbmF0ZWQoKSBjb25zdAogI2VuZGlmCiB9CiAKLWJvb2wgQXV4
aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9wdHI8SVBDOjpFbmNv
ZGVyPiBlbmNvZGVyLCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBzZW5kT3B0aW9ucywgT3B0
aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVyKik+LCB1
aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8pCitib29sIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6
c2VuZE1lc3NhZ2Uoc3RkOjp1bmlxdWVfcHRyPElQQzo6RW5jb2Rlcj4gZW5jb2RlciwgT3B0aW9u
U2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMsIE9wdGlvbmFsPHN0ZDo6cGFpcjxDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+PiYmIGFzeW5jUmVw
bHlJbmZvLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSBzaG91bGRTdGFydFBy
b2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKKyAgICBpZiAoYXN5bmNSZXBseUluZm8gJiYgY2Fu
U2VuZE1lc3NhZ2UoKSAmJiBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSA9PSBT
aG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eTo6WWVzKSB7CisgICAgICAgIGF1dG8g
Y29tcGxldGlvbkhhbmRsZXIgPSBzdGQ6OmV4Y2hhbmdlKGFzeW5jUmVwbHlJbmZvLT5maXJzdCwg
bnVsbHB0cik7CisgICAgICAgIGFzeW5jUmVwbHlJbmZvLT5maXJzdCA9IFthY3Rpdml0eSA9IHRo
cm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eShBU0NJSUxpdGVyYWw6Om51bGwoKSksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKElQQzo6RGVjb2Rlciog
ZGVjb2RlcikgbXV0YWJsZSB7CisgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkZWNvZGVy
KTsKKyAgICAgICAgfTsKKyAgICB9CisKICAgICBzd2l0Y2ggKHN0YXRlKCkpIHsKICAgICBjYXNl
IFN0YXRlOjpMYXVuY2hpbmc6CiAgICAgICAgIC8vIElmIHdlJ3JlIHdhaXRpbmcgZm9yIHRoZSBj
aGlsZCBwcm9jZXNzIHRvIGxhdW5jaCwgd2UgbmVlZCB0byBzdGFzaCBhd2F5IHRoZSBtZXNzYWdl
cyBzbyB3ZSBjYW4gc2VuZCB0aGVtIG9uY2Ugd2UgaGF2ZSBhIGNvbm5lY3Rpb24uCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BdXhpbGlhcnlQcm9jZXNzUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCmluZGV4IDdhMjY4
YzRiYjc5ZDVhYzNlZWE0NWZhOTY1NjY4MmNkM2U1OWZiMzAuLmM1ZDcyZWRlNDI1ZjAxZTk2NTdk
ZTM1MDJhN2RkOGYxZDNjOGQ4MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0F1eGlsaWFyeVByb2Nlc3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0F1
eGlsaWFyeVByb2Nlc3NQcm94eS5oCkBAIC0zNiw2ICszNiw4IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCitjbGFzcyBQcm9jZXNzVGhyb3R0bGVyOworCiBjbGFzcyBBdXhpbGlhcnlQcm9jZXNz
UHJveHkgOiBQcm9jZXNzTGF1bmNoZXI6OkNsaWVudCwgcHVibGljIElQQzo6Q29ubmVjdGlvbjo6
Q2xpZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShBdXhpbGlhcnlQcm9jZXNzUHJveHkp
OwogCkBAIC00OCw5ICs1MCwxMyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjb25uZWN0KCk7CiAgICAg
dm9pZCB0ZXJtaW5hdGUoKTsKIAorICAgIHZpcnR1YWwgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0
bGVyKCkgPSAwOworCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kKFQmJiBtZXNz
YWdlLCB1aW50NjRfdCBkZXN0aW5hdGlvbklELCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9uPiBz
ZW5kT3B0aW9ucyA9IHsgfSk7CiAgICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4gYm9vbCBzZW5kU3lu
YyhUJiYgbWVzc2FnZSwgdHlwZW5hbWUgVDo6UmVwbHkmJiwgdWludDY0X3QgZGVzdGluYXRpb25J
RCwgU2Vjb25kcyB0aW1lb3V0ID0gMV9zLCBPcHRpb25TZXQ8SVBDOjpTZW5kU3luY09wdGlvbj4g
c2VuZFN5bmNPcHRpb25zID0geyB9KTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFt
ZSBDPiB2b2lkIHNlbmRXaXRoQXN5bmNSZXBseShUJiYsIEMmJiwgdWludDY0X3QgZGVzdGluYXRp
b25JRCA9IDAsIE9wdGlvblNldDxJUEM6OlNlbmRPcHRpb24+ID0geyB9KTsKKworICAgIGVudW0g
Y2xhc3MgU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHkgOiBib29sIHsgTm8sIFll
cyB9OworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEM+IHZvaWQgc2VuZFdpdGhB
c3luY1JlcGx5KFQmJiwgQyYmLCB1aW50NjRfdCBkZXN0aW5hdGlvbklEID0gMCwgT3B0aW9uU2V0
PElQQzo6U2VuZE9wdGlvbj4gPSB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2
aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Olllcyk7CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUgVT4KICAgICBib29sIHNlbmQoVCYmIG1l
c3NhZ2UsIE9iamVjdElkZW50aWZpZXI8VT4gZGVzdGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6
U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMgPSB7IH0pCkBAIC0xMDQsNyArMTEwLDcgQEAgcHVibGlj
OgogICAgIFByb2Nlc3NJRCBwcm9jZXNzSWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fcHJv
Y2Vzc0xhdW5jaGVyID8gbV9wcm9jZXNzTGF1bmNoZXItPnByb2Nlc3NJZGVudGlmaWVyKCkgOiAw
OyB9CiAKICAgICBib29sIGNhblNlbmRNZXNzYWdlKCkgY29uc3QgeyByZXR1cm4gc3RhdGUoKSAh
PSBTdGF0ZTo6VGVybWluYXRlZDt9Ci0gICAgYm9vbCBzZW5kTWVzc2FnZShzdGQ6OnVuaXF1ZV9w
dHI8SVBDOjpFbmNvZGVyPiwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4sIE9wdGlvbmFsPHN0
ZDo6cGFpcjxDb21wbGV0aW9uSGFuZGxlcjx2b2lkKElQQzo6RGVjb2RlciopPiwgdWludDY0X3Q+
PiYmIGFzeW5jUmVwbHlJbmZvID0gV1RGOjpudWxsb3B0KTsKKyAgICBib29sIHNlbmRNZXNzYWdl
KHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+LCBPcHRpb25TZXQ8SVBDOjpTZW5kT3B0aW9u
PiwgT3B0aW9uYWw8c3RkOjpwYWlyPENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSVBDOjpEZWNvZGVy
Kik+LCB1aW50NjRfdD4+JiYgYXN5bmNSZXBseUluZm8gPSBXVEY6Om51bGxvcHQsIFNob3VsZFN0
YXJ0UHJvY2Vzc1Rocm90dGxlckFjdGl2aXR5ID0gU2hvdWxkU3RhcnRQcm9jZXNzVGhyb3R0bGVy
QWN0aXZpdHk6Olllcyk7CiAKICAgICB2b2lkIHNodXREb3duUHJvY2VzcygpOwogCkBAIC0xNzAs
NyArMTc2LDcgQEAgYm9vbCBBdXhpbGlhcnlQcm9jZXNzUHJveHk6OnNlbmRTeW5jKFUmJiBtZXNz
YWdlLCB0eXBlbmFtZSBVOjpSZXBseSYmIHJlcGx5LCB1aW4KIH0KIAogdGVtcGxhdGU8dHlwZW5h
bWUgVCwgdHlwZW5hbWUgQz4KLXZvaWQgQXV4aWxpYXJ5UHJvY2Vzc1Byb3h5OjpzZW5kV2l0aEFz
eW5jUmVwbHkoVCYmIG1lc3NhZ2UsIEMmJiBjb21wbGV0aW9uSGFuZGxlciwgdWludDY0X3QgZGVz
dGluYXRpb25JRCwgT3B0aW9uU2V0PElQQzo6U2VuZE9wdGlvbj4gc2VuZE9wdGlvbnMpCit2b2lk
IEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5KFQmJiBtZXNzYWdlLCBD
JiYgY29tcGxldGlvbkhhbmRsZXIsIHVpbnQ2NF90IGRlc3RpbmF0aW9uSUQsIE9wdGlvblNldDxJ
UEM6OlNlbmRPcHRpb24+IHNlbmRPcHRpb25zLCBTaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJB
Y3Rpdml0eSBzaG91bGRTdGFydFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSkKIHsKICAgICBDT01Q
SUxFX0FTU0VSVCghVDo6aXNTeW5jLCBBc3luY01lc3NhZ2VFeHBlY3RlZCk7CiAKQEAgLTE4Myw3
ICsxODksNyBAQCB2b2lkIEF1eGlsaWFyeVByb2Nlc3NQcm94eTo6c2VuZFdpdGhBc3luY1JlcGx5
KFQmJiBtZXNzYWdlLCBDJiYgY29tcGxldGlvbkhhbmRsZQogICAgICAgICAgICAgVDo6Y2FsbFJl
cGx5KCpkZWNvZGVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgICAgIGVsc2UK
ICAgICAgICAgICAgIFQ6OmNhbmNlbFJlcGx5KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
LSAgICB9LCBsaXN0ZW5lcklEIH19KTsKKyAgICB9LCBsaXN0ZW5lcklEIH19LCBzaG91bGRTdGFy
dFByb2Nlc3NUaHJvdHRsZXJBY3Rpdml0eSk7CiB9CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJv
eHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAK
aW5kZXggNjE2MDQ4MWMwMTVkYzdkYjA0YzAwNzQ2ZTRhNzljYjMwZDAxNzU1Yy4uZDFlMTJhZmQ0
ZGI3ZWJiODJhYzE5NGU1MGRhMzYzOGY0NzFiZjIyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5jcHAKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lk
IEdQVVByb2Nlc3NQcm94eTo6Z2V0R1BVUHJvY2Vzc0Nvbm5lY3Rpb24oV2ViUHJvY2Vzc1Byb3h5
JiB3ZWJQcm9jZXNzUHJveHksCiAjZW5kaWYKIAogICAgIFJFTEVBU0VfTE9HKFByb2Nlc3NTdXNw
ZW5zaW9uLCAiJXAgLSBHUFVQcm9jZXNzUHJveHkgaXMgdGFraW5nIGEgYmFja2dyb3VuZCBhc3Nl
cnRpb24gYmVjYXVzZSBhIHdlYiBwcm9jZXNzIGlzIHJlcXVlc3RpbmcgYSBjb25uZWN0aW9uIiwg
dGhpcyk7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpLCBhY3Rpdml0
eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiR1BVUHJvY2Vzc1Byb3h5OjpnZXRH
UFVQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmllcikgbXV0
YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpHUFVQcm9jZXNzOjpDcmVh
dGVHUFVDb25uZWN0aW9uVG9XZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNz
SWRlbnRpZmllcigpLCB3ZWJQcm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtU
aGlzID0gbWFrZVdlYWtQdHIoKnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYg
Y29ubmVjdGlvbklkZW50aWZpZXIpIG11dGFibGUgewogICAgICAgICBpZiAoIXdlYWtUaGlzKSB7
CiAgICAgICAgICAgICBSRUxFQVNFX0xPR19FUlJPUihQcm9jZXNzLCAiR1BVUHJvY2Vzc1Byb3h5
OjpnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbjogR1BVUHJvY2Vzc1Byb3h5IGRlYWxsb2NhdGVkIGR1
cmluZyBjb25uZWN0aW9uIGVzdGFibGlzaG1lbnQiKTsKICAgICAgICAgICAgIHJldHVybiByZXBs
eSh7IH0pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nl
c3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvR1BVL0dQVVByb2Nlc3NQcm94eS5o
CmluZGV4IDMzYjNlMjcxMWM1NzMxZjMxNTRmNzJmYjVjYzIxYjdlNzk4NjlhNzcuLjVmMTY3NjIy
NmFkMzA1NmZiYTk5OGYzM2Y4YTdmMTQxZWZhMzVkOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0dQVS9HUFVQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9HUFUvR1BVUHJvY2Vzc1Byb3h5LmgKQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgog
CiAgICAgdm9pZCBnZXRHUFVQcm9jZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmLCBNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRHUFVQcm9jZXNzQ29ubmVjdGlvbkRlbGF5ZWRSZXBs
eSYmKTsKIAotICAgIFByb2Nlc3NUaHJvdHRsZXImIHRocm90dGxlcigpIHsgcmV0dXJuIG1fdGhy
b3R0bGVyOyB9CisgICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgZmluYWwgeyByZXR1
cm4gbV90aHJvdHRsZXI7IH0KICAgICB2b2lkIHVwZGF0ZVByb2Nlc3NBc3NlcnRpb24oKTsKIAog
ICAgIC8vIFByb2Nlc3NUaHJvdHRsZXJDbGllbnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL05ldHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuY3BwCmluZGV4IDUwMjk4OGFl
NTVlODFhMWE0Mzc4ZTRlNzE4OTgzYzc3MzgxZjcyZmEuLmYwNjMzNjVhYjliNTkxMDg1ZGY2Y2Vk
YTQ2N2ZhYThkZDUwNjRkYjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL05l
dHdvcmsvTmV0d29ya1Byb2Nlc3NQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTmV0d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6cHJvY2Vzc1dpbGxTaHV0RG93bihJUEM6OkNvbm5lY3Rp
b24mIGNvbm5lY3Rpb24pCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9j
ZXNzQ29ubmVjdGlvbihXZWJQcm9jZXNzUHJveHkmIHdlYlByb2Nlc3NQcm94eSwgTWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0TmV0d29ya1Byb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVw
bHkmJiByZXBseSkKIHsKICAgICBSRUxFQVNFX0xPRyhQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0g
TmV0d29ya1Byb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNrZ3JvdW5kIGFzc2VydGlvbiBiZWNh
dXNlIGEgd2ViIHByb2Nlc3MgaXMgcmVxdWVzdGluZyBhIGNvbm5lY3Rpb24iLCB0aGlzKTsKLSAg
ICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpDcmVhdGVOZXR3
b3JrQ29ubmVjdGlvblRvV2ViUHJvY2VzcyB7IHdlYlByb2Nlc3NQcm94eS5jb3JlUHJvY2Vzc0lk
ZW50aWZpZXIoKSwgd2ViUHJvY2Vzc1Byb3h5LnNlc3Npb25JRCgpIH0sIFt0aGlzLCB3ZWFrVGhp
cyA9IG1ha2VXZWFrUHRyKCp0aGlzKSwgcmVwbHkgPSBXVEZNb3ZlKHJlcGx5KSwgYWN0aXZpdHkg
PSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6Omdl
dE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbiJfcyldKGF1dG8mJiBjb25uZWN0aW9uSWRlbnRpZmll
ciwgYXV0byBjb29raWVBY2NlcHRQb2xpY3kpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OkNyZWF0ZU5ldHdvcmtDb25uZWN0aW9uVG9X
ZWJQcm9jZXNzIHsgd2ViUHJvY2Vzc1Byb3h5LmNvcmVQcm9jZXNzSWRlbnRpZmllcigpLCB3ZWJQ
cm9jZXNzUHJveHkuc2Vzc2lvbklEKCkgfSwgW3RoaXMsIHdlYWtUaGlzID0gbWFrZVdlYWtQdHIo
KnRoaXMpLCByZXBseSA9IFdURk1vdmUocmVwbHkpXShhdXRvJiYgY29ubmVjdGlvbklkZW50aWZp
ZXIsIGF1dG8gY29va2llQWNjZXB0UG9saWN5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKCF3ZWFr
VGhpcykgewogICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUHJvY2VzcywgIk5ldHdvcmtQ
cm9jZXNzUHJveHk6OmdldE5ldHdvcmtQcm9jZXNzQ29ubmVjdGlvbjogTmV0d29ya1Byb2Nlc3NQ
cm94eSBkZWFsbG9jYXRlZCBkdXJpbmcgY29ubmVjdGlvbiBlc3RhYmxpc2htZW50Iik7CiAgICAg
ICAgICAgICByZXR1cm4gcmVwbHkoeyB9KTsKQEAgLTg0OSw3ICs4NDksNyBAQCB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldEdyYW5kZmF0aGVyZWQoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBSZWdpcwogCiB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFi
YXNlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgYm9vbCB2YWx1ZSwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldFVzZUlUUERhdGFiYXNlKHNlc3Npb25JRCwg
dmFsdWUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdv
cmtQcm9jZXNzUHJveHk6OnNldFVzZUlUUERhdGFiYXNlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFz
eW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRVc2VJVFBEYXRhYmFzZShzZXNz
aW9uSUQsIHZhbHVlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlcildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7
CiB9CkBAIC05ODIsNyArOTgyLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpyZXNldENh
Y2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKFBBTDo6U2Vzc2lvbkkKICAgICAgICAg
cmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5l
dHdvcmtQcm9jZXNzOjpSZXNldENhY2hlTWF4QWdlQ2FwRm9yUHJldmFsZW50UmVzb3VyY2VzKHNl
c3Npb25JRCksIFthY3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0
d29ya1Byb2Nlc3NQcm94eTo6cmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNl
cyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6UmVzZXRDYWNoZU1heEFnZUNhcEZvclByZXZhbGVudFJlc291cmNlcyhzZXNzaW9uSUQpLCBb
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxl
IHsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKICAgICB9KTsKIH0KQEAgLTk5NCw3ICs5
OTQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFyYW1ldGVyc1RvRGVmYXVs
dFZhbHVlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSQogICAgICAgICByZXR1cm47CiAgICAgfQog
ICAgIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlJl
c2V0UGFyYW1ldGVyc1RvRGVmYXVsdFZhbHVlcyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0UGFy
YW1ldGVyc1RvRGVmYXVsdFZhbHVlcyJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6UmVzZXRQYXJhbWV0ZXJzVG9EZWZhdWx0VmFsdWVzKHNl
c3Npb25JRCksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
XSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgIH0pOwogfQpA
QCAtMTAxNiw3ICsxMDE2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNs
ZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KFBBTDo6U2Vzc2lvbklEIHNlc3MKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1By
b2Nlc3M6OlNjaGVkdWxlQ2xlYXJJbk1lbW9yeUFuZFBlcnNpc3RlbnQoc2Vzc2lvbklELCB7IH0s
IHNob3VsZEdyYW5kZmF0aGVyKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJz
aXN0ZW50Il9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQ
cm9jZXNzOjpTY2hlZHVsZUNsZWFySW5NZW1vcnlBbmRQZXJzaXN0ZW50KHNlc3Npb25JRCwgeyB9
LCBzaG91bGRHcmFuZGZhdGhlciksIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxl
dGlvbkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwog
ICAgIH0pOwogfQpAQCAtMTA5Niw3ICsxMDk2LDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5
OjpyZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0aW9uRm9yVGVzdGluZyhQQUw6OlMK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNvcmF0
aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3Jv
dW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnJlc2V0Q3Jvc3NTaXRlTG9hZHNXaXRo
TGlua0RlY29yYXRpb25Gb3JUZXN0aW5nIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHko
TWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpSZXNldENyb3NzU2l0ZUxvYWRzV2l0aExpbmtEZWNv
cmF0aW9uRm9yVGVzdGluZyhzZXNzaW9uSUQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KQEAgLTExMzgsNyArMTEzOCw3IEBAIHZvaWQgTmV0d29ya1Byb2Nl
c3NQcm94eTo6aGFzSXNvbGF0ZWRTZXNzaW9uKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29u
c3QgUmVnCiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0QXBwQm91bmREb21haW5zRm9y
UmVzb3VyY2VMb2FkU3RhdGlzdGljcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IEhh
c2hTZXQ8UmVnaXN0cmFibGVEb21haW4+JiBhcHBCb3VuZERvbWFpbnMsIENvbXBsZXRpb25IYW5k
bGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFpbnNGb3JSZXNvdXJj
ZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwgW2FjdGl2aXR5ID0g
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRB
cHBCb3VuZERvbWFpbnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzIl9zKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICBzZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRBcHBCb3VuZERvbWFp
bnNGb3JSZXNvdXJjZUxvYWRTdGF0aXN0aWNzKHNlc3Npb25JRCwgYXBwQm91bmREb21haW5zKSwg
W2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJs
ZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CkBAIC0xMTUwLDIz
ICsxMTUwLDIxIEBAIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGJvb2wgZW5hYmxlZCwgQ29tCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vz
czo6U2V0U2hvdWxkRG93bmdyYWRlUmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbYWN0aXZp
dHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6
OnNldFNob3VsZERvd25ncmFkZVJlZmVycmVyRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRG93bmdyYWRl
UmVmZXJyZXJGb3JUZXN0aW5nKGVuYWJsZWQpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoKTsKICAgICB9KTsKIH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgVGhpcmRQYXJ0
eUNvb2tpZUJsb2NraW5nTW9kZSBibG9ja2luZ01vZGUsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Np
b25JRCwgYmxvY2tpbmdNb2RlKSwgW2FjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdN
b2RlIl9zKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0o
KSBtdXRhYmxlIHsKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Ok5ldHdvcmtQcm9j
ZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHNlc3Npb25JRCwgYmxvY2tpbmdN
b2RlKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7CiAgICAgfSk7CiB9CiAKIHZv
aWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9y
Y2VtZW50Rm9yVGVzdGluZyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIFdlYkNvcmU6OlNhbWVT
aXRlU3RyaWN0RW5mb3JjZW1lbnRFbmFibGVkIGVuYWJsZWQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6Ok5ldHdvcmtQcm9jZXNzOjpTZXRTaG91bGRFbmJsZVNhbWVTaXRlU3RyaWN0RW5mb3Jj
ZW1lbnRGb3JUZXN0aW5nKHNlc3Npb25JRCwgZW5hYmxlZCksIFthY3Rpdml0eSA9IHRocm90dGxl
cigpLmJhY2tncm91bmRBY3Rpdml0eSgiTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0U2hvdWxkRW5i
bGVTYW1lU2l0ZVN0cmljdEVuZm9yY2VtZW50Rm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0U2hvdWxkRW5ibGVTYW1lU2l0ZVN0cmljdEVuZm9yY2Vt
ZW50Rm9yVGVzdGluZyhzZXNzaW9uSUQsIGVuYWJsZWQpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2V0Rmlyc3RQYXJ0eVdlYnNp
dGVEYXRhUmVtb3ZhbE1vZGVGb3JUZXN0aW5nKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgRmly
c3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGUgbW9kZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQpAQCAtMTE3Niw5ICsxMTc0LDcgQEAgdm9pZCBOZXR3
b3JrUHJvY2Vzc1Byb3h5OjpzZXRGaXJzdFBhcnR5V2Vic2l0ZURhdGFSZW1vdmFsTW9kZUZvclRl
c3RpbmcoUEFMOjpTZXMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNlbmRXaXRoQXN5
bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlNldEZpcnN0UGFydHlXZWJzaXRlRGF0
YVJlbW92YWxNb2RlRm9yVGVzdGluZyhzZXNzaW9uSUQsIG1vZGUpLCBbYWN0aXZpdHkgPSB0aHJv
dHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIk5ldHdvcmtQcm9jZXNzUHJveHk6OnNldEZpcnN0
UGFydHlXZWJzaXRlRGF0YVJlbW92YWxNb2RlRm9yVGVzdGluZyJfcyksIGNvbXBsZXRpb25IYW5k
bGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgIGNv
bXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzczo6U2V0Rmlyc3RQYXJ0eVdlYnNpdGVEYXRhUmVtb3ZhbE1vZGVG
b3JUZXN0aW5nKHNlc3Npb25JRCwgbW9kZSksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBOZXR3b3JrUHJvY2Vzc1Byb3h5OjpzZXRUb1NhbWVTaXRlU3RyaWN0Q29va2ll
c0ZvclRlc3RpbmcoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBjb25zdCBSZWdpc3RyYWJsZURv
bWFpbiYgZG9tYWluLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCkBAIC0xMjA4LDcgKzEyMDQsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzUHJveHk6OnNlbmRQ
cm9jZXNzV2lsbFN1c3BlbmRJbW1pbmVudGx5Rm9yVGVzdGluZygpCiAgICAgCiB2b2lkIE5ldHdv
cmtQcm9jZXNzUHJveHk6OnNlbmRQcmVwYXJlVG9TdXNwZW5kKElzU3VzcGVuc2lvbkltbWluZW50
IGlzU3VzcGVuc2lvbkltbWluZW50LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpOZXR3b3Jr
UHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3Bl
bnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3M6OlByZXBhcmVUb1N1c3Bl
bmQoaXNTdXNwZW5zaW9uSW1taW5lbnQgPT0gSXNTdXNwZW5zaW9uSW1taW5lbnQ6OlllcyksIFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCAwLCB7IH0sIFNob3VsZFN0YXJ0UHJvY2Vzc1Rocm90
dGxlckFjdGl2aXR5OjpObyk7CiB9CiAKIHZvaWQgTmV0d29ya1Byb2Nlc3NQcm94eTo6c2VuZFBy
b2Nlc3NEaWRSZXN1bWUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTmV0
d29yay9OZXR3b3JrUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3
b3JrL05ldHdvcmtQcm9jZXNzUHJveHkuaAppbmRleCA3MWVlM2JmNDlhMDhiMzRhNDdlN2NmNDFk
MjNjZjk0ODNjNWE1ZTRjLi4yM2I5ZWFjMzNlMTVmODkzODMxNjI4YmZmY2YzMjZlZjk1MzFkZDIz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQcm9j
ZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9OZXR3b3JrL05ldHdvcmtQ
cm9jZXNzUHJveHkuaApAQCAtMTkzLDcgKzE5Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHRlc3RQ
cm9jZXNzSW5jb21pbmdTeW5jTWVzc2FnZXNXaGVuV2FpdGluZ0ZvclN5bmNSZXBseShXZWJQYWdl
UHJveHlJZGVudGlmaWVyLCBNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6VGVzdFByb2Nl
c3NJbmNvbWluZ1N5bmNNZXNzYWdlc1doZW5XYWl0aW5nRm9yU3luY1JlcGx5RGVsYXllZFJlcGx5
JiYpOwogICAgIHZvaWQgdGVybWluYXRlVW5yZXNwb25zaXZlU2VydmljZVdvcmtlclByb2Nlc3Nl
cyhXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllcik7CiAKLSAgICBQcm9jZXNzVGhyb3R0bGVyJiB0
aHJvdHRsZXIoKSB7IHJldHVybiBtX3Rocm90dGxlcjsgfQorICAgIFByb2Nlc3NUaHJvdHRsZXIm
IHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CiAgICAgdm9pZCB1cGRh
dGVQcm9jZXNzQXNzZXJ0aW9uKCk7CiAKICAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2wo
KSB7IHJldHVybiBtX3Byb2Nlc3NQb29sOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQcm94eS5jcHAKaW5kZXggYzRiZTE2NmFmOWRm
YjE0YmVmMzY0ZjlkZDc4Yzc0OTFkYWIwZjk1Mi4uN2Q5ZDliMjg2ZDRlOTZlOTMxNjEwY2M2ZjRj
YmIwYTQ2NzBlMmIwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Bs
dWdpbnMvUGx1Z2luUHJvY2Vzc1Byb3h5LmNwcApAQCAtNjIsNyArNjIsOCBAQCBSZWY8UGx1Z2lu
UHJvY2Vzc1Byb3h5PiBQbHVnaW5Qcm9jZXNzUHJveHk6OmNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciogUGx1Z2luUAogfQogCiBQbHVnaW5Qcm9jZXNzUHJveHk6OlBsdWdpblByb2Nlc3NQcm94
eShQbHVnaW5Qcm9jZXNzTWFuYWdlciogUGx1Z2luUHJvY2Vzc01hbmFnZXIsIGNvbnN0IFBsdWdp
blByb2Nlc3NBdHRyaWJ1dGVzJiBwbHVnaW5Qcm9jZXNzQXR0cmlidXRlcywgdWludDY0X3QgcGx1
Z2luUHJvY2Vzc1Rva2VuKQotICAgIDogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcihQbHVnaW5Qcm9j
ZXNzTWFuYWdlcikKKyAgICA6IG1fdGhyb3R0bGVyKCp0aGlzLCBmYWxzZSkKKyAgICAsIG1fcGx1
Z2luUHJvY2Vzc01hbmFnZXIoUGx1Z2luUHJvY2Vzc01hbmFnZXIpCiAgICAgLCBtX3BsdWdpblBy
b2Nlc3NBdHRyaWJ1dGVzKHBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzKQogICAgICwgbV9wbHVnaW5Q
cm9jZXNzVG9rZW4ocGx1Z2luUHJvY2Vzc1Rva2VuKQogICAgICwgbV9udW1QZW5kaW5nQ29ubmVj
dGlvblJlcXVlc3RzKDApCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVn
aW5zL1BsdWdpblByb2Nlc3NQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvUGx1Z2lu
cy9QbHVnaW5Qcm9jZXNzUHJveHkuaAppbmRleCBhZjIyM2RiZDk1N2QxODQzOTg4OWZkYmNmMmQ5
NWZmNzJlOGNkMDhlLi4zNGNlNTZlMzc1ZjQwYmM0NmU5NDg1NTllNmIyNDc4ZmI5ZmNkMGVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9QbHVnaW5zL1BsdWdpblByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1BsdWdpbnMvUGx1Z2luUHJvY2Vz
c1Byb3h5LmgKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJQbHVnaW5Qcm9jZXNzLmgiCiAj
aW5jbHVkZSAiUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMuaCIKICNpbmNsdWRlICJQcm9jZXNzTGF1
bmNoZXIuaCIKKyNpbmNsdWRlICJQcm9jZXNzVGhyb3R0bGVyLmgiCisjaW5jbHVkZSAiUHJvY2Vz
c1Rocm90dGxlckNsaWVudC5oIgogI2luY2x1ZGUgIldlYlByb2Nlc3NQcm94eU1lc3NhZ2VzUmVw
bGllcy5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgogCkBAIC02MSw3ICs2Myw3IEBAIGludCBw
bHVnaW5Qcm9jZXNzTGF0ZW5jeVFPUygpOwogaW50IHBsdWdpblByb2Nlc3NUaHJvdWdocHV0UU9T
KCk7CiAjZW5kaWYKIAotY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4geworY2xhc3MgUGx1Z2luUHJvY2Vzc1Byb3h5IGZpbmFsIDogcHVibGljIEF1
eGlsaWFyeVByb2Nlc3NQcm94eSwgcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFBsdWdpblBy
b2Nlc3NQcm94eT4sIHByaXZhdGUgUHJvY2Vzc1Rocm90dGxlckNsaWVudCB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxQbHVnaW5Qcm9jZXNzUHJveHk+IGNyZWF0ZShQbHVnaW5Qcm9jZXNzTWFu
YWdlciosIGNvbnN0IFBsdWdpblByb2Nlc3NBdHRyaWJ1dGVzJiwgdWludDY0X3QgcGx1Z2luUHJv
Y2Vzc1Rva2VuKTsKICAgICB+UGx1Z2luUHJvY2Vzc1Byb3h5KCk7CkBAIC04Nyw2ICs4OSw4IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgYm9vbCBzY2FuUGx1Z2luKGNvbnN0IFN0cmluZyYgcGx1Z2lu
UGF0aCwgUmF3UGx1Z2luTWV0YURhdGEmIHJlc3VsdCk7CiAjZW5kaWYKIAorICAgIFByb2Nlc3NU
aHJvdHRsZXImIHRocm90dGxlcigpIGZpbmFsIHsgcmV0dXJuIG1fdGhyb3R0bGVyOyB9CisKIHBy
aXZhdGU6CiAgICAgUGx1Z2luUHJvY2Vzc1Byb3h5KFBsdWdpblByb2Nlc3NNYW5hZ2VyKiwgY29u
c3QgUGx1Z2luUHJvY2Vzc0F0dHJpYnV0ZXMmLCB1aW50NjRfdCBwbHVnaW5Qcm9jZXNzVG9rZW4p
OwogCkBAIC05OSw2ICsxMDMsMTEgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGx1Z2luUHJvY2Vz
c0NyYXNoZWRPckZhaWxlZFRvTGF1bmNoKCk7CiAKKyAgICAvLyBQcm9jZXNzVGhyb3R0bGVyQ2xp
ZW50CisgICAgdm9pZCBzZW5kUHJlcGFyZVRvU3VzcGVuZChJc1N1c3BlbnNpb25JbW1pbmVudCwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSBmaW5hbCB7IGNv
bXBsZXRpb25IYW5kbGVyKCk7IH0KKyAgICB2b2lkIHNlbmRQcm9jZXNzRGlkUmVzdW1lKCkgZmlu
YWwgeyB9CisgICAgQVNDSUlMaXRlcmFsIGNsaWVudE5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVy
biAiUGx1Z2luUHJvY2VzcyJfczsgfQorCiAgICAgLy8gSVBDOjpDb25uZWN0aW9uOjpDbGllbnQK
ICAgICB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlKElQQzo6Q29ubmVjdGlvbiYsIElQQzo6RGVjb2Rl
ciYpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkUmVjZWl2ZVN5bmNNZXNzYWdlKElQQzo6Q29ubmVj
dGlvbiYsIElQQzo6RGVjb2RlciYsIHN0ZDo6dW5pcXVlX3B0cjxJUEM6OkVuY29kZXI+Jikgb3Zl
cnJpZGU7CkBAIC0xMzcsNiArMTQ2LDggQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgcGxhdGZvcm1J
bml0aWFsaXplUGx1Z2luUHJvY2VzcyhQbHVnaW5Qcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKTsKIAorICAgIFByb2Nlc3NUaHJvdHRsZXIgbV90aHJvdHRsZXI7CisKICAgICAv
LyBUaGUgcGx1Zy1pbiBob3N0IHByb2Nlc3MgbWFuYWdlci4KICAgICBQbHVnaW5Qcm9jZXNzTWFu
YWdlciogbV9wbHVnaW5Qcm9jZXNzTWFuYWdlcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvUHJvY2Vzc1Rocm90dGxlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
UHJvY2Vzc1Rocm90dGxlci5oCmluZGV4IDhhMjEyZTUwNzU1ZjRlY2M4NWYxNDI3ZTIzMTFmN2I2
MzYyNGI2ZTEuLjA5ZDZkMzI2NzZjZWZiYWMyNjlkNmNkNzhiODYxOWE2N2Y2OTM3MDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1Byb2Nlc3NUaHJvdHRsZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Qcm9jZXNzVGhyb3R0bGVyLmgKQEAgLTY1LDggKzY1LDEw
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICwgbV9uYW1lKG5hbWUpCiAgICAgICAgIHsKICAgICAg
ICAgICAgIHRocm90dGxlci5hZGRBY3Rpdml0eSgqdGhpcyk7Ci0gICAgICAgICAgICBQUk9DRVNT
VEhST1RUTEVSX0FDVElWSVRZX1JFTEVBU0VfTE9HKCJBY3Rpdml0eTogU3RhcnRpbmcgJSIgUFVC
TElDX0xPR19TVFJJTkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyIsCi0g
ICAgICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdy
b3VuZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAg
aWYgKCFpc1F1aWV0QWN0aXZpdHkoKSkgeworICAgICAgICAgICAgICAgIFBST0NFU1NUSFJPVFRM
RVJfQUNUSVZJVFlfUkVMRUFTRV9MT0coIkFjdGl2aXR5OiBTdGFydGluZyAlIiBQVUJMSUNfTE9H
X1NUUklORyAiIGFjdGl2aXR5IC8gJyUiIFBVQkxJQ19MT0dfU1RSSU5HICInIiwKKyAgICAgICAg
ICAgICAgICAgICAgdHlwZSA9PSBBY3Rpdml0eVR5cGU6OkZvcmVncm91bmQgPyAiZm9yZWdyb3Vu
ZCIgOiAiYmFja2dyb3VuZCIsIG1fbmFtZS5jaGFyYWN0ZXJzKCkpOworICAgICAgICAgICAgfQog
ICAgICAgICB9CiAKICAgICAgICAgfkFjdGl2aXR5KCkKQEAgLTgwLDExICs4MiwxNSBAQCBwdWJs
aWM6CiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIFByb2Nlc3NUaHJvdHRsZXI7
CiAKKyAgICAgICAgYm9vbCBpc1F1aWV0QWN0aXZpdHkoKSBjb25zdCB7IHJldHVybiAhbV9uYW1l
LmNoYXJhY3RlcnMoKTsgfQorCiAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpCiAgICAgICAgIHsK
ICAgICAgICAgICAgIEFTU0VSVChpc1ZhbGlkKCkpOwotICAgICAgICAgICAgUFJPQ0VTU1RIUk9U
VExFUl9BQ1RJVklUWV9SRUxFQVNFX0xPRygiaW52YWxpZGF0ZTogRW5kaW5nICUiIFBVQkxJQ19M
T0dfU1RSSU5HICIgYWN0aXZpdHkgLyAnJSIgUFVCTElDX0xPR19TVFJJTkcgIiciLAotICAgICAg
ICAgICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQi
IDogImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAgIGlmICgh
aXNRdWlldEFjdGl2aXR5KCkpIHsKKyAgICAgICAgICAgICAgICBQUk9DRVNTVEhST1RUTEVSX0FD
VElWSVRZX1JFTEVBU0VfTE9HKCJpbnZhbGlkYXRlOiBFbmRpbmcgJSIgUFVCTElDX0xPR19TVFJJ
TkcgIiBhY3Rpdml0eSAvICclIiBQVUJMSUNfTE9HX1NUUklORyAiJyIsCisgICAgICAgICAgICAg
ICAgICAgIHR5cGUgPT0gQWN0aXZpdHlUeXBlOjpGb3JlZ3JvdW5kID8gImZvcmVncm91bmQiIDog
ImJhY2tncm91bmQiLCBtX25hbWUuY2hhcmFjdGVycygpKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIG1fdGhyb3R0bGVyLT5yZW1vdmVBY3Rpdml0eSgqdGhpcyk7CiAgICAgICAgICAgICBt
X3Rocm90dGxlciA9IG51bGxwdHI7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VzZXJNZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5LmNwcAppbmRleCA5MTU1MzlmZDhkN2Y2NWYxNDM1MWFkMmY1MDc3NTBmMzc1MDQ1MWI3
Li5jY2ViNjFmMTRiNTg1Yzg1MWMxNmFkNjFmZGNmYmE3YjgxNzA4YTM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Vc2VyTWVkaWFQZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQ
cm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVXNlck1lZGlhUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC0yNjAsMTIgKzI2MCwxMiBAQCB2b2lkIFVzZXJN
ZWRpYVBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpmaW5pc2hHcmFudGluZ1JlcXVlc3Qo
VXNlck1lZGlhUGVybQogICAgICAgICB9CiAjZW5kaWYKIAotICAgICAgICBtX3BhZ2UucHJvY2Vz
cygpLmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpV
c2VyTWVkaWFBY2Nlc3NXYXNHcmFudGVkIHsgcmVxdWVzdC51c2VyTWVkaWFJRCgpLCByZXF1ZXN0
LmF1ZGlvRGV2aWNlKCksIHJlcXVlc3QudmlkZW9EZXZpY2UoKSwgcmVxdWVzdC5kZXZpY2VJZGVu
dGlmaWVySGFzaFNhbHQoKSwgaGFuZGxlIH0sIFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vh
a1RoaXMpXSB7CisgICAgICAgIG1fcGFnZS5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OlVzZXJNZWRpYUFjY2Vzc1dhc0dyYW50ZWQgeyByZXF1ZXN0LnVzZXJNZWRpYUlEKCks
IHJlcXVlc3QuYXVkaW9EZXZpY2UoKSwgcmVxdWVzdC52aWRlb0RldmljZSgpLCByZXF1ZXN0LmRl
dmljZUlkZW50aWZpZXJIYXNoU2FsdCgpLCBoYW5kbGUgfSwgW3RoaXMsIHdlYWtUaGlzID0gV1RG
TW92ZSh3ZWFrVGhpcyldIHsKICAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCiAgICAgICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICAgICAgaWYgKCEtLW1faGFzUGVuZGluZ0NhcHR1cmUpCiAg
ICAgICAgICAgICAgICAgVXNlck1lZGlhUHJvY2Vzc01hbmFnZXI6OnNpbmdsZXRvbigpLnJldm9r
ZVNhbmRib3hFeHRlbnNpb25zSWZOZWVkZWQocGFnZSgpLnByb2Nlc3MoKSk7Ci0gICAgICAgIH0s
IG1fcGFnZS53ZWJQYWdlSUQoKSk7CisgICAgICAgIH0pOwogCiAgICAgICAgIHByb2Nlc3NOZXh0
VXNlck1lZGlhUmVxdWVzdElmTmVlZGVkKCk7CiAgICAgfSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5LmNwcAppbmRleCBhZTU2ZTUz
M2E2MGIyN2Y3OWNjMWFlM2U3NjZhYzgxNzQ5YTdkMTc5Li5jMDA3ZGZhODZkYWI1MTAzZmNiZGU3
NGVkZGMwYzg0ZmE2Y2U1YTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJCYWNrRm9yd2FyZENhY2hlRW50cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYkJhY2tGb3J3YXJkQ2FjaGVFbnRyeS5jcHAKQEAgLTUwLDcgKzUwLDcgQEAgV2ViQmFja0Zv
cndhcmRDYWNoZUVudHJ5Ojp+V2ViQmFja0ZvcndhcmRDYWNoZUVudHJ5KCkKIHsKICAgICBpZiAo
bV9iYWNrRm9yd2FyZEl0ZW1JRCAmJiAhbV9zdXNwZW5kZWRQYWdlKSB7CiAgICAgICAgIGF1dG8m
IHByb2Nlc3MgPSB0aGlzLT5wcm9jZXNzKCk7Ci0gICAgICAgIHByb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDbGVhckNhY2hlZFBhZ2UobV9iYWNrRm9yd2Fy
ZEl0ZW1JRCksIFthY3Rpdml0eSA9IHByb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2
aXR5KCJDbGVhcmluZyBiYWNrL2ZvcndhcmQgY2FjaGUgZW50cnkiX3MpXSB7IH0pOworICAgICAg
ICBwcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6Q2xlYXJD
YWNoZWRQYWdlKG1fYmFja0ZvcndhcmRJdGVtSUQpLCBbXSB7IH0pOwogICAgIH0KIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5jcHAKaW5k
ZXggZGMyY2Q2OTYzNTEyODE0Y2JlZGIxMDhmYmI1ZDQzMmNkMjZkYTVlZC4uNDAxODYwZDIwYzI3
ODc2ZWM0MDgyNzU0YzVmMGIyZDZiMzc1YWYzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuY3BwCkBAIC0xMDIsOSArMTAyLDcgQEAgdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlcmVmV2ViQ29udGV4dFN1cHBsZW1lbnQoKQogdm9p
ZCBXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhvc3RuYW1lc1dpdGhDb29raWVzKFBBTDo6U2Vz
c2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8U3RyaW5nPiYm
KT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJv
Y2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhvc3RuYW1l
c1dpdGhDb29raWVzKHNlc3Npb25JRCksIFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkgPSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNr
Z3JvdW5kQWN0aXZpdHkoIldlYkNvb2tpZU1hbmFnZXJQcm94eTo6Z2V0SG9zdG5hbWVzV2l0aENv
b2tpZXMiX3MpXShWZWN0b3I8U3RyaW5nPiYmIGhvc3RuYW1lcykgbXV0YWJsZSB7Ci0gICAgICAg
IGNhbGxiYWNrRnVuY3Rpb24oV1RGTW92ZShob3N0bmFtZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkdldEhvc3RuYW1lc1dpdGhDb29raWVzKHNlc3Npb25JRCksIFdURk1vdmUoY2FsbGJhY2tGdW5j
dGlvbikpOwogfQogCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQ29va2llc0Zv
ckhvc3RuYW1lcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIGNvbnN0IFZlY3RvcjxTdHJpbmc+
JiBob3N0bmFtZXMpCkBAIC0xMjAsNyArMTE4LDcgQEAgdm9pZCBXZWJDb29raWVNYW5hZ2VyUHJv
eHk6OmRlbGV0ZUFsbENvb2tpZXMoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklEKQogdm9pZCBXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZShQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQs
IGNvbnN0IENvb2tpZSYgY29va2llLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJh
Y2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCkt
PmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklE
LCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiks
IGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUNvb2tpZSJfcyldKCkgbXV0YWJsZSB7Cisg
ICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVN
YW5hZ2VyOjpEZWxldGVDb29raWUoc2Vzc2lvbklELCBjb29raWUpLCBbY2FsbGJhY2tGdW5jdGlv
biA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbildKCkgbXV0YWJsZSB7CiAgICAgICAgIGNhbGxi
YWNrRnVuY3Rpb24oKTsKICAgICB9KTsKIH0KQEAgLTEyOCw0MSArMTI2LDMxIEBAIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpkZWxldGVDb29raWUoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCBjb25zdCBDb29raWUmCiB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6ZGVsZXRlQWxsQ29v
a2llc01vZGlmaWVkU2luY2UoUEFMOjpTZXNzaW9uSUQgc2Vzc2lvbklELCBXYWxsVGltZSB0aW1l
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBh
dXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNz
KCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJD
b29raWVNYW5hZ2VyOjpEZWxldGVBbGxDb29raWVzTW9kaWZpZWRTaW5jZShzZXNzaW9uSUQsIHRp
bWUpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2
aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJD
b29raWVNYW5hZ2VyUHJveHk6OmRlbGV0ZUFsbENvb2tpZXNNb2RpZmllZFNpbmNlIl9zKV0oKSBt
dXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAgIG5ldHdv
cmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6
RGVsZXRlQWxsQ29va2llc01vZGlmaWVkU2luY2Uoc2Vzc2lvbklELCB0aW1lKSwgV1RGTW92ZShj
YWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRD
b29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENvb2tpZT4mIGNv
b2tpZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewog
ICAgIGF1dG8mIG5ldHdvcmtQcm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1By
b2Nlc3MoKTsKLSAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6
OldlYkNvb2tpZU1hbmFnZXI6OlNldENvb2tpZShzZXNzaW9uSUQsIGNvb2tpZXMpLCBbY2FsbGJh
Y2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29y
a1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnNldENvb2tpZXMiX3MpXSgpIG11dGFibGUgewotICAgICAgICBjYWxsYmFja0Z1bmN0
aW9uKCk7Ci0gICAgfSk7CisgICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1l
c3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRDb29raWUoc2Vzc2lvbklELCBjb29raWVzKSwg
V1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclBy
b3h5OjpzZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgY29uc3QgVmVjdG9yPENv
b2tpZT4mIGNvb2tpZXMsIGNvbnN0IFVSTCYgdXJsLCBjb25zdCBVUkwmIG1haW5Eb2N1bWVudFVS
TCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAg
YXV0byYgbmV0d29ya1Byb2Nlc3MgPSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2Vz
cygpOwotICAgIG5ldHdvcmtQcm9jZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
Q29va2llTWFuYWdlcjo6U2V0Q29va2llcyhzZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRv
Y3VtZW50VVJMKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24p
LCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0
eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpzZXRDb29raWVzIl9zKV0oKSBtdXRhYmxlIHsKLSAg
ICAgICAgY2FsbGJhY2tGdW5jdGlvbigpOwotICAgIH0pOworICAgIG5ldHdvcmtQcm9jZXNzLnNl
bmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6U2V0Q29va2llcyhz
ZXNzaW9uSUQsIGNvb2tpZXMsIHVybCwgbWFpbkRvY3VtZW50VVJMKSwgV1RGTW92ZShjYWxsYmFj
a0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29r
aWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0
b3I8Q29va2llPiYmKT4mJiBjYWxsYmFja0Z1bmN0aW9uKQogewogICAgIGF1dG8mIG5ldHdvcmtQ
cm9jZXNzID0gcHJvY2Vzc1Bvb2woKS0+ZW5zdXJlTmV0d29ya1Byb2Nlc3MoKTsKLSAgICBuZXR3
b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6
OkdldEFsbENvb2tpZXMoc2Vzc2lvbklEKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNh
bGxiYWNrRnVuY3Rpb24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJh
Y2tncm91bmRBY3Rpdml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRBbGxDb29raWVzIl9z
KV0oVmVjdG9yPENvb2tpZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tG
dW5jdGlvbihXVEZNb3ZlKGNvb2tpZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5z
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEFsbENvb2tp
ZXMoc2Vzc2lvbklEKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIHZvaWQgV2Vi
Q29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwg
Y29uc3QgVVJMJiB1cmwsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPENvb2tpZT4mJik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nl
c3NQb29sKCktPmVuc3VyZU5ldHdvcmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2Vu
ZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJDb29raWVNYW5hZ2VyOjpHZXRDb29raWVzKHNl
c3Npb25JRCwgdXJsKSwgW2NhbGxiYWNrRnVuY3Rpb24gPSBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rp
b24pLCBhY3Rpdml0eSA9IG5ldHdvcmtQcm9jZXNzLnRocm90dGxlcigpLmJhY2tncm91bmRBY3Rp
dml0eSgiV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRDb29raWVzIl9zKV0oVmVjdG9yPENvb2tp
ZT4mJiBjb29raWVzKSBtdXRhYmxlIHsKLSAgICAgICAgY2FsbGJhY2tGdW5jdGlvbihXVEZNb3Zl
KGNvb2tpZXMpKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vzcy5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldENvb2tpZXMoc2Vzc2lvbklELCB1cmwp
LCBXVEZNb3ZlKGNhbGxiYWNrRnVuY3Rpb24pKTsKIH0KIAogdm9pZCBXZWJDb29raWVNYW5hZ2Vy
UHJveHk6OnN0YXJ0T2JzZXJ2aW5nQ29va2llQ2hhbmdlcyhQQUw6OlNlc3Npb25JRCBzZXNzaW9u
SUQpCkBAIC0yMzIsMTcgKzIyMCwxMyBAQCB2b2lkIFdlYkNvb2tpZU1hbmFnZXJQcm94eTo6c2V0
SFRUUENvb2tpZUFjY2VwdFBvbGljeShQQUw6OlNlc3Npb25JRCwgSFRUUENvb2tpZQogI2VuZGlm
CiAKICAgICBhdXRvJiBuZXR3b3JrUHJvY2VzcyA9IHByb2Nlc3NQb29sKCktPmVuc3VyZU5ldHdv
cmtQcm9jZXNzKCk7Ci0gICAgbmV0d29ya1Byb2Nlc3Muc2VuZFdpdGhBc3luY1JlcGx5KE1lc3Nh
Z2VzOjpXZWJDb29raWVNYW5hZ2VyOjpTZXRIVFRQQ29va2llQWNjZXB0UG9saWN5KHBvbGljeSks
IFtjYWxsYmFja0Z1bmN0aW9uID0gV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgYWN0aXZpdHkg
PSBuZXR3b3JrUHJvY2Vzcy50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldlYkNvb2tp
ZU1hbmFnZXJQcm94eTo6c2V0SFRUUENvb2tpZUFjY2VwdFBvbGljeSJfcyldKCkgbXV0YWJsZSB7
Ci0gICAgICAgIGNhbGxiYWNrRnVuY3Rpb24oKTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OlNldEhUVFBD
b29raWVBY2NlcHRQb2xpY3kocG9saWN5KSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9
CiAKIHZvaWQgV2ViQ29va2llTWFuYWdlclByb3h5OjpnZXRIVFRQQ29va2llQWNjZXB0UG9saWN5
KFBBTDo6U2Vzc2lvbklELCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7CiAgICAgYXV0byYgbmV0d29ya1Byb2Nlc3Mg
PSBwcm9jZXNzUG9vbCgpLT5lbnN1cmVOZXR3b3JrUHJvY2VzcygpOwotICAgIG5ldHdvcmtQcm9j
ZXNzLnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViQ29va2llTWFuYWdlcjo6R2V0SFRU
UENvb2tpZUFjY2VwdFBvbGljeSgpLCBbY2FsbGJhY2tGdW5jdGlvbiA9IFdURk1vdmUoY2FsbGJh
Y2tGdW5jdGlvbiksIGFjdGl2aXR5ID0gbmV0d29ya1Byb2Nlc3MudGhyb3R0bGVyKCkuYmFja2dy
b3VuZEFjdGl2aXR5KCJXZWJDb29raWVNYW5hZ2VyUHJveHk6OmdldEhUVFBDb29raWVBY2NlcHRQ
b2xpY3kiX3MpXShIVFRQQ29va2llQWNjZXB0UG9saWN5IHBvbGljeSkgbXV0YWJsZSB7Ci0gICAg
ICAgIGNhbGxiYWNrRnVuY3Rpb24ocG9saWN5KTsKLSAgICB9KTsKKyAgICBuZXR3b3JrUHJvY2Vz
cy5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYkNvb2tpZU1hbmFnZXI6OkdldEhUVFBD
b29raWVBY2NlcHRQb2xpY3koKSwgV1RGTW92ZShjYWxsYmFja0Z1bmN0aW9uKSk7CiB9CiAKIH0g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKaW5kZXggNTJkYTFmNzZiNGE3MzYxMmJiODE1MDZhMzkwZmE3NjY5YjY5NDViNS4uMzM3YThm
MDcxYjcwMjAxYjM2YzM4MTkxYWRhZDM1NDE2NzgzYjFmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0xMDE0MCw3ICsxMDE0MCw3IEBAIGJvb2wgV2ViUGFn
ZVByb3h5OjpzaG91bGRGb3JjZUZvcmVncm91bmRQcmlvcml0eUZvckNsaWVudE5hdmlnYXRpb24o
KSBjb25zdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Z2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoU3RyaW5nJiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAg
IG1fcHJvY2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6Oldl
YlBhZ2U6OkdldFByb2Nlc3NEaXNwbGF5TmFtZSgpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFn
ZTo6R2V0UHJvY2Vzc0Rpc3BsYXlOYW1lKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsK
IH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldE9yaWVudGF0aW9uRm9yTWVkaWFDYXB0dXJlKHVp
bnQ2NF90IG9yaWVudGF0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5jcHAKaW5kZXggM2FhOTk0YWM5NTFlYmFkMTlkNWVmODc0ODI3YWE3NDE2YjU0NmE2MC4u
NTJiYmFmNjc1NTdiOWZlYjg3OGMzNTlkZmRlZGZmMWQxYzZjMGViNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCkBAIC00NjAsOSArNDYwLDcgQEAgdm9p
ZCBXZWJQcm9jZXNzUHJveHk6Om5vdGlmeVBhZ2VTdGF0aXN0aWNzVGVsZW1ldHJ5RmluaXNoZWQo
QVBJOjpPYmplY3QqIG1lc3NhZ2UKIAogdm9pZCBXZWJQcm9jZXNzUHJveHk6OnNldFRoaXJkUGFy
dHlDb29raWVCbG9ja2luZ01vZGUoVGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSB0aGlyZFBh
cnR5Q29va2llQmxvY2tpbmdNb2RlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9j
ZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2RlKHRoaXJkUGFydHlDb29raWVCbG9j
a2luZ01vZGUpLCBbYWN0aXZpdHkgPSB0aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHkoIldl
YlByb2Nlc3NQcm94eTo6c2V0VGhpcmRQYXJ0eUNvb2tpZUJsb2NraW5nTW9kZSJfcyksIGNvbXBs
ZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0g
ICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKCk7Ci0gICAgfSk7CisgICAgc2VuZFdpdGhBc3luY1Jl
cGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpTZXRUaGlyZFBhcnR5Q29va2llQmxvY2tpbmdNb2Rl
KHRoaXJkUGFydHlDb29raWVCbG9ja2luZ01vZGUpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVy
KSk7CiB9CiAjZW5kaWYKIApAQCAtMTEwNiwxMCArMTEwNCw5IEBAIHZvaWQgV2ViUHJvY2Vzc1By
b3h5OjpmZXRjaFdlYnNpdGVEYXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0
PFdlYnNpCiAgICAgQVNTRVJUKGNhblNlbmRNZXNzYWdlKCkpOwogICAgIEFTU0VSVF9VTlVTRUQo
c2Vzc2lvbklELCBzZXNzaW9uSUQgPT0gdGhpcy0+c2Vzc2lvbklEKCkpOwogCi0gICAgYXV0byBh
Y3Rpdml0eSA9IHRocm90dGxlcigpLmJhY2tncm91bmRBY3Rpdml0eSgiV2ViUHJvY2Vzc1Byb3h5
OjpmZXRjaFdlYnNpdGVEYXRhIl9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dn
aW5nQWxsb3dlZCgpLCBQcm9jZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlz
IHRha2luZyBhIGJhY2tncm91bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlz
IGZldGNoaW5nIFdlYnNpdGUgZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5k
V2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoZGF0
YVR5cGVzKSwgW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgYWN0aXZpdHkg
PSBXVEZNb3ZlKGFjdGl2aXR5KSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0gKGF1dG8gcmVwbHkpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6RmV0Y2hXZWJzaXRlRGF0YShkYXRhVHlwZXMpLCBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoYXV0byByZXBseSkgbXV0YWJsZSB7CiAjaWYgUkVM
RUFTRV9MT0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBA
IC0xMTIzLDEwICsxMTIwLDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVE
YXRhKFBBTDo6U2Vzc2lvbklEIHNlc3Npb25JRCwgT3B0aW9uU2V0PFdlYnMKICAgICBBU1NFUlQo
Y2FuU2VuZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25J
RCA9PSB0aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRh
Il9zKTsKICAgICBSRUxFQVNFX0xPR19JRihpc1JlbGVhc2VMb2dnaW5nQWxsb3dlZCgpLCBQcm9j
ZXNzU3VzcGVuc2lvbiwgIiVwIC0gV2ViUHJvY2Vzc1Byb3h5IGlzIHRha2luZyBhIGJhY2tncm91
bmQgYXNzZXJ0aW9uIGJlY2F1c2UgdGhlIFdlYiBwcm9jZXNzIGlzIGRlbGV0aW5nIFdlYnNpdGUg
ZGF0YSIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVz
c2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhKGRhdGFUeXBlcywgbW9kaWZpZWRT
aW5jZSksIFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGFjdGl2aXR5ID0g
V1RGTW92ZShhY3Rpdml0eSksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildICgpIG11dGFibGUgeworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUHJvY2Vzczo6RGVsZXRlV2Vic2l0ZURhdGEoZGF0YVR5cGVzLCBtb2RpZmllZFNpbmNlKSwg
W3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAjaWYgUkVMRUFTRV9M
T0dfRElTQUJMRUQKICAgICAgICAgVU5VU0VEX1BBUkFNKHRoaXMpOwogI2VuZGlmCkBAIC0xMTQw
LDEwICsxMTM2LDkgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyhQQUw6OlNlc3Npb25JRCBzZXNzaW9uSUQsIE9wdGkKICAgICBBU1NFUlQoY2FuU2Vu
ZE1lc3NhZ2UoKSk7CiAgICAgQVNTRVJUX1VOVVNFRChzZXNzaW9uSUQsIHNlc3Npb25JRCA9PSB0
aGlzLT5zZXNzaW9uSUQoKSk7CiAKLSAgICBhdXRvIGFjdGl2aXR5ID0gdGhyb3R0bGVyKCkuYmFj
a2dyb3VuZEFjdGl2aXR5KCJXZWJQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3Jp
Z2lucyJfcyk7CiAgICAgUkVMRUFTRV9MT0dfSUYoaXNSZWxlYXNlTG9nZ2luZ0FsbG93ZWQoKSwg
UHJvY2Vzc1N1c3BlbnNpb24sICIlcCAtIFdlYlByb2Nlc3NQcm94eSBpcyB0YWtpbmcgYSBiYWNr
Z3JvdW5kIGFzc2VydGlvbiBiZWNhdXNlIHRoZSBXZWIgcHJvY2VzcyBpcyBkZWxldGluZyBXZWJz
aXRlIGRhdGEgZm9yIHNldmVyYWwgb3JpZ2lucyIsIHRoaXMpOwogCi0gICAgY29ubmVjdGlvbigp
LT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhkYXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpLCBhY3Rpdml0eSA9IFdURk1vdmUoYWN0aXZpdHkpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSAoKSBtdXRhYmxlIHsKKyAgICBz
ZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhkYXRhVHlwZXMsIG9yaWdpbnMpLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpXSAoKSBtdXRhYmxlIHsKICNpZiBSRUxFQVNFX0xPR19ESVNBQkxFRAogICAgICAgICBVTlVT
RURfUEFSQU0odGhpcyk7CiAjZW5kaWYKQEAgLTEzMjUsNyArMTMyMCw3IEBAIFJlZlB0cjxBUEk6
Ok9iamVjdD4gV2ViUHJvY2Vzc1Byb3h5Ojp0cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKEFQSTo6
T2JqZWN0KiBvYmplCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjpzZW5kUHJlcGFyZVRvU3VzcGVu
ZChJc1N1c3BlbnNpb25JbW1pbmVudCBpc1N1c3BlbnNpb25JbW1pbmVudCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNS
ZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25J
bW1pbmVudCA9PSBJc1N1c3BlbnNpb25JbW1pbmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJvY2Vzczo6
UHJlcGFyZVRvU3VzcGVuZChpc1N1c3BlbnNpb25JbW1pbmVudCA9PSBJc1N1c3BlbnNpb25JbW1p
bmVudDo6WWVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIDAsIHsgfSwgU2hvdWxkU3Rh
cnRQcm9jZXNzVGhyb3R0bGVyQWN0aXZpdHk6Ok5vKTsKIH0KIAogdm9pZCBXZWJQcm9jZXNzUHJv
eHk6OnNlbmRQcm9jZXNzRGlkUmVzdW1lKCkKQEAgLTE1NDYsNyArMTU0MSw3IEBAIHZvaWQgV2Vi
UHJvY2Vzc1Byb3h5OjpkaWRDb2xsZWN0UHJld2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6
OlJlZ2lzdHJhYmxlRG9tCiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjphY3RpdmVQYWdlc0RvbWFp
bnNGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFN0cmluZz4mJik+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgY29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVw
bHkoTWVzc2FnZXM6OldlYlByb2Nlc3M6OkdldEFjdGl2ZVBhZ2VzT3JpZ2luc0ZvclRlc3Rpbmco
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShN
ZXNzYWdlczo6V2ViUHJvY2Vzczo6R2V0QWN0aXZlUGFnZXNPcmlnaW5zRm9yVGVzdGluZygpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUHJvY2Vzc1Byb3h5Ojpk
aWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvck1haW5GcmFtZShjb25zdCBVUkwmIHVybCkKQEAgLTE2
NDcsNyArMTY0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Byb3h5OjplbmRCYWNrZ3JvdW5kQWN0aXZp
dHlGb3JGdWxsc2NyZWVuSW5wdXQoKQogI2lmIEVOQUJMRShTRVJWSUNFX1dPUktFUikKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dChjb25zdCBXZWJQ
cmVmZXJlbmNlc1N0b3JlJiBzdG9yZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBs
ZXRpb25IYW5kbGVyKQogewotICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUHJv
Y2Vzczo6RXN0YWJsaXNoV29ya2VyQ29udGV4dENvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzIHsg
cHJvY2Vzc1Bvb2woKS5kZWZhdWx0UGFnZUdyb3VwKCkucGFnZUdyb3VwSUQoKSwgbV9zZXJ2aWNl
V29ya2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlUHJveHlJRCwgbV9zZXJ2aWNlV29y
a2VySW5mb3JtYXRpb24tPnNlcnZpY2VXb3JrZXJQYWdlSUQsIHN0b3JlLCAqbV9yZWdpc3RyYWJs
ZURvbWFpbiwgbV9zZXJ2aWNlV29ya2VySW5mb3JtYXRpb24tPmluaXRpYWxpemF0aW9uRGF0YSB9
LCBbYWN0aXZpdHkgPSBtX3Rocm90dGxlci5iYWNrZ3JvdW5kQWN0aXZpdHkoIkVzdGFibGlzaCBT
ZXJ2aWNlIFdvcmtlciJfcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKCkgbXV0YWJsZSB7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzOjpFc3RhYmxpc2hXb3JrZXJDb250ZXh0Q29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MgeyBwcm9jZXNzUG9vbCgpLmRlZmF1bHRQYWdlR3JvdXAoKS5wYWdlR3JvdXBJRCgpLCBtX3Nl
cnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VQcm94eUlELCBtX3NlcnZp
Y2VXb3JrZXJJbmZvcm1hdGlvbi0+c2VydmljZVdvcmtlclBhZ2VJRCwgc3RvcmUsICptX3JlZ2lz
dHJhYmxlRG9tYWluLCBtX3NlcnZpY2VXb3JrZXJJbmZvcm1hdGlvbi0+aW5pdGlhbGl6YXRpb25E
YXRhIH0sIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgp
IG11dGFibGUgewogICAgICAgICBSRUxFQVNFX0xPRyhMb2FkaW5nLCAiV2ViUHJvY2Vzc1Byb3h5
Ojplc3RhYmxpc2hTZXJ2aWNlV29ya2VyQ29udGV4dCBmaW5pc2hlZCIpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigpOwogICAgIH0sIDApOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAppbmRleCA1MWJmOWZkZmFhNGQ4MjhkNmNlYjdjZmY2ZDc1ZGIzNDdkNmMy
Mzg3Li40ZGI2OWFhZGVlZWFjMTFmMjAwZjAwNDlhZDAyMDlhZTcxZDNjYTE3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApAQCAtMjQyLDcgKzI0Miw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgd2luZG93U2VydmVyQ29ubmVjdGlvblN0YXRlQ2hhbmdlZCgpOwog
Ci0gICAgUHJvY2Vzc1Rocm90dGxlciYgdGhyb3R0bGVyKCkgeyByZXR1cm4gbV90aHJvdHRsZXI7
IH0KKyAgICBQcm9jZXNzVGhyb3R0bGVyJiB0aHJvdHRsZXIoKSBmaW5hbCB7IHJldHVybiBtX3Ro
cm90dGxlcjsgfQogCiAgICAgdm9pZCBpc1Jlc3BvbnNpdmUoQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sIGlzV2ViUHJvY2Vzc1Jlc3BvbnNpdmUpPiYmKTsKICAgICB2b2lkIGlzUmVzcG9uc2l2
ZVdpdGhMYXp5U3RvcCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dlYlBhZ2VQcm94eUlPUy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XZWJQYWdl
UHJveHlJT1MubW0KaW5kZXggZjliNDkzOWMxN2VkNjNhY2YzZmFmZjFhNGVkMTljOTEzODczMWI0
OS4uNzY2MzA0YmUxNDRmYjAyNThiODY2NzA0MTY4ZTY0YTZhZGUxM2U3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tCkBAIC00NjYsNyArNDY2
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6Omluc2VydFRleHRQbGFjZWhvbGRlcihjb25zdCBJbnRT
aXplJiBzaXplLCBDb21wbGV0aW9uSGFuZGxlcjwKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIo
eyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24o
KS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxhY2Vo
b2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7
CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpJbnNlcnRUZXh0UGxh
Y2Vob2xkZXIgeyBzaXplIH0sIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OnJlbW92ZVRleHRQbGFjZWhvbGRlcihjb25zdCBFbGVtZW50Q29udGV4
dCYgcGxhY2Vob2xkZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKQEAgLTQ3NSw3ICs0NzUsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVtb3ZlVGV4dFBs
YWNlaG9sZGVyKGNvbnN0IEVsZW1lbnRDb250ZXh0JiBwbGFjZWhvbGRlciwgQ29tcAogICAgICAg
ICBjb21wbGV0aW9uSGFuZGxlcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIG1fcHJv
Y2Vzcy0+Y29ubmVjdGlvbigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6
OlJlbW92ZVRleHRQbGFjZWhvbGRlciB7IHBsYWNlaG9sZGVyIH0sIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2Vz
OjpXZWJQYWdlOjpSZW1vdmVUZXh0UGxhY2Vob2xkZXIgeyBwbGFjZWhvbGRlciB9LCBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0QXV0
b2NvcnJlY3Rpb25EYXRhKGNvbnN0IFN0cmluZyYgdGV4dEZvckF1dG9jb3JyZWN0aW9uLCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKFdlYkF1dG9jb3JyZWN0aW9uRGF0YSk+JiYgY2FsbGJhY2spCkBA
IC00ODQsNyArNDg0LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RBdXRvY29ycmVjdGlv
bkRhdGEoY29uc3QgU3RyaW5nJiB0ZXh0Rm9yQXV0b2NvcnJlY3Rpb24KICAgICAgICAgY2FsbGJh
Y2soeyB9KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rp
b24oKS0+c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0QXV0b2Nv
cnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1vdmUoY2FsbGJhY2spLCBt
X3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpS
ZXF1ZXN0QXV0b2NvcnJlY3Rpb25EYXRhKHRleHRGb3JBdXRvY29ycmVjdGlvbiksIFdURk1vdmUo
Y2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFwcGx5QXV0b2NvcnJlY3Rpb24o
Y29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yaWdpbmFsVGV4dCwgV1RG
OjpGdW5jdGlvbjx2b2lkIChjb25zdCBTdHJpbmcmLCBDYWxsYmFja0Jhc2U6OkVycm9yKT4mJiBj
YWxsYmFja0Z1bmN0aW9uKQpAQCAtMTIyMiw3ICsxMjIyLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OnJlcXVlc3RFdmFzaW9uUmVjdHNBYm92ZVNlbGVjdGlvbihDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGNvbnMKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fcHJvY2Vzcy0+Y29ubmVjdGlv
bigpLT5zZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6OlJlcXVlc3RFdmFzaW9u
UmVjdHNBYm92ZVNlbGVjdGlvbigpLCBXVEZNb3ZlKGNhbGxiYWNrKSwgbV93ZWJQYWdlSUQpOwor
ICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViUGFnZTo6UmVxdWVzdEV2YXNpb25S
ZWN0c0Fib3ZlU2VsZWN0aW9uKCksIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OnVwZGF0ZVNlbGVjdGlvbldpdGhEZWx0YShpbnQ2NF90IGxvY2F0aW9uRGVsdGEs
IGludDY0X3QgbGVuZ3RoRGVsdGEsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKQEAgLTEyMzIsNyArMTIzMiw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojp1cGRh
dGVTZWxlY3Rpb25XaXRoRGVsdGEoaW50NjRfdCBsb2NhdGlvbkRlbHRhLCBpbnQ2NF90IGxlbmd0
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+
c2VuZFdpdGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJQYWdlOjpVcGRhdGVTZWxlY3Rpb25XaXRo
RGVsdGEobG9jYXRpb25EZWx0YSwgbGVuZ3RoRGVsdGEpLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSwgbV93ZWJQYWdlSUQpOworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2Vi
UGFnZTo6VXBkYXRlU2VsZWN0aW9uV2l0aERlbHRhKGxvY2F0aW9uRGVsdGEsIGxlbmd0aERlbHRh
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6
cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2ViS2l0OjpEb2N1bWVudEVkaXRpbmdDb250
ZXh0UmVxdWVzdCByZXF1ZXN0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFdlYktpdDo6RG9jdW1l
bnRFZGl0aW5nQ29udGV4dCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCkBAIC0xMjQyLDcgKzEyNDIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQoV2Vi
S2l0OjpEb2N1bWVudEVkaXRpbmdDb250ZXh0UgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0g
ICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6
V2ViUGFnZTo6UmVxdWVzdERvY3VtZW50RWRpdGluZ0NvbnRleHQocmVxdWVzdCksIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpLCBtX3dlYlBhZ2VJRCk7CisgICAgc2VuZFdpdGhBc3luY1JlcGx5
KE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXF1ZXN0RG9jdW1lbnRFZGl0aW5nQ29udGV4dChyZXF1ZXN0
KSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogfQogCiAjaWYgRU5BQkxFKERBVEFfSU5U
RVJBQ1RJT04pCkBAIC0xMjcyLDcgKzEyNzIsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVxdWVz
dEFkZGl0aW9uYWxJdGVtc0ZvckRyYWdTZXNzaW9uKGNvbnN0IEludFBvaW50JiBjbGllbnRQbwog
dm9pZCBXZWJQYWdlUHJveHk6Omluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9sZGVycyhjb25zdCBW
ZWN0b3I8SW50U2l6ZT4mIGltYWdlU2l6ZXMsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoY29uc3Qg
VmVjdG9yPEludFJlY3Q+JiwgT3B0aW9uYWw8V2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGE+KT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBpZiAoaGFzUnVubmluZ1Byb2Nlc3MoKSkKLSAg
ICAgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdl
czo6V2ViUGFnZTo6SW5zZXJ0RHJvcHBlZEltYWdlUGxhY2Vob2xkZXJzKGltYWdlU2l6ZXMpLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgbV93ZWJQYWdlSUQpOworICAgICAgICBzZW5kV2l0
aEFzeW5jUmVwbHkoTWVzc2FnZXM6OldlYlBhZ2U6Okluc2VydERyb3BwZWRJbWFnZVBsYWNlaG9s
ZGVycyhpbWFnZVNpemVzKSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwogICAgIGVsc2UK
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9LCBXVEY6Om51bGxvcHQpOwogfQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>