<?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>203872</bug_id>
          
          <creation_ts>2019-11-05 17:01:24 -0800</creation_ts>
          <short_desc>WKWebView Find-in-page API</short_desc>
          <delta_ts>2021-06-24 18:05:17 -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>WebKit API</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=227364</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="Brady Eidson">beidson</reporter>
          <assigned_to name="Brady Eidson">beidson</assigned_to>
          <cc>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>kc</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1587602</commentid>
    <comment_count>0</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-05 17:01:24 -0800</bug_when>
    <thetext>WKWebView Find-in-page API

&lt;rdar://problem/46971112&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587603</commentid>
    <comment_count>1</comment_count>
      <attachid>382867</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-05 17:02:14 -0800</bug_when>
    <thetext>Created attachment 382867
WIP patch (still testing)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587881</commentid>
    <comment_count>2</comment_count>
      <attachid>382950</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-06 12:57:22 -0800</bug_when>
    <thetext>Created attachment 382950
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1587936</commentid>
    <comment_count>3</comment_count>
      <attachid>382964</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-06 15:07:32 -0800</bug_when>
    <thetext>Created attachment 382964
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588005</commentid>
    <comment_count>4</comment_count>
      <attachid>382964</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-06 16:59:59 -0800</bug_when>
    <thetext>Comment on attachment 382964
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindConfiguration.h:33
&gt; +typedef NS_ENUM(NSInteger, WKFindDirection) {
&gt; +    WKFindDirectionForward,
&gt; +    WKFindDirectionBackward,
&gt; +} WK_API_AVAILABLE(macos(10.16), ios(14.0));

What is this for???

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindConfiguration.h:35
&gt; +WK_CLASS_AVAILABLE(macos(10.16), ios(14.0))

TBA?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588006</commentid>
    <comment_count>5</comment_count>
      <attachid>382964</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-06 17:01:38 -0800</bug_when>
    <thetext>Comment on attachment 382964
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.h:366
&gt; +WK_API_AVAILABLE(macos(10.16))

TBA

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4774
&gt; +

I am weirded out by this newline, but also by the unnecessary temporary.

&gt; Source/WebKit/UIProcess/WebPageProxy.h:340
&gt; +typedef GenericCallback&lt;bool&gt; BoolCallback;

HOW IS THIS THE FIRST TIME</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588007</commentid>
    <comment_count>6</comment_count>
      <attachid>382964</attachid>
    <who name="Andy Estes">aestes</who>
    <bug_when>2019-11-06 17:10:13 -0800</bug_when>
    <thetext>Comment on attachment 382964
Patch

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

&gt; Source/WebKit/ChangeLog:8
&gt; +        Covered by existing API tests.

The existing tests don&apos;t create WKFindConfigurations, so maybe we should have a new API test that tests the new API explicitly rather than relying on the SPI and API behaving the same.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindConfiguration.mm:38
&gt; +    self.backwards = NO;
&gt; +    self.caseSensitive = NO;
&gt; +    self.wraps = YES;

Usually we set synthesized properties&apos; ivars directly (e.g., _backwards vs. self.backwards).

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindConfiguration.mm:48
&gt; +    findConfiguration.backwards = self.backwards;
&gt; +    findConfiguration.caseSensitive = self.caseSensitive;
&gt; +    findConfiguration.wraps = self.wraps;

Ditto.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResult.mm:50
&gt; +    findResult-&gt;_matchFound = self.matchFound;

findResult-&gt;_matchFound = _matchFound?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4756
&gt; +    if (!configuration.caseSensitive)
&gt; +        findOptions |= WebKit::FindOptionsCaseInsensitive;

This one makes sense to me (mapping case-sensitive in WKFindConfiguration to case-insensitive in FindOptions).

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4760
&gt; +    if (!configuration.backwards)
&gt; +        findOptions |= WebKit::FindOptionsBackwards;
&gt; +    if (!configuration.wraps)
&gt; +        findOptions |= WebKit::FindOptionsWrapAround;

... but these two don&apos;t. If backwards is false shouldn&apos;t we not be setting WebKit::FindOptionsBackwards, for instance?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4776
&gt; +    _page-&gt;findString(string, toFindOptions(configuration), 1, [handler = makeBlockPtr(completionHandler)](bool found, WebKit::CallbackBase::Error error) {
&gt; +        WKFindResult *result = [[[WKFindResult alloc] _initWithMatchFound:(error == WebKit::CallbackBase::Error::None &amp;&amp; found)] autorelease];
&gt; +
&gt; +        handler(result);
&gt; +    });

In the SPI version of this method, when there is a _customContentView, we call  -web_findString:options:maxCount: instead of WebPage::findString(). I think we want to do that in the API too. Maybe more things can be shared between _findString and findString?

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3708
&gt; +    Optional&lt;CallbackID&gt; callbackID;
&gt; +    if (callbackFunction)
&gt; +        callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process-&gt;throttler().backgroundActivity(&quot;WebPageProxy::findString&quot;_s));
&gt; +
&gt; +    m_process-&gt;send(Messages::WebPage::FindString(string, options, maxMatchCount, callbackID), m_webPageID);

If we made the Messages::WebPage::FindString async then we wouldn&apos;t need to do the callback dance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588463</commentid>
    <comment_count>7</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-07 15:49:24 -0800</bug_when>
    <thetext>Embarassed myself, as this is actually an earlier version of the patch with lots of obvious issues!

Rebaselining actual patch...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588465</commentid>
    <comment_count>8</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-07 15:51:21 -0800</bug_when>
    <thetext>(In reply to Andy Estes from comment #6
&gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3708
&gt; &gt; +    Optional&lt;CallbackID&gt; callbackID;
&gt; &gt; +    if (callbackFunction)
&gt; &gt; +        callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process-&gt;throttler().backgroundActivity(&quot;WebPageProxy::findString&quot;_s));
&gt; &gt; +
&gt; &gt; +    m_process-&gt;send(Messages::WebPage::FindString(string, options, maxMatchCount, callbackID), m_webPageID);
&gt; 
&gt; If we made the Messages::WebPage::FindString async then we wouldn&apos;t need to
&gt; do the callback dance.

Not at all clear what you mean. It is already async, and we now need a callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588471</commentid>
    <comment_count>9</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-07 16:10:22 -0800</bug_when>
    <thetext>(In reply to Brady Eidson from comment #8)
&gt; (In reply to Andy Estes from comment #6
&gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3708
&gt; &gt; &gt; +    Optional&lt;CallbackID&gt; callbackID;
&gt; &gt; &gt; +    if (callbackFunction)
&gt; &gt; &gt; +        callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process-&gt;throttler().backgroundActivity(&quot;WebPageProxy::findString&quot;_s));
&gt; &gt; &gt; +
&gt; &gt; &gt; +    m_process-&gt;send(Messages::WebPage::FindString(string, options, maxMatchCount, callbackID), m_webPageID);
&gt; &gt; 
&gt; &gt; If we made the Messages::WebPage::FindString async then we wouldn&apos;t need to
&gt; &gt; do the callback dance.
&gt; 
&gt; Not at all clear what you mean. It is already async, and we now need a
&gt; callback.

Sure it is, he means turn

FindString(String string, uint32_t findOptions, unsigned maxMatchCount)

into 

FindString(String string, uint32_t findOptions, unsigned maxMatchCount) -&gt; (bool didFindString) Async

and use the autogenerated reply callback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588672</commentid>
    <comment_count>10</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 09:31:08 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #9)
&gt; (In reply to Brady Eidson from comment #8)
&gt; &gt; (In reply to Andy Estes from comment #6
&gt; &gt; &gt; &gt; Source/WebKit/UIProcess/WebPageProxy.cpp:3708
&gt; &gt; &gt; &gt; +    Optional&lt;CallbackID&gt; callbackID;
&gt; &gt; &gt; &gt; +    if (callbackFunction)
&gt; &gt; &gt; &gt; +        callbackID = m_callbacks.put(WTFMove(callbackFunction), m_process-&gt;throttler().backgroundActivity(&quot;WebPageProxy::findString&quot;_s));
&gt; &gt; &gt; &gt; +
&gt; &gt; &gt; &gt; +    m_process-&gt;send(Messages::WebPage::FindString(string, options, maxMatchCount, callbackID), m_webPageID);
&gt; &gt; &gt; 
&gt; &gt; &gt; If we made the Messages::WebPage::FindString async then we wouldn&apos;t need to
&gt; &gt; &gt; do the callback dance.
&gt; &gt; 
&gt; &gt; Not at all clear what you mean. It is already async, and we now need a
&gt; &gt; callback.
&gt; 
&gt; Sure it is, he means turn
&gt; 
&gt; FindString(String string, uint32_t findOptions, unsigned maxMatchCount)
&gt; 
&gt; into 
&gt; 
&gt; FindString(String string, uint32_t findOptions, unsigned maxMatchCount) -&gt;
&gt; (bool didFindString) Async
&gt; 
&gt; and use the autogenerated reply callback

Oh, right.

I quite on purpose didn&apos;t do that because it&apos;s still used by SPIs that don&apos;t need a callback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588675</commentid>
    <comment_count>11</comment_count>
      <attachid>383134</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 09:33:40 -0800</bug_when>
    <thetext>Created attachment 383134
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588677</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-08 09:38:51 -0800</bug_when>
    <thetext>Doesn’t the SPI have a didFindString delegate callback that could be folded into this, and save a bunch of code?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588714</commentid>
    <comment_count>13</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 10:29:05 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #12)
&gt; Doesn’t the SPI have a didFindString delegate callback that could be folded
&gt; into this, and save a bunch of code?

One of them, yes!

But there might be more SPIs than you realize!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588768</commentid>
    <comment_count>14</comment_count>
      <attachid>383134</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-08 12:55:01 -0800</bug_when>
    <thetext>Comment on attachment 383134
Patch

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

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResult.mm:33
&gt; +    return [self _initWithMatchFound:NO];

Why&apos;s this a thing? Should it be NS_UNAVAILABLE and return nil?

&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResultInternal.h:29
&gt; +@interface WKFindResult () {
&gt; +}

Why the braces?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588819</commentid>
    <comment_count>15</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 13:50:14 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #14)
&gt; Comment on attachment 383134 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383134&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResult.mm:33
&gt; &gt; +    return [self _initWithMatchFound:NO];
&gt; 
&gt; Why&apos;s this a thing? Should it be NS_UNAVAILABLE and return nil?

Sure.

&gt; 
&gt; &gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResultInternal.h:29
&gt; &gt; +@interface WKFindResult () {
&gt; &gt; +}
&gt; 
&gt; Why the braces?

Compiler made me do it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588821</commentid>
    <comment_count>16</comment_count>
      <attachid>383134</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2019-11-08 13:55:42 -0800</bug_when>
    <thetext>Comment on attachment 383134
Patch

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

&gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResultInternal.h:29
&gt;&gt;&gt; +}
&gt;&gt; 
&gt;&gt; Why the braces?
&gt; 
&gt; Compiler made me do it?

It certainly did not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588870</commentid>
    <comment_count>17</comment_count>
      <attachid>383173</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 15:40:26 -0800</bug_when>
    <thetext>Created attachment 383173
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588911</commentid>
    <comment_count>18</comment_count>
      <attachid>383184</attachid>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 17:19:25 -0800</bug_when>
    <thetext>Created attachment 383184
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588914</commentid>
    <comment_count>19</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2019-11-08 17:22:06 -0800</bug_when>
    <thetext>(In reply to Tim Horton from comment #16)
&gt; Comment on attachment 383134 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=383134&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKFindResultInternal.h:29
&gt; &gt;&gt;&gt; +}
&gt; &gt;&gt; 
&gt; &gt;&gt; Why the braces?
&gt; &gt; 
&gt; &gt; Compiler made me do it?
&gt; 
&gt; It certainly did not.

I added them at one point to fix a compiler error.

Removing them now does not reintroduce any compiler error.

So... yay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588962</commentid>
    <comment_count>20</comment_count>
      <attachid>383184</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 20:07:05 -0800</bug_when>
    <thetext>Comment on attachment 383184
Patch

Clearing flags on attachment: 383184

Committed r252303: &lt;https://trac.webkit.org/changeset/252303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588963</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-11-08 20:07:07 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382867</attachid>
            <date>2019-11-05 17:02:14 -0800</date>
            <delta_ts>2019-11-06 12:57:20 -0800</delta_ts>
            <desc>WIP patch (still testing)</desc>
            <filename>patch</filename>
            <type>text/plain</type>
            <size>32119</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1NvdXJjZS9XZWJL
aXQvU291cmNlc0NvY29hLnR4dAppbmRleCBhMjJhYWJhMDMxMC4uNjQxMmNlZjc0MzYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NvdXJjZXNDb2NvYS50eHQKQEAgLTI5MCw2ICsyOTAsOCBAQCBVSVByb2Nlc3MvQVBJL0NvY29h
L1dLQ29udGVudFJ1bGVMaXN0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGVudFJ1bGVM
aXN0U3RvcmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZXh0TWVudUVsZW1lbnRJbmZv
Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRXJyb3IubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGaW5kQ29uZmlndXJhdGlvbi5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGcmFtZUluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tIVFRQQ29va2llU3RvcmUubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tNZW51SXRlbUlk
ZW50aWZpZXJzLm1tCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRmluZENvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uMmViMGM1NGY3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTYgQEAK
Ky8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCA8
V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBl
ZGVmIE5TX0VOVU0oTlNJbnRlZ2VyLCBXS0ZpbmREaXJlY3Rpb24pIHsKKyAgICBXS0ZpbmREaXJl
Y3Rpb25Gb3J3YXJkLAorICAgIFdLRmluZERpcmVjdGlvbkJhY2t3YXJkLAorfSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKDEwLjE2KSwgaW9zKDE0LjApKTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1h
Y29zKDEwLjE2KSwgaW9zKDE0LjApKQorQGludGVyZmFjZSBXS0ZpbmRDb25maWd1cmF0aW9uIDog
TlNPYmplY3QgPE5TQ29weWluZz4KKworLyogQGFic3RyYWN0IFRoZSBkaXJlY3Rpb24gdG8gc2Vh
cmNoIGZyb20gdGhlIGN1cnJlbnQgc2VsZWN0aW9uCisgQGRpc2N1c3Npb24gVGhlIHNlYXJjaCB3
aWxsIHJlc3BlY3QgdGhlIHdyaXRpbmcgZGlyZWN0aW9uIG9mIHRoZSBkb2N1bWVudC4KKyBUaGUg
aW5pdGlhbCB2YWx1ZSBpcyBXS0ZpbmREaXJlY3Rpb25Gb3J3YXJkLgorKi8KK0Bwcm9wZXJ0eSAo
bm9uYXRvbWljKSBCT09MIGJhY2t3YXJkczsKKworLyogQGFic3RyYWN0IFdoZXRoZXIgb3Igbm90
IHRoZSBzZWFyY2ggc2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlCisgQGRpc2N1c3Npb24gVGhlIGlu
aXRpYWwgdmFsdWUgaXMgTk8uCisqLworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY2FzZVNl
bnNpdGl2ZTsKKworLyogQGFic3RyYWN0IFdoZXRoZXIgdGhlIHNlYXJjaCBzaG91bGQgc3RhcnQg
YXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgZG9jdW1lbnQgb25jZSBpdCByZWFjaGVzIHRoZSBlbmQK
KyBAZGlzY3Vzc2lvbiBUaGUgaW5pdGlhbCB2YWx1ZSBpcyBZRVMuCisqLworQHByb3BlcnR5IChu
b25hdG9taWMpIEJPT0wgd3JhcHM7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmln
dXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25m
aWd1cmF0aW9uLm1tCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5iYmFl
ODdiODJmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKwor
QGltcGxlbWVudGF0aW9uIFdLRmluZENvbmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWlu
aXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5p
bDsKKworICAgIHNlbGYuYmFja3dhcmRzID0gTk87CisgICAgc2VsZi5jYXNlU2Vuc2l0aXZlID0g
Tk87CisgICAgc2VsZi53cmFwcyA9IFlFUzsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgV0tGaW5kQ29uZmlndXJhdGlvbiAq
ZmluZENvbmZpZ3VyYXRpb24gPSBbKFdLRmluZENvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3Nd
IGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmaW5kQ29uZmlndXJhdGlvbi5iYWNr
d2FyZHMgPSBzZWxmLmJhY2t3YXJkczsKKyAgICBmaW5kQ29uZmlndXJhdGlvbi5jYXNlU2Vuc2l0
aXZlID0gc2VsZi5jYXNlU2Vuc2l0aXZlOworICAgIGZpbmRDb25maWd1cmF0aW9uLndyYXBzID0g
c2VsZi53cmFwczsKKworICAgIHJldHVybiBmaW5kQ29uZmlndXJhdGlvbjsKK30KKworQGVuZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3Vs
dC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45ZmMwMmMzZGJhYwotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1
bHQuaApAQCAtMCwwICsxLDM4IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFy
ZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyovCisKKyNpbXBvcnQgPFdlYktpdC9XS0ZvdW5kYXRpb24uaD4KKworTlNfQVNTVU1F
X05PTk5VTExfQkVHSU4KKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBp
b3MoV0tfSU9TX1RCQSkpCitAaW50ZXJmYWNlIFdLRmluZFJlc3VsdCA6IE5TT2JqZWN0IDxOU0Nv
cHlpbmc+CisKKy8qIEBhYnN0cmFjdCBXaGV0aGVyIG9yIG5vdCBhIG1hdGNoIHdhcyBmb3VuZCBk
dXJpbmcgdGhlIGZpbmQgb3BlcmF0aW9uICovCitAcHJvcGVydHkgKG5vbmF0b21pYywgcmVhZG9u
bHkpIEJPT0wgbWF0Y2hGb3VuZDsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0Lm1tCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zYzhmNmJmNjViZgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1
bHQubW0KQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgor
I2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmlu
ZFJlc3VsdAorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBbc2VsZiBfaW5p
dFdpdGhNYXRjaEZvdW5kOk5PXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1hdGNo
Rm91bmQ6KEJPT0wpbWF0Y2hGb3VuZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0p
KQorICAgICAgICByZXR1cm4gbmlsOworCisgICAgX21hdGNoRm91bmQgPSBtYXRjaEZvdW5kOwor
CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9u
ZQoreworICAgIFdLRmluZFJlc3VsdCAqZmluZFJlc3VsdCA9IFsoV0tGaW5kUmVzdWx0ICopW1tz
ZWxmIGNsYXNzXSBhbGxvY1dpdGhab25lOnpvbmVdIGluaXRdOworCisgICAgZmluZFJlc3VsdC0+
X21hdGNoRm91bmQgPSBzZWxmLm1hdGNoRm91bmQ7CisKKyAgICByZXR1cm4gZmluZFJlc3VsdDsK
K30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRmluZFJlc3VsdEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMC4uM2YzZDA4MDQyYjMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaApAQCAtMCwwICsxLDMzIEBA
CisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBvcnQg
IldLRmluZFJlc3VsdC5oIgorCitAaW50ZXJmYWNlIFdLRmluZFJlc3VsdCAoKSB7Cit9CisKKy0g
KGluc3RhbmNldHlwZSlfaW5pdFdpdGhNYXRjaEZvdW5kOihCT09MKW1hdGNoRm91bmQ7CisKK0Bl
bmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAppbmRl
eCBkZDZmODdiMTYyYy4uZWE3NDVjZWJjYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTM1LDYgKzM1LDggQEAgTlNfQVNTVU1FX05PTk5V
TExfQkVHSU4KIAogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0OwogQGNsYXNzIFdLQmFja0Zvcndh
cmRMaXN0SXRlbTsKK0BjbGFzcyBXS0ZpbmRDb25maWd1cmF0aW9uOworQGNsYXNzIFdLRmluZFJl
c3VsdDsKIEBjbGFzcyBXS05hdmlnYXRpb247CiBAY2xhc3MgV0tQREZDb25maWd1cmF0aW9uOwog
QGNsYXNzIFdLU25hcHNob3RDb25maWd1cmF0aW9uOwpAQCAtMzAzLDYgKzMwNSwxNiBAQCBUaGUg
dW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlwZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0
IHRoZSByZWxhdGVkIHBhc3RlYgogKi8KIEBwcm9wZXJ0eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBh
Z2Vab29tIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CiAKKy8qIEBhYnN0cmFjdCBTZWFyY2hlcyB0aGUgcGFnZSBjb250ZW50cyBmb3IgdGhlIGdp
dmVuIHN0cmluZy4KKyBAcGFyYW0gc3RyaW5nIFRoZSBzdHJpbmcgdG8gc2VhcmNoIGZvci4KKyBA
cGFyYW0gY29uZmlndXJhdGlvbiBBIHNldCBvZiBvcHRpb25zIGNvbmZpZ3VyaW5nIHRoZSBzZWFy
Y2guCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEgYmxvY2sgdG8gaW52b2tlIHdoZW4gdGhl
IHNlYXJjaCBjb21wbGV0ZXMuCisgQGRpc2N1c3Npb24gSWYgdGhlIFdLRmluZENvbmZpZ3VyYXRp
b24gaXMgbmlsLCBhbGwgb2YgdGhlIGRlZmF1bHQgV0tGaW5kQ29uZmlndXJhdGlvbiB2YWx1ZXMg
d2lsbCBiZSB1c2VkLgorICBBIG1hdGNoIGZvdW5kIGJ5IHRoZSBzZWFyY2ggaXMgc2VsZWN0ZWQg
YW5kIHRoZSBwYWdlIGlzIHNjcm9sbGVkIHRvIHJldmVhbCB0aGUgc2VsZWN0aW9uLgorICBUaGUg
Y29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBhZnRlciB0aGUgc2VhcmNoIGNvbXBsZXRlcy4K
KyovCistICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhDb25maWd1cmF0
aW9uOihudWxsYWJsZSBXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyIE5TX1JFRklORURfRk9SX1NXSUZUIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qIEBhYnN0cmFjdCBDaGVja3Mgd2hldGhlciBvciBu
b3QgV0tXZWJWaWV3cyBoYW5kbGUgdGhlIGdpdmVuIFVSTCBzY2hlbWUgYnkgZGVmYXVsdC4KICBA
cGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGNoZWNrLgogICovCkBAIC0zNTEsNiArMzYz
LDEwIEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4g
YmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAKIEBlbmQKIAorV0tfQVBJX0FWQUlMQUJM
RShtYWNvcygxMC4xNikpCitAaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tOU1RleHRGaW5kZXJDbGll
bnQpIDxOU1RleHRGaW5kZXJDbGllbnQ+CitAZW5kCisKICNlbmRpZgogCiBAaW50ZXJmYWNlIFdL
V2ViVmlldyAoV0tEZXByZWNhdGVkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcubW0KaW5kZXggODJjZDRhNTZkMzcuLmM5ZmRhZTZkMzA5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU5LDYg
KzU5LDggQEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9y
SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldL
RmluZFJlc3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUu
aCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTQ3
MzQsNiArNDczNiwzNCBAQCAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKQogICAgIH0pOwogfQogCitp
bmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRp
b24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAgdW5zaWduZWQgZmluZE9wdGlvbnMgPSAwOworCisg
ICAgaWYgKCFjb25maWd1cmF0aW9uLmNhc2VTZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25z
IHw9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKCFjb25maWd1
cmF0aW9uLmJhY2t3YXJkcykKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0
aW9uc0JhY2t3YXJkczsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud3JhcHMpCisgICAgICAgIGZp
bmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworCisgICAgcmV0dXJu
IHN0YXRpY19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGZpbmRPcHRpb25zKTsKK30KKworLSAo
dm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJhdGlvbjooV0tG
aW5kQ29uZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQg
KF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICgh
c3RyaW5nLmxlbmd0aCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS0ZpbmRSZXN1
bHQgYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBfcGFnZS0+ZmluZFN0cmluZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlv
biksIDEsIFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBm
b3VuZCwgV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIFdLRmlu
ZFJlc3VsdCAqcmVzdWx0ID0gW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZv
dW5kOihlcnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgJiYgZm91bmQp
XSBhdXRvcmVsZWFzZV07CisKKyAgICAgICAgaGFuZGxlcihyZXN1bHQpOworICAgIH0pOworfQor
CiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZp
Z3VyYXRpb24ubW0KaW5kZXggNzI5NDRkNTg5ZTEuLjJmMGQ1YmQ0Yjc5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbQpAQCAtMzcsNiArMzcsNyBAQAogI2ltcG9ydCAiV0tXZWJWaWV3LmgiCiAjaW1w
b3J0ICJXS1dlYlZpZXdDb250ZW50UHJvdmlkZXJSZWdpc3RyeS5oIgogI2ltcG9ydCAiV2ViS2l0
MkluaXRpYWxpemUuaCIKKyNpbXBvcnQgIldlYlByZWZlcmVuY2VzRGVmYXVsdFZhbHVlcy5oIgog
I2ltcG9ydCAiV2ViVVJMU2NoZW1lSGFuZGxlckNvY29hLmgiCiAjaW1wb3J0ICJfV0tBcHBsaWNh
dGlvbk1hbmlmZXN0SW50ZXJuYWwuaCIKICNpbXBvcnQgIl9XS1Zpc2l0ZWRMaW5rU3RvcmUuaCIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IGYxOTYwNmFkNmVmLi4xYWE2MWNjZDI3OSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00NTAs
MTEgKzQ1MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkg
ewogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9u
cz4KIEBlbmQKIAotI2Vsc2UKLQotQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0RmluZGVy
Q2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgotQGVuZAotCiAjZW5kaWYKIAogQGludGVyZmFj
ZSBXS1dlYlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0
aG9yaXphdGlvblNlc3Npb24uaAppbmRleCBiNjY5NGZlOTA2ZS4uNDU0YzYxZmZkZWYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BV
cFNPQXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTI4
LDYgKzI4LDcgQEAKICNpZiBIQVZFKEFQUF9TU08pCiAKICNpbmNsdWRlICJTT0F1dGhvcml6YXRp
b25TZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIE9CSkNf
Q0xBU1MgV0tTT1NlY3JldERlbGVnYXRlOwogT0JKQ19DTEFTUyBXS1dlYlZpZXc7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBT
T0F1dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAwNzZj
ZmFhNjc2YS4uMGYxODAzOGRlOTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5tbQpAQCAtMzMsNiArMzMsNyBAQAogI2ltcG9ydCAiV0tVSURl
bGVnYXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdDb25maWd1cmF0aW9uUHJpdmF0ZS5oIgogI2lt
cG9ydCAiV0tXZWJWaWV3SW50ZXJuYWwuaCIKKyNpbXBvcnQgIldlYlBhZ2VQcm94eS5oIgogI2lt
cG9ydCA8V2ViQ29yZS9SZXNvdXJjZVJlc3BvbnNlLmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIu
aD4KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKaW5kZXggOGVjOGZh
ZTc0ZTMuLmRlMjI4NjlkMTk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAKQEAgLTM2OTksOSArMzY5OSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmlu
Z01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAg
bV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJp
bmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2Vi
UGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVk
IG1heE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3Ip
PiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fd2Vi
UGFnZUlEKTsKKyAgICBDYWxsYmFja0lEIGNhbGxiYWNrSUQ7CisgICAgaWYgKGNhbGxiYWNrRnVu
Y3Rpb24pCisgICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RGTW92ZShjYWxs
YmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5kQWN0aXZpdHko
IldlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyJfcykpOworCisgICAgbV9wcm9jZXNzLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3Vu
dCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OmZp
bmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCit7Cisg
ICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Qm9vbENhbGxiYWNrPihjYWxsYmFj
a0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAgICBjYWxsYmFj
ay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGZvdW5kKTsKIH0KIAogdm9pZCBXZWJQ
YWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjg0ZmI5ZTBlZjMuLmM2YzM2ZjM1
NDhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMzM3LDYgKzMz
Nyw3IEBAIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFN0cmluZyY+IFN0cmluZ0NhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8QVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUq
LCBib29sLCBjb25zdCBXZWJDb3JlOjpFeGNlcHRpb25EZXRhaWxzJj4gU2NyaXB0VmFsdWVDYWxs
YmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNvbnN0IFdlYkNvcmU6OkZvbnRBdHRyaWJ1
dGVzJj4gRm9udEF0dHJpYnV0ZXNDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGNv
bnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyY+IFNlbGVjdGlvbkNvbnRl
eHRDYWxsYmFjazsKK3R5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPGJvb2w+IEJvb2xDYWxsYmFjazsK
IAogI2lmIEhBVkUoVklTSUJJTElUWV9QUk9QQUdBVElPTl9WSUVXKQogdXNpbmcgTGF5ZXJIb3N0
aW5nQ29udGV4dElEID0gdWludDMyX3Q7CkBAIC0xMDE5LDcgKzEwMjAsNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwbHVnaW5ab29tRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSk7CiAKICAgICAvLyBGaW5k
LgotICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCk7CisgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZp
bmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBGdW5jdGlvbjx2b2lkIChib29sLCBD
YWxsYmFja0Jhc2U6OkVycm9yKT4mJiA9IG51bGxwdHIpOwogICAgIHZvaWQgZmluZFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
OwogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsKICAg
ICB2b2lkIHNlbGVjdEZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwpAQCAtMTAzMiw2ICsx
MDMzLDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvcihjb25zdCBXZWJDb3Jl
OjpUZXh0SW5kaWNhdG9yRGF0YSYsIHVpbnQ2NF90IC8qIFdlYkNvcmU6OlRleHRJbmRpY2F0b3JX
aW5kb3dMaWZldGltZSAqLyBsaWZldGltZSA9IDAgLyogUGVybWFuZW50ICovKTsKICAgICB2b2lk
IHNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcyhmbG9hdCk7CiAgICAgdm9pZCBjbGVh
clRleHRJbmRpY2F0b3IoKTsKKworICAgIHZvaWQgZmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91
bmQsIENhbGxiYWNrSUQpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBj
b25zdCBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4mLCB1aW50MzJfdCBtYXRjaENvdW50LCBpbnQz
Ml90IG1hdGNoSW5kZXgsIGJvb2wgZGlkV3JhcEFyb3VuZCk7CiAgICAgdm9pZCBkaWRGYWlsVG9G
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgZGlkRmluZFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiwgY29uc3QgVmVjdG9yPFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0Pj4mIG1h
dGNoUmVjdHMsIGludDMyX3QgZmlyc3RJbmRleEFmdGVyU2VsZWN0aW9uKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbiBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgppbmRleCAyMjY5YWE2
OWVhMS4uNWQ4MzkyYjkyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwOSw2ICsyMDksNyBAQCBtZXNzYWdlcyAtPiBXZWJQ
YWdlUHJveHkgewogICAgIE1hY2hTZW5kUmlnaHRDYWxsYmFjayhNYWNoU2VuZFJpZ2h0IHNlbmRS
aWdodCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0luZm9D
YWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRp
b24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVp
bnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQog
I2VuZGlmCisgICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBz
Y2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9vbUZh
Y3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CmluZGV4IDIxZjNmNmFkOGNkLi40ODIyMzE5Yjg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjQsNiArOTY0LDkgQEAKIAkJNTEz
RkZCOEQyMDE0NTlCMDAwMjU5NkVBIC8qIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ZGQjhCMjAx
NDU5QTcwMDI1OTZFQSAvKiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi87IH07CiAJ
CTUxM0ZGQjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzRkZC
OEYyMDE0NTlDMjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi87
IH07CiAJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDEy
OTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLzsgfTsK
KwkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODlDQzEyMzcwREFDQzAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1Ymxp
YywgKTsgfTsgfTsKKwkJNTE0ODlDQzcyMzcyMzc4MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdElu
dGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTQ4OUNDNjIzNzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLzsgfTsK
KwkJNTE0QUI5RjAyMzYwRDJBOTAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEFCOUVGMjM1RkE1
OUIwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTRCREVEMzE2Qzk4RUREMDBFNEUyNUUgLyog
U3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0aWNzUmVxdWVzdC5o
ICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTREOUY1
NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87IH07CiAJCTUxNTI2
MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNz
YWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE1
MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbk1l
c3NhZ2VzLmggKi87IH07CkBAIC0zMzQzLDYgKzMzNDYsMTEgQEAKIAkJNTE0MTI5OTIxQzY0Mjgx
MDAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8qIF9XS0ljb25Mb2Fk
aW5nRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gX1dLSWNvbkxv
YWRpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTQzQjI2MTFE
REQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gQVBJSWNvbkxvYWRpbmdDbGllbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmlu
ZFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdLRmlu
ZFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0ODlDQzYyMzcyMzc3
ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdLRmluZFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNEFCOUVGMjM1RkE1OUIwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9u
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZENvbmZpZ3VyYXRpb24u
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0QUI5RjEyMzYwRTgzRDAwRURDMzk2
IC8qIFdLRmluZENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpj
cHA7IHBhdGggPSBXS0ZpbmRDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1JlcXVlc3QuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNl
cnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJ2
aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTYx
OTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NDMsNiArNjQ1MSwxMSBAQAogCQkJCTFBRjQ1OTJDMTk0
NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJBMTk0Njg4RkQwMDQ1
MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKIAkJCQkzN0I1MDQ1MTE5RUVGMzEzMDBDRTJD
RjggLyogV0tFcnJvclByaXZhdGUuaCAqLywKKwkJCQk1MTRBQjlFRjIzNUZBNTlCMDBFREMzOTYg
LyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTUxNEFCOUYxMjM2MEU4M0QwMEVEQzM5
NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLm1tICovLAorCQkJCTUxNDg5Q0MxMjM3MERBQ0MwMDQ0
RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLywKKwkJCQk1MTQ4OUNDMjIzNzBEQUNDMDA0NEU2OEEg
LyogV0tGaW5kUmVzdWx0Lm1tICovLAorCQkJCTUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBX
S0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovLAogCQkJCTFBNEQ2NjRBMThBMzAzMEUwMEQ4MkUyMSAv
KiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4MkUyMSAvKiBXS0Zy
YW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUgLyogV0tGcmFtZUlu
Zm9JbnRlcm5hbC5oICovLApAQCAtOTU5Myw2ICs5NjA2LDcgQEAKIAkJCQkyOTg0RjU4OTE2NEJB
MDk1MDA0QkMwQzYgLyogTGVnYWN5Q3VzdG9tUHJvdG9jb2xNYW5hZ2VyTWVzc2FnZXMuaCBpbiBI
ZWFkZXJzICovLAogCQkJCTI5QUQzMDkzMTY0QjRDNUQwMDcyREVBOSAvKiBMZWdhY3lDdXN0b21Q
cm90b2NvbE1hbmFnZXJQcm94eS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMjk4NEY1N0QxNjRCOTE1
RjAwNEJDMEM2IC8qIExlZ2FjeUN1c3RvbVByb3RvY29sTWFuYWdlclByb3h5TWVzc2FnZXMuaCBp
biBIZWFkZXJzICovLAorCQkJCTUxNDg5Q0M3MjM3MjM3ODAwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1
bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMUExREMzNDAxOTYzNDZENzAwRkY3MDU5
IC8qIExlZ2FjeVNlc3Npb25TdGF0ZUNvZGluZy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDExQjIy
NjQxRTM3MUJBNjAwNEY3MzYzIC8qIExpYldlYlJUQ05ldHdvcmsuaCBpbiBIZWFkZXJzICovLAog
CQkJCTQxMzA3NUI0MURFODVGNTgwMDM5RUM2OSAvKiBMaWJXZWJSVENQcm92aWRlci5oIGluIEhl
YWRlcnMgKi8sCkBAIC0xMDQwNCw2ICsxMDQxOCw3IEBACiAJCQkJN0NDOTlBMzYxOEVGN0NCQzAw
NDhDOEI0IC8qIFdLU2NyaXB0TWVzc2FnZUludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RkNCNEU1NDE4QkJFMDQ0MDAwRkNGQzkgLyogV0tTY3JvbGxWaWV3LmggaW4gSGVhZGVycyAqLywK
IAkJCQk1MUNEMUM2NTFCMzRCOUQ0MDAxNDJDQTUgLyogV0tTZWN1cml0eU9yaWdpbi5oIGluIEhl
YWRlcnMgKi8sCisJCQkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDRDFDNjcxQjM0QjlERjAwMTQyQ0E1IC8qIFdLU2VjdXJp
dHlPcmlnaW5JbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNTFDRDFDNUUxQjM0OTNCNDAw
MTQyQ0E1IC8qIFdLU2VjdXJpdHlPcmlnaW5SZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3
NjA0MTI0RkYwMjcwMDY4RjIwQSAvKiBXS1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGluIEhlYWRl
cnMgKi8sCkBAIC0xMDQ4MSw2ICsxMDQ5Niw3IEBACiAJCQkJQkM5ODlEODUxNjFBOTg5MDAwMEQ0
NkQzIC8qIFdLV2ViUHJvY2Vzc1BsdWdJbkludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkx
RjMzNUJDMDE4NUI4NEYwMDAxQTIwMUEgLyogV0tXZWJQcm9jZXNzUGx1Z0luTG9hZERlbGVnYXRl
LmggaW4gSGVhZGVycyAqLywKIAkJCQkxRjc1MDZCMzE4NTkxNjQ1MDBFQzBGRjcgLyogV0tXZWJQ
cm9jZXNzUGx1Z0luTm9kZUhhbmRsZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0QUI5RjAyMzYw
RDJBOTAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTFGNzUwNkI2MTg1OTE2NTcwMEVDMEZGNyAvKiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxl
SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQzhGOUNCMUZERjU4NzAwMDI2MzVFNyAv
KiBXS1dlYlByb2Nlc3NQbHVnSW5Ob2RlSGFuZGxlUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUZCMDBBQzcxODVGNzY0NjAwMTkxNDJFIC8qIFdLV2ViUHJvY2Vzc1BsdWdJblBhZ2VHcm91
cC5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMDc2MmQwMGFhYjQuLjNiNjkxOGU0OWYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCkBAIC0yMjQsNyArMjI0LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6dXBkYXRlRmlu
ZFVJQWZ0ZXJQYWdlU2Nyb2xsKGJvb2wgZm91bmQsIGNvbnN0IFN0cmluZyYgc3RyaW4KICAgICAg
ICAgaGlkZUZpbmRJbmRpY2F0b3IoKTsKIH0KIAotdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCkKK3ZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IENhbGxiYWNrSUQgY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFn
ZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yNzcs
NiArMjc3LDEwIEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnCiAgICAgbV93ZWJQYWdlLT5kcmF3
aW5nQXJlYSgpLT5kaXNwYXRjaEFmdGVyRW5zdXJpbmdVcGRhdGVkU2Nyb2xsUG9zaXRpb24oW3By
b3RlY3RlZFdlYlBhZ2UsIGZvdW5kLCBzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGRp
ZFdyYXBdICgpIHsKICAgICAgICAgcHJvdGVjdGVkV2ViUGFnZS0+ZmluZENvbnRyb2xsZXIoKS51
cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0
Y2hDb3VudCwgZGlkV3JhcCwgRmluZFVJT3JpZ2luYXRvcjo6RmluZFN0cmluZyk7CiAgICAgfSk7
CisKKyAgICAvLyBUaGUgY2xpZW50IGNhbiBjYWxsIHRoaXMgd2l0aCBhbiBpbnZhbGlkIGNhbGxi
YWNrSUQgYmVjYXVzZSB0aGV5IGRvbid0IG5lZWQgYSBjYWxsYmFjay4KKyAgICBpZiAoY2FsbGJh
Y2tJRC5pc1ZhbGlkKCkpCisgICAgICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpGaW5kU3RyaW5nQ2FsbGJhY2soZm91bmQsIGNhbGxiYWNrSUQpKTsKIH0KIAogdm9p
ZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaAppbmRleCBiMzJk
NTNmMjI4Ni4uYWQwMDM3NTg0MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAg
ZXhwbGljaXQgRmluZENvbnRyb2xsZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRDb250
cm9sbGVyKCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgQ2FsbGJhY2tJRCk7
CiAgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1
aW50MzJfdCBtYXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBt
YXRjaEluZGV4KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAKaW5kZXggZmY4ZjIwNDEzM2MuLjRiYjMyMzM2YWE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNDA0OCw5ICs0MDQ4LDkgQEAgdm9pZCBX
ZWJQYWdlOjpyZXBsYWNlU3RyaW5nTWF0Y2hlc0Zyb21JbmplY3RlZEJ1bmRsZShjb25zdCBWZWN0
b3I8dWludDMyX3Q+JiBtYXQKICAgICBmaW5kQ29udHJvbGxlcigpLnJlcGxhY2VNYXRjaGVzKG1h
dGNoSW5kaWNlcywgcmVwbGFjZW1lbnRUZXh0LCBzZWxlY3Rpb25Pbmx5KTsKIH0KIAotdm9pZCBX
ZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25z
LCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlOjpmaW5kU3RyaW5nKGNvbnN0
IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50
LCBDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3Ry
aW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENv
dW50KTsKKyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2Fz
dDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1
aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ0YzdmNDg3NWVjLi44NTVjZjgwZGE3
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQ3
Miw3ICsxNDcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYXBwbHlFZGl0Q29tbWFuZChXZWJV
bmRvU3RlcElEIGNvbW1hbmRJRCk7CiAgICAgdm9pZCBkaWRSZW1vdmVFZGl0Q29tbWFuZChXZWJV
bmRvU3RlcElEIGNvbW1hbmRJRCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOworICAgIHZv
aWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMy
X3QgbWF4TWF0Y2hDb3VudCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hD
b3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4
KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmlu
CmluZGV4IDM2ZTNkMjg5MTkzLi4yYTVhZjg1ZWU3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yODQsNyArMjg0
LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0
OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBQb3N0SW5qZWN0ZWRCdW5kbGVNZXNz
YWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkKIAog
ICAgICMgRmluZC4KLSAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRP
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0
cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogICAgIEZpbmRTdHJpbmdNYXRjaGVzKFN0cmluZyBz
dHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQogICAg
IEdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCiAgICAgU2VsZWN0Rmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382950</attachid>
            <date>2019-11-06 12:57:22 -0800</date>
            <delta_ts>2019-11-06 15:07:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203872-20191106125721.patch</filename>
            <type>text/plain</type>
            <size>34208</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMDExCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDhlYjg0NjA5ZjQ4YTdjN2Vh
NmEyZjg5NjZlZmFiYTA4MTJiOWE3ZmUuLjQyYTU5NGUxNDc4Y2M3YjcwOWI1ZWRlYjgyMmU2NGVj
MDc2MGRmMjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMTEtMDYgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBGaW5kLWluLXBh
Z2UgQVBJLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY5NzExMTI+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBBUEkgdGVz
dHMuCisKKyAgICAgICAgLSBQcm9tb3RlIF9maW5kU3RyaW5nOgorICAgICAgICAtIEFkZCBhIGNv
bXBsZXRpb24gaGFuZGxlciBmb3IgaXQuCisgICAgICAgIAorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29u
ZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZENvbmZpZ3VyYXRpb24ubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaC4KKyAgICAg
ICAgKC1bV0tGaW5kQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgtW1dLRmluZENvbmZp
Z3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRmluZFJlc3VsdC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oLgor
ICAgICAgICAoLVtXS0ZpbmRSZXN1bHQgaW5pdF0pOgorICAgICAgICAoLVtXS0ZpbmRSZXN1bHQg
X2luaXRXaXRoTWF0Y2hGb3VuZDpdKToKKyAgICAgICAgKC1bV0tGaW5kUmVzdWx0IGNvcHlXaXRo
Wm9uZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAodG9GaW5kT3B0aW9ucyk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5n
OndpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xs
ZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMDQgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXVtXSzJdIFNpbXBsaWZ5IHByb2Nlc3MgYXNzZXJ0
aW9uIGhhbmRsaW5nIGZvciB0aGUgbmV0d29yayBwcm9jZXNzIGFuZCBzZXJ2aWNlIHdvcmtlciBw
cm9jZXNzZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dAppbmRleCBhMjJhYWJhMDMxMDFlZjdjMzBhOGEw
NDRhOGRjYTI4ZjgxMDFlZWMxLi42NDEyY2VmNzQzNmE3NGU2NzYzZWUwMmQ1MzAwYmU1OWNhMDAz
NzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291
cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CkBAIC0yOTAsNiArMjkwLDggQEAgVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0NvbnRlbnRSdWxlTGlzdC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Nv
bnRlbnRSdWxlTGlzdFN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLQ29udGV4dE1lbnVF
bGVtZW50SW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Vycm9yLm1tCitVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KK1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tG
aW5kUmVzdWx0Lm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRnJhbWVJbmZvLm1tCiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLSFRUUENvb2tpZVN0b3JlLm1tCiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
TWVudUl0ZW1JZGVudGlmaWVycy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmViMGM1NGY3
N2RmY2ZjYTJjM2UwYjE3ZjBjMzdkZDU4Yjg0MjQ2NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLmgKQEAgLTAs
MCArMSw1NiBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
KyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLwor
CisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JF
R0lOCisKK3R5cGVkZWYgTlNfRU5VTShOU0ludGVnZXIsIFdLRmluZERpcmVjdGlvbikgeworICAg
IFdLRmluZERpcmVjdGlvbkZvcndhcmQsCisgICAgV0tGaW5kRGlyZWN0aW9uQmFja3dhcmQsCit9
IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTYpLCBpb3MoMTQuMCkpOworCitXS19DTEFTU19B
VkFJTEFCTEUobWFjb3MoMTAuMTYpLCBpb3MoMTQuMCkpCitAaW50ZXJmYWNlIFdLRmluZENvbmZp
Z3VyYXRpb24gOiBOU09iamVjdCA8TlNDb3B5aW5nPgorCisvKiBAYWJzdHJhY3QgVGhlIGRpcmVj
dGlvbiB0byBzZWFyY2ggZnJvbSB0aGUgY3VycmVudCBzZWxlY3Rpb24KKyBAZGlzY3Vzc2lvbiBU
aGUgc2VhcmNoIHdpbGwgcmVzcGVjdCB0aGUgd3JpdGluZyBkaXJlY3Rpb24gb2YgdGhlIGRvY3Vt
ZW50LgorIFRoZSBpbml0aWFsIHZhbHVlIGlzIFdLRmluZERpcmVjdGlvbkZvcndhcmQuCisqLwor
QHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYmFja3dhcmRzOworCisvKiBAYWJzdHJhY3QgV2hl
dGhlciBvciBub3QgdGhlIHNlYXJjaCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUKKyBAZGlzY3Vz
c2lvbiBUaGUgaW5pdGlhbCB2YWx1ZSBpcyBOTy4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCBjYXNlU2Vuc2l0aXZlOworCisvKiBAYWJzdHJhY3QgV2hldGhlciB0aGUgc2VhcmNoIHNo
b3VsZCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBkb2N1bWVudCBvbmNlIGl0IHJlYWNo
ZXMgdGhlIGVuZAorIEBkaXNjdXNzaW9uIFRoZSBpbml0aWFsIHZhbHVlIGlzIFlFUy4KKyovCitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3cmFwczsKKworQGVuZAorCitOU19BU1NVTUVfTk9O
TlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0ZpbmRDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRmluZENvbmZpZ3VyYXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmJhZTg3YjgyZmY2NzM4NWE2ZWFi
OTk1ZTAwYzFjZmJlODBlYzFhMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCkBAIC0wLDAgKzEsNTMgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRmluZENvbmZpZ3Vy
YXRpb24uaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZENvbmZpZ3VyYXRpb24KKworLSAoaW5z
dGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAg
ICAgcmV0dXJuIG5pbDsKKworICAgIHNlbGYuYmFja3dhcmRzID0gTk87CisgICAgc2VsZi5jYXNl
U2Vuc2l0aXZlID0gTk87CisgICAgc2VsZi53cmFwcyA9IFlFUzsKKyAgICByZXR1cm4gc2VsZjsK
K30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgV0tGaW5kQ29u
ZmlndXJhdGlvbiAqZmluZENvbmZpZ3VyYXRpb24gPSBbKFdLRmluZENvbmZpZ3VyYXRpb24gKilb
W3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBmaW5kQ29uZmln
dXJhdGlvbi5iYWNrd2FyZHMgPSBzZWxmLmJhY2t3YXJkczsKKyAgICBmaW5kQ29uZmlndXJhdGlv
bi5jYXNlU2Vuc2l0aXZlID0gc2VsZi5jYXNlU2Vuc2l0aXZlOworICAgIGZpbmRDb25maWd1cmF0
aW9uLndyYXBzID0gc2VsZi53cmFwczsKKworICAgIHJldHVybiBmaW5kQ29uZmlndXJhdGlvbjsK
K30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLRmluZFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYzAyYzNkYmFjYjU5NTVmOTFlZTJiMGE3Y2E4Mjk1NDc2
NTVmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGaW5kUmVzdWx0LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+
CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhX
S19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBXS0ZpbmRSZXN1bHQgOiBO
U09iamVjdCA8TlNDb3B5aW5nPgorCisvKiBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgYSBtYXRj
aCB3YXMgZm91bmQgZHVyaW5nIHRoZSBmaW5kIG9wZXJhdGlvbiAqLworQHByb3BlcnR5IChub25h
dG9taWMsIHJlYWRvbmx5KSBCT09MIG1hdGNoRm91bmQ7CisKK0BlbmQKKworTlNfQVNTVU1FX05P
Tk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGaW5kUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZFJlc3VsdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYzhmNmJmNjViZmE2Njk3Y2M5MWE0Yzk2MTA2ZGY0OGQ0
NDc3NWNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLRmluZFJlc3VsdC5tbQpAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9y
dCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIgorCitAaW1wbGVt
ZW50YXRpb24gV0tGaW5kUmVzdWx0CisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAgcmV0
dXJuIFtzZWxmIF9pbml0V2l0aE1hdGNoRm91bmQ6Tk9dOworfQorCistIChpbnN0YW5jZXR5cGUp
X2luaXRXaXRoTWF0Y2hGb3VuZDooQk9PTCltYXRjaEZvdW5kCit7CisgICAgaWYgKCEoc2VsZiA9
IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBfbWF0Y2hGb3VuZCA9
IG1hdGNoRm91bmQ7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQpY29weVdpdGhab25l
OihOU1pvbmUgKil6b25lCit7CisgICAgV0tGaW5kUmVzdWx0ICpmaW5kUmVzdWx0ID0gWyhXS0Zp
bmRSZXN1bHQgKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAg
ICBmaW5kUmVzdWx0LT5fbWF0Y2hGb3VuZCA9IHNlbGYubWF0Y2hGb3VuZDsKKworICAgIHJldHVy
biBmaW5kUmVzdWx0OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNmM2Qw
ODA0MmIzODhjNDVlZjY4NGRiMTg4ZTFkYmIyZGQwMzFiNWQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaApA
QCAtMCwwICsxLDMzIEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6
CisqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyovCisKKyNpbXBvcnQgIldLRmluZFJlc3VsdC5oIgorCitAaW50ZXJmYWNlIFdLRmluZFJlc3Vs
dCAoKSB7Cit9CisKKy0gKGluc3RhbmNldHlwZSlfaW5pdFdpdGhNYXRjaEZvdW5kOihCT09MKW1h
dGNoRm91bmQ7CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcuaAppbmRleCBkZDZmODdiMTYyY2M1YzA3NzlmOWUxMjU0MTVjZTU0OWYzMzNhYjky
Li5lYTc0NWNlYmNiYjM3ZDVmMGQwNTJmYzlkZmE2ZTQ5NmM1MmIxOWYzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCkBAIC0zNSw2ICszNSw4IEBA
IE5TX0FTU1VNRV9OT05OVUxMX0JFR0lOCiAKIEBjbGFzcyBXS0JhY2tGb3J3YXJkTGlzdDsKIEBj
bGFzcyBXS0JhY2tGb3J3YXJkTGlzdEl0ZW07CitAY2xhc3MgV0tGaW5kQ29uZmlndXJhdGlvbjsK
K0BjbGFzcyBXS0ZpbmRSZXN1bHQ7CiBAY2xhc3MgV0tOYXZpZ2F0aW9uOwogQGNsYXNzIFdLUERG
Q29uZmlndXJhdGlvbjsKIEBjbGFzcyBXS1NuYXBzaG90Q29uZmlndXJhdGlvbjsKQEAgLTMwMyw2
ICszMDUsMTYgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZl
IGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKICovCiBAcHJvcGVydHkgKG5vbmF0
b21pYykgQ0dGbG9hdCBwYWdlWm9vbSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEp
LCBpb3MoV0tfSU9TX1RCQSkpOwogCisvKiBAYWJzdHJhY3QgU2VhcmNoZXMgdGhlIHBhZ2UgY29u
dGVudHMgZm9yIHRoZSBnaXZlbiBzdHJpbmcuCisgQHBhcmFtIHN0cmluZyBUaGUgc3RyaW5nIHRv
IHNlYXJjaCBmb3IuCisgQHBhcmFtIGNvbmZpZ3VyYXRpb24gQSBzZXQgb2Ygb3B0aW9ucyBjb25m
aWd1cmluZyB0aGUgc2VhcmNoLgorIEBwYXJhbSBjb21wbGV0aW9uSGFuZGxlciBBIGJsb2NrIHRv
IGludm9rZSB3aGVuIHRoZSBzZWFyY2ggY29tcGxldGVzLgorIEBkaXNjdXNzaW9uIElmIHRoZSBX
S0ZpbmRDb25maWd1cmF0aW9uIGlzIG5pbCwgYWxsIG9mIHRoZSBkZWZhdWx0IFdLRmluZENvbmZp
Z3VyYXRpb24gdmFsdWVzIHdpbGwgYmUgdXNlZC4KKyAgQSBtYXRjaCBmb3VuZCBieSB0aGUgc2Vh
cmNoIGlzIHNlbGVjdGVkIGFuZCB0aGUgcGFnZSBpcyBzY3JvbGxlZCB0byByZXZlYWwgdGhlIHNl
bGVjdGlvbi4KKyAgVGhlIGNvbXBsZXRpb24gaGFuZGxlciBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHNl
YXJjaCBjb21wbGV0ZXMuCisqLworLSAodm9pZClmaW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmlu
ZyB3aXRoQ29uZmlndXJhdGlvbjoobnVsbGFibGUgV0tGaW5kQ29uZmlndXJhdGlvbiAqKWNvbmZp
Z3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdLRmluZFJlc3VsdCAqcmVzdWx0
KSljb21wbGV0aW9uSGFuZGxlciBOU19SRUZJTkVEX0ZPUl9TV0lGVCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworCiAvKiBAYWJzdHJhY3QgQ2hl
Y2tzIHdoZXRoZXIgb3Igbm90IFdLV2ViVmlld3MgaGFuZGxlIHRoZSBnaXZlbiBVUkwgc2NoZW1l
IGJ5IGRlZmF1bHQuCiAgQHBhcmFtIHNjaGVtZSBUaGUgVVJMIHNjaGVtZSB0byBjaGVjay4KICAq
LwpAQCAtMzUxLDYgKzM2MywxMCBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlw
ZVdlYkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogCiBAZW5kCiAK
K1dLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTYpKQorQGludGVyZmFjZSBXS1dlYlZpZXcgKFdL
TlNUZXh0RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgorQGVuZAorCiAjZW5kaWYK
IAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLRGVwcmVjYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDgyY2Q0YTU2ZDM3MjllNmZi
M2I3NWFlMGRlNjg5NDk4NWI3ODdiOTIuLmM5ZmRhZTZkMzA5ZDEyYzQ0NmM5ZDdkODlhMzlmYjEy
ZDc5MjE5MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtNTksNiArNTksOCBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVt
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGaW5kQ29uZmlndXJhdGlv
bi5oIgorI2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlzdG9y
eURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJX
S05TRGF0YS5oIgpAQCAtNDczNCw2ICs0NzM2LDM0IEBAIC0gKHZvaWQpY3JlYXRlV2ViQXJjaGl2
ZURhdGFXaXRoQ29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TRGF0YSAqLCBOU0Vycm9yICop
CiAgICAgfSk7CiB9CiAKK2lubGluZSBXZWJLaXQ6OkZpbmRPcHRpb25zIHRvRmluZE9wdGlvbnMo
V0tGaW5kQ29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbikKK3sKKyAgICB1bnNpZ25lZCBmaW5k
T3B0aW9ucyA9IDA7CisKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24uY2FzZVNlbnNpdGl2ZSkKKyAg
ICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0Nhc2VJbnNlbnNpdGl2ZTsK
KyAgICBpZiAoIWNvbmZpZ3VyYXRpb24uYmFja3dhcmRzKQorICAgICAgICBmaW5kT3B0aW9ucyB8
PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAgIGlmICghY29uZmlndXJhdGlvbi53
cmFwcykKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc1dyYXBBcm91
bmQ7CisKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8V2ViS2l0OjpGaW5kT3B0aW9ucz4oZmluZE9w
dGlvbnMpOworfQorCistICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5nICopc3RyaW5nIHdpdGhD
b25maWd1cmF0aW9uOihXS0ZpbmRDb25maWd1cmF0aW9uICopY29uZmlndXJhdGlvbiBjb21wbGV0
aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgaWYgKCFzdHJpbmcubGVuZ3RoKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5k
bGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gaW5pdF0gYXV0b3JlbGVhc2VdKTsKKyAgICAgICAg
cmV0dXJuOworICAgIH0KKworICAgIF9wYWdlLT5maW5kU3RyaW5nKHN0cmluZywgdG9GaW5kT3B0
aW9ucyhjb25maWd1cmF0aW9uKSwgMSwgW2hhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlv
bkhhbmRsZXIpXShib29sIGZvdW5kLCBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3IgZXJyb3Ip
IHsKKyAgICAgICAgV0tGaW5kUmVzdWx0ICpyZXN1bHQgPSBbW1tXS0ZpbmRSZXN1bHQgYWxsb2Nd
IF9pbml0V2l0aE1hdGNoRm91bmQ6KGVycm9yID09IFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJv
cjo6Tm9uZSAmJiBmb3VuZCldIGF1dG9yZWxlYXNlXTsKKworICAgICAgICBoYW5kbGVyKHJlc3Vs
dCk7CisgICAgfSk7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAoV0tQ
cml2YXRlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggZjE5NjA2YWQ2ZWYxMjQ2ZjJlZDQ0MDNmN2UxYWRlODc5Yjk2
M2E4NC4uMWFhNjFjY2QyNzk4OGNjZjI4ZGE5MjY2OWYwYjlkNjdhYjFiNmFkNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CkBAIC00NTAsMTEgKzQ1MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tS
ZWN0RWRnZSkgewogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRF
ZGl0QWN0aW9ucz4KIEBlbmQKIAotI2Vsc2UKLQotQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNU
ZXh0RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgotQGVuZAotCiAjZW5kaWYKIAog
QGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNl
c3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Q
b3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaAppbmRleCBiNjY5NGZlOTA2ZWEwYjRmODJhNTQw
NjYyY2M4NTUwYjJmZTFhNWQyLi40NTRjNjFmZmRlZmVjYzQ3NmQxNTYwYzdjNDNmNWI1ZDM0NWYy
ODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6
YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgSEFWRShBUFBfU1NPKQogCiAjaW5jbHVkZSAiU09B
dXRob3JpemF0aW9uU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5o
PgogCiBPQkpDX0NMQVNTIFdLU09TZWNyZXREZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0
aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0K
aW5kZXggMDc2Y2ZhYTY3NmE3NGM0ZjMzNjAxZmY2NjQ0ZGVjNWU1YjU2MWNhMS4uMGYxODAzOGRl
OTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRp
b24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1w
b3J0ICJXS1VJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2
YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVBy
b3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0
Zi9CbG9ja1B0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcApp
bmRleCA4ZWM4ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi5mZDlkMzU0N2Vm
Y2YxOTdhNDViZTcyODk1MzcxMGI0ODFmOGQ1OWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTksOSArMzY5OSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94
eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5n
TWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9
CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBG
aW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdl
UHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNr
QmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hD
b3VudCksIG1fd2ViUGFnZUlEKTsKKyAgICBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lE
OworICAgIGlmIChjYWxsYmFja0Z1bmN0aW9uKQorICAgICAgICBjYWxsYmFja0lEID0gbV9jYWxs
YmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVy
KCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmciX3MpKTsKKwor
ICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcs
IG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisK
K3ZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgQ2FsbGJh
Y2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtl
PEJvb2xDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAg
cmV0dXJuOworCisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShm
b3VuZCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQz
Ml90IG1hdGNoSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4
IGI4NGZiOWUwZWYzOTVlNmY2ZDkyY2I3MDQwYjVmMDVkOGFkYmJkNDUuLmM2YzM2ZjM1NDhmMzg1
NzE4ZmM4NGFiYzI0MWZlZTA5N2UyM2JiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCkBAIC0zMzcsNiArMzM3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRl
dGFpbHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29u
c3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxiYWNrOwogdHlw
ZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJh
Y2s8Ym9vbD4gQm9vbENhbGxiYWNrOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9O
X1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKQEAgLTEwMTks
NyArMTAyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdpblpvb21GYWN0b3JEaWRDaGFuZ2Uo
ZG91YmxlKTsKIAogICAgIC8vIEZpbmQuCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmID0gbnVsbHB0cik7
CiAgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaChp
bnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0
Y2hJbmRleCk7CkBAIC0xMDMyLDYgKzEwMzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0
SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyog
V2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQ
ZXJtYW5lbnQgKi8pOwogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNz
KGZsb2F0KTsKICAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcigpOworCisgICAgdm9pZCBmaW5k
U3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVp
bnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5k
KTsKICAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9p
ZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9y
PFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJT
ZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDIyNjlhYTY5ZWExZmQ5ODk1Y2Q0MGI4ODMzZDU2ZmQ1ZGFmYzk1Zjku
LjVkODM5MmI5MmY2ZDE1ZjNlMjE1YjdjYjgzYTMyNmFiN2FkZDRiNTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwOSw2ICsy
MDksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIE1hY2hTZW5kUmlnaHRDYWxs
YmFjayhNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCiAgICAgTm93UGxheWluZ0luZm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3Rl
cmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9u
LCBkb3VibGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6
Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCisgICAgRmluZFN0cmluZ0NhbGxiYWNrKGJv
b2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxl
RmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3Rv
ckRpZENoYW5nZShkb3VibGUgem9vbUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDIxZjNmNmFkOGNkMGU5MTQ2MDQwYzAxN2Jh
ZDEyMDZiNzhiNDc2MmIuLmQxMjc2NmM3N2NlZWY5YTMzNDFhMjU1Yzg5YjVkMjNmM2FlNzYwNzkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpA
QCAtOTY0LDYgKzk2NCw5IEBACiAJCTUxM0ZGQjhEMjAxNDU5QjAwMDI1OTZFQSAvKiBVSU1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTNGRkI4QjIwMTQ1OUE3MDAyNTk2RUEgLyogVUlNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oICovOyB9OwogCQk1MTNGRkI5MTIwMTQ1OUM2MDAyNTk2RUEgLyogV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ZGQjhGMjAxNDU5QzIwMDI1OTZFQSAvKiBXZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oICovOyB9OwogCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQg
LyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29u
bmVjdGlvblRvU2VydmVyLmggKi87IH07CisJCTUxNDg5Q0MzMjM3MERCRkEwMDQ0RTY4QSAvKiBX
S0ZpbmRSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxNDg5Q0MxMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxNDg5Q0M3MjM3MjM3ODAw
MDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmlu
ZFJlc3VsdEludGVybmFsLmggKi87IH07CisJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBX
S0ZpbmRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTRBQjlFRjIzNUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTE0
QkRFRDMxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2Qzk4RUREMDBFNEUy
NUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcxOTExOUQzNTAwMDA2
M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29u
dHJvbGxlci5oICovOyB9OwogCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2
ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJCMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMzM0Myw2ICszMzQ2
LDExIEBACiAJCTUxNDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9T
ZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlv
blRvU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RG
RDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5n
Q2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5n
Q2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0MxMjM3MERBQ0Mw
MDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV0tGaW5kUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0My
MjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZpbmRSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5h
bC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHRJbnRlcm5h
bC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTRBQjlFRjIzNUZBNTlCMDBFREMz
OTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBXS0ZpbmRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxNEFCOUYxMjM2MEU4M0QwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGaW5kQ29uZmlndXJhdGlvbi5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVF
IC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFN0YXRpc3RpY3NSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5
RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRy
b2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNl
c0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDQzLDYgKzY0
NTEsMTEgQEAKIAkJCQkxQUY0NTkyQzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywK
IAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAgLyogV0tFcnJvckludGVybmFsLmggKi8sCiAJ
CQkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8sCisJCQkJ
NTE0QUI5RUYyMzVGQTU5QjAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCAqLywKKwkJ
CQk1MTRBQjlGMTIzNjBFODNEMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5tbSAqLywK
KwkJCQk1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi8sCisJCQkJ
NTE0ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLywKKwkJCQk1MTQ4
OUNDNjIzNzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLywKIAkJCQkx
QTRENjY0QTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAqLywKIAkJCQkxQTRENjY0
OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcxQTc4
MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTEwMjM2LDcgKzEw
MjQ5LDEwIEBACiAJCQkJQkM0MDc1RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJyb3JSZWYuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBs
b2FkUGFuZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAv
KiBXS0ZpbmRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y2MjNCODEyQTU3
QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODlD
QzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJ
NTE0ODlDQzcyMzcyMzc4MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggaW4gSGVh
ZGVycyAqLywKIAkJCQkyRTE2QjZDRjIwMTdCN0FEMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNv
bnRyb2xWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMg
LyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTQ4RUJEMTIxMDE1
RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmlu
ZGV4IDA3NjJkMDBhYWI0N2UyYzZmMzlhODA0ODcwNmQ2ZGNkNmYzNjk0MTAuLmM2Y2MzOGEzNGVh
ZDc3ZjFmYjZlYzM4YmQxODBkNzRlYmRiOTM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBA
QCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBm
b3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICBoaWRlRmluZEluZGljYXRvcigpOwog
fQogCi12b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5n
LCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5k
Q29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMg
b3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4gY2Fs
bGJhY2tJRCkKIHsKICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0Zv
ckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yNzcsNiArMjc3LDkgQEAgdm9p
ZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWcKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3Bh
dGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVkV2ViUGFnZSwg
Zm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCwgZGlkV3JhcF0gKCkgewogICAg
ICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVy
UGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFw
LCBGaW5kVUlPcmlnaW5hdG9yOjpGaW5kU3RyaW5nKTsKICAgICB9KTsKKworICAgIGlmIChjYWxs
YmFja0lEKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RmluZFN0cmluZ0NhbGxiYWNrKGZvdW5kLCAqY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIEZpbmRD
b250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9w
dGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IGIzMmQ1M2YyMjg2
ZTNhNGI4NTZhYjRiNGE4NzI2YmJiOWMwOTJmZjMuLjQ0MDU5YTFlZmMxNDVmNjJhOGQ4ZWI1NTlh
NzQ4MGRmMTgzODc0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvRmluZENvbnRyb2xsZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGlj
aXQgRmluZENvbnRyb2xsZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRDb250cm9sbGVy
KCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcm
LCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJ
RD4pOwogICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0
Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2godWludDMy
X3QgbWF0Y2hJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwCmluZGV4IGZmOGYyMDQxMzNjMDgxYWNiNGQ2ZWVlMjJiNGNmOTE1Y2QzYWVkNzYuLmNh
NDVmNDg0OWQ4MGJlNGM2ZjZmZjI1NjY0ODZmNmU5NGE2ZTlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MDQ4LDkgKzQwNDgsOSBAQCB2
b2lkIFdlYlBhZ2U6OnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0
IFZlY3Rvcjx1aW50MzJfdD4mIG1hdAogICAgIGZpbmRDb250cm9sbGVyKCkucmVwbGFjZU1hdGNo
ZXMobWF0Y2hJbmRpY2VzLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkpOwogfQogCi12
b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9w
dGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmco
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNo
Q291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQpCiB7Ci0gICAgZmluZENvbnRy
b2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlv
bnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3Ry
aW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQsIGNh
bGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0
cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ0YzdmNDg3
NWVjZGEzOWRkMDA0ZmI2MmYyMTE1ZTllY2Y2YjQyYjIuLjYyMzA4ZGM2NjAyOTM1Y2FmNjc0YzZh
Y2MxYTc2YzI2ZGY5MDUwNTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwcGx5
RWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogICAgIHZvaWQgZGlkUmVtb3Zl
RWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogCi0gICAgdm9pZCBmaW5kU3Ry
aW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRj
aENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmlu
ZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsK
ICAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRP
cHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVp
bnQzMl90IG1hdGNoSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzZlM2QyODkxOTNkMDNmMWFhOTVkMmIw
NmE3MWExMjZhMTMzZjAzNS4uZGExYzc1NWY1YjMyODc1YjNhYzE0Zjg3M2MyZjI1NjdjOGQ4Zjcx
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
Lm1lc3NhZ2VzLmluCkBAIC0yODQsNyArMjg0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5n
Q29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUK
ICAgICBQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0
OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkKIAogICAgICMgRmluZC4KLSAgICBGaW5kU3RyaW5nKFN0
cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50
KQorICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVu
c2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJh
Y2tJRCkKICAgICBGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKICAgICBHZXRJbWFnZUZvckZpbmRNYXRj
aCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRj
aEluZGV4KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>382964</attachid>
            <date>2019-11-06 15:07:32 -0800</date>
            <delta_ts>2019-11-08 09:33:39 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203872-20191106150732.patch</filename>
            <type>text/plain</type>
            <size>34822</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkZmRmNGU3MjYyN2ZhYmQw
NzdmOTI1YTQ4NDNiY2UzOTBmYmMyYTYuLjEyZWU3Y2ExYzg1OWVmNDE0ZjU5MWMzZjg0OWY3ZmNj
MTBjOTZlZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTUgQEAKKzIwMTktMTEtMDYgIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBGaW5kLWluLXBh
Z2UgQVBJLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY5NzExMTI+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBleGlzdGluZyBBUEkgdGVz
dHMuCisKKyAgICAgICAgLSBQcm9tb3RlIF9maW5kU3RyaW5nOgorICAgICAgICAtIEFkZCBhIGNv
bXBsZXRpb24gaGFuZGxlciBmb3IgaXQuCisgICAgICAgIAorICAgICAgICAqIFNvdXJjZXNDb2Nv
YS50eHQ6CisgICAgICAgIAorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29u
ZmlndXJhdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmlu
ZENvbmZpZ3VyYXRpb24ubW06IENvcGllZCBmcm9tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaC4KKyAgICAg
ICAgKC1bV0tGaW5kQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAgICgtW1dLRmluZENvbmZp
Z3VyYXRpb24gY29weVdpdGhab25lOl0pOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRmluZFJlc3VsdC5tbTogQ29waWVkIGZyb20gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oLgor
ICAgICAgICAoLVtXS0ZpbmRSZXN1bHQgaW5pdF0pOgorICAgICAgICAoLVtXS0ZpbmRSZXN1bHQg
X2luaXRXaXRoTWF0Y2hGb3VuZDpdKToKKyAgICAgICAgKC1bV0tGaW5kUmVzdWx0IGNvcHlXaXRo
Wm9uZTpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVy
bmFsLmg6IEFkZGVkLgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgor
ICAgICAgICAodG9GaW5kT3B0aW9ucyk6CisgICAgICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5n
OndpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAgICAKKyAgICAgICAgKiBV
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lv
bi5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tOgorICAgICAgICAKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5n
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2spOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAKKyAgICAgICAgKiBXZWJLaXQueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgCisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xs
ZXI6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oOgorICAgICAgICAKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6
QGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgd2UgbmV2ZXIgZW5kIHVwIHdpdGggTmV0
d29ya0RhdGFUYXNrQ29jb2EgVGFza0lkZW50aWZpZXIgY29uZmxpY3RzCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2Nv
YS50eHQKaW5kZXggYTIyYWFiYTAzMTAxZWY3YzMwYThhMDQ0YThkY2EyOGY4MTAxZWVjMS4uNjQx
MmNlZjc0MzZhNzRlNjc2M2VlMDJkNTMwMGJlNTljYTAwMzczNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29h
LnR4dApAQCAtMjkwLDYgKzI5MCw4IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVs
ZUxpc3QubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQog
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tFcnJvci5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1
cmF0aW9uLm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS0ZyYW1lSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29r
aWVTdG9yZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS01lbnVJdGVtSWRlbnRpZmllcnMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25m
aWd1cmF0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29u
ZmlndXJhdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYjBjNTRmNzdkZmNmY2EyYzNlMGIxN2YwYzM3ZGQ1
OGI4NDI0NjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisqIENvcHly
aWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBg
YEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91
bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCit0eXBlZGVmIE5TX0VOVU0o
TlNJbnRlZ2VyLCBXS0ZpbmREaXJlY3Rpb24pIHsKKyAgICBXS0ZpbmREaXJlY3Rpb25Gb3J3YXJk
LAorICAgIFdLRmluZERpcmVjdGlvbkJhY2t3YXJkLAorfSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE2KSwgaW9zKDE0LjApKTsKKworV0tfQ0xBU1NfQVZBSUxBQkxFKG1hY29zKDEwLjE2KSwg
aW9zKDE0LjApKQorQGludGVyZmFjZSBXS0ZpbmRDb25maWd1cmF0aW9uIDogTlNPYmplY3QgPE5T
Q29weWluZz4KKworLyogQGFic3RyYWN0IFRoZSBkaXJlY3Rpb24gdG8gc2VhcmNoIGZyb20gdGhl
IGN1cnJlbnQgc2VsZWN0aW9uCisgQGRpc2N1c3Npb24gVGhlIHNlYXJjaCB3aWxsIHJlc3BlY3Qg
dGhlIHdyaXRpbmcgZGlyZWN0aW9uIG9mIHRoZSBkb2N1bWVudC4KKyBUaGUgaW5pdGlhbCB2YWx1
ZSBpcyBXS0ZpbmREaXJlY3Rpb25Gb3J3YXJkLgorKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljKSBC
T09MIGJhY2t3YXJkczsKKworLyogQGFic3RyYWN0IFdoZXRoZXIgb3Igbm90IHRoZSBzZWFyY2gg
c2hvdWxkIGJlIGNhc2Ugc2Vuc2l0aXZlCisgQGRpc2N1c3Npb24gVGhlIGluaXRpYWwgdmFsdWUg
aXMgTk8uCisqLworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgY2FzZVNlbnNpdGl2ZTsKKwor
LyogQGFic3RyYWN0IFdoZXRoZXIgdGhlIHNlYXJjaCBzaG91bGQgc3RhcnQgYXQgdGhlIGJlZ2lu
bmluZyBvZiB0aGUgZG9jdW1lbnQgb25jZSBpdCByZWFjaGVzIHRoZSBlbmQKKyBAZGlzY3Vzc2lv
biBUaGUgaW5pdGlhbCB2YWx1ZSBpcyBZRVMuCisqLworQHByb3BlcnR5IChub25hdG9taWMpIEJP
T0wgd3JhcHM7CisKK0BlbmQKKworTlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1t
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmJiYWU4N2I4MmZmNjczODVhNmVhYjk5NWUwMGMxY2ZiZTgwZWMxYTAKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5k
Q29uZmlndXJhdGlvbi5tbQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2Ug
Y29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMg
YGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRS
SUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAi
Y29uZmlnLmgiCisjaW1wb3J0ICJXS0ZpbmRDb25maWd1cmF0aW9uLmgiCisKK0BpbXBsZW1lbnRh
dGlvbiBXS0ZpbmRDb25maWd1cmF0aW9uCisKKy0gKGluc3RhbmNldHlwZSlpbml0Cit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBz
ZWxmLmJhY2t3YXJkcyA9IE5POworICAgIHNlbGYuY2FzZVNlbnNpdGl2ZSA9IE5POworICAgIHNl
bGYud3JhcHMgPSBZRVM7CisgICAgcmV0dXJuIHNlbGY7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9u
ZTooTlNab25lICopem9uZQoreworICAgIFdLRmluZENvbmZpZ3VyYXRpb24gKmZpbmRDb25maWd1
cmF0aW9uID0gWyhXS0ZpbmRDb25maWd1cmF0aW9uICopW1tzZWxmIGNsYXNzXSBhbGxvY1dpdGha
b25lOnpvbmVdIGluaXRdOworCisgICAgZmluZENvbmZpZ3VyYXRpb24uYmFja3dhcmRzID0gc2Vs
Zi5iYWNrd2FyZHM7CisgICAgZmluZENvbmZpZ3VyYXRpb24uY2FzZVNlbnNpdGl2ZSA9IHNlbGYu
Y2FzZVNlbnNpdGl2ZTsKKyAgICBmaW5kQ29uZmlndXJhdGlvbi53cmFwcyA9IHNlbGYud3JhcHM7
CisKKyAgICByZXR1cm4gZmluZENvbmZpZ3VyYXRpb247Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45
ZmMwMmMzZGJhY2I1OTU1ZjkxZWUyYjBhN2NhODI5NTQ3NjU1ZmE4Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5oCkBAIC0w
LDAgKzEsMzggQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8K
KworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9C
RUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSkKK0BpbnRlcmZhY2UgV0tGaW5kUmVzdWx0IDogTlNPYmplY3QgPE5TQ29weWluZz4KKwor
LyogQGFic3RyYWN0IFdoZXRoZXIgb3Igbm90IGEgbWF0Y2ggd2FzIGZvdW5kIGR1cmluZyB0aGUg
ZmluZCBvcGVyYXRpb24gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9PTCBt
YXRjaEZvdW5kOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
M2M4ZjZiZjY1YmZhNjY5N2NjOTFhNGM5NjEwNmRmNDhkNDQ3NzVjZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KQEAg
LTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9ydCAi
V0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZFJlc3VsdAor
CistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBbc2VsZiBfaW5pdFdpdGhNYXRj
aEZvdW5kOk5PXTsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1hdGNoRm91bmQ6KEJP
T0wpbWF0Y2hGb3VuZAoreworICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQorICAgICAg
ICByZXR1cm4gbmlsOworCisgICAgX21hdGNoRm91bmQgPSBtYXRjaEZvdW5kOworCisgICAgcmV0
dXJuIHNlbGY7Cit9CisKKy0gKGlkKWNvcHlXaXRoWm9uZTooTlNab25lICopem9uZQoreworICAg
IFdLRmluZFJlc3VsdCAqZmluZFJlc3VsdCA9IFsoV0tGaW5kUmVzdWx0ICopW1tzZWxmIGNsYXNz
XSBhbGxvY1dpdGhab25lOnpvbmVdIGluaXRdOworCisgICAgZmluZFJlc3VsdC0+X21hdGNoRm91
bmQgPSBzZWxmLm1hdGNoRm91bmQ7CisKKyAgICByZXR1cm4gZmluZFJlc3VsdDsKK30KKworQGVu
ZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJl
c3VsdEludGVybmFsLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5k
UmVzdWx0SW50ZXJuYWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zZjNkMDgwNDJiMzg4YzQ1ZWY2ODRkYjE4OGUx
ZGJiMmRkMDMxYjVkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVybmFsLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0ICJXS0ZpbmRS
ZXN1bHQuaCIKKworQGludGVyZmFjZSBXS0ZpbmRSZXN1bHQgKCkgeworfQorCistIChpbnN0YW5j
ZXR5cGUpX2luaXRXaXRoTWF0Y2hGb3VuZDooQk9PTCltYXRjaEZvdW5kOworCitAZW5kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZGQ2Zjg3
YjE2MmNjNWMwNzc5ZjllMTI1NDE1Y2U1NDlmMzMzYWI5Mi4uZWE3NDVjZWJjYmIzN2Q1ZjBkMDUy
ZmM5ZGZhNmU0OTZjNTJiMTlmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXcuaApAQCAtMzUsNiArMzUsOCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJ
TgogCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJ
dGVtOworQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CitAY2xhc3MgV0tGaW5kUmVzdWx0Owog
QGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS1BERkNvbmZpZ3VyYXRpb247CiBAY2xhc3Mg
V0tTbmFwc2hvdENvbmZpZ3VyYXRpb247CkBAIC0zMDMsNiArMzA1LDE2IEBAIFRoZSB1bmlmb3Jt
IHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJl
bGF0ZWQgcGFzdGViCiAqLwogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGFnZVpvb20g
V0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAor
LyogQGFic3RyYWN0IFNlYXJjaGVzIHRoZSBwYWdlIGNvbnRlbnRzIGZvciB0aGUgZ2l2ZW4gc3Ry
aW5nLgorIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLgorIEBwYXJhbSBj
b25maWd1cmF0aW9uIEEgc2V0IG9mIG9wdGlvbnMgY29uZmlndXJpbmcgdGhlIHNlYXJjaC4KKyBA
cGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc2VhcmNo
IGNvbXBsZXRlcy4KKyBAZGlzY3Vzc2lvbiBJZiB0aGUgV0tGaW5kQ29uZmlndXJhdGlvbiBpcyBu
aWwsIGFsbCBvZiB0aGUgZGVmYXVsdCBXS0ZpbmRDb25maWd1cmF0aW9uIHZhbHVlcyB3aWxsIGJl
IHVzZWQuCisgIEEgbWF0Y2ggZm91bmQgYnkgdGhlIHNlYXJjaCBpcyBzZWxlY3RlZCBhbmQgdGhl
IHBhZ2UgaXMgc2Nyb2xsZWQgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24uCisgIFRoZSBjb21wbGV0
aW9uIGhhbmRsZXIgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZWFyY2ggY29tcGxldGVzLgorKi8KKy0g
KHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KG51
bGxhYmxlIFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIgTlNf
UkVGSU5FRF9GT1JfU1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKKwogLyogQGFic3RyYWN0IENoZWNrcyB3aGV0aGVyIG9yIG5vdCBXS1dl
YlZpZXdzIGhhbmRsZSB0aGUgZ2l2ZW4gVVJMIHNjaGVtZSBieSBkZWZhdWx0LgogIEBwYXJhbSBz
Y2hlbWUgVGhlIFVSTCBzY2hlbWUgdG8gY2hlY2suCiAgKi8KQEAgLTM1MSw2ICszNjMsMTAgQEAg
VGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2Vk
IGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKIAogQGVuZAogCitXS19BUElfQVZBSUxBQkxFKG1hY29z
KDEwLjE2KSkKK0BpbnRlcmZhY2UgV0tXZWJWaWV3IChXS05TVGV4dEZpbmRlckNsaWVudCkgPE5T
VGV4dEZpbmRlckNsaWVudD4KK0BlbmQKKwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3
IChXS0RlcHJlY2F0ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQppbmRleCAwY2MxYzg2MDNiZTljMjIxZDBhMDM5ZTMzMzYxMTcwZmU4OTU3OGZk
Li5hY2NiNDA1MjRlOTIxMzYyMGYzMTc3ODEzYTQ4ODQ4YjRmNTA1NDNlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU5LDYgKzU5LDgg
QEAKICNpbXBvcnQgIldLQmFja0ZvcndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJX
S0Jyb3dzaW5nQ29udGV4dEhhbmRsZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJu
YWwuaCIKKyNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldLRmluZFJl
c3VsdEludGVybmFsLmgiCiAjaW1wb3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNp
bXBvcnQgIldLTGF5b3V0TW9kZS5oIgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTQ3NDYsNiAr
NDc0OCwzNCBAQCAtICh2b2lkKWNyZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKShOU0RhdGEgKiwgTlNFcnJvciAqKQogICAgIH0pOwogfQogCitpbmxpbmUg
V2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNv
bmZpZ3VyYXRpb24pCit7CisgICAgdW5zaWduZWQgZmluZE9wdGlvbnMgPSAwOworCisgICAgaWYg
KCFjb25maWd1cmF0aW9uLmNhc2VTZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdl
YktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKCFjb25maWd1cmF0aW9u
LmJhY2t3YXJkcykKKyAgICAgICAgZmluZE9wdGlvbnMgfD0gV2ViS2l0OjpGaW5kT3B0aW9uc0Jh
Y2t3YXJkczsKKyAgICBpZiAoIWNvbmZpZ3VyYXRpb24ud3JhcHMpCisgICAgICAgIGZpbmRPcHRp
b25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNXcmFwQXJvdW5kOworCisgICAgcmV0dXJuIHN0YXRp
Y19jYXN0PFdlYktpdDo6RmluZE9wdGlvbnM+KGZpbmRPcHRpb25zKTsKK30KKworLSAodm9pZClm
aW5kU3RyaW5nOihOU1N0cmluZyAqKXN0cmluZyB3aXRoQ29uZmlndXJhdGlvbjooV0tGaW5kQ29u
ZmlndXJhdGlvbiAqKWNvbmZpZ3VyYXRpb24gY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKFdL
RmluZFJlc3VsdCAqcmVzdWx0KSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIGlmICghc3RyaW5n
Lmxlbmd0aCkgeworICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihbW1tXS0ZpbmRSZXN1bHQgYWxs
b2NdIGluaXRdIGF1dG9yZWxlYXNlXSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBf
cGFnZS0+ZmluZFN0cmluZyhzdHJpbmcsIHRvRmluZE9wdGlvbnMoY29uZmlndXJhdGlvbiksIDEs
IFtoYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25IYW5kbGVyKV0oYm9vbCBmb3VuZCwg
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yIGVycm9yKSB7CisgICAgICAgIFdLRmluZFJlc3Vs
dCAqcmVzdWx0ID0gW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOihl
cnJvciA9PSBXZWJLaXQ6OkNhbGxiYWNrQmFzZTo6RXJyb3I6Ok5vbmUgJiYgZm91bmQpXSBhdXRv
cmVsZWFzZV07CisKKyAgICAgICAgaGFuZGxlcihyZXN1bHQpOworICAgIH0pOworfQorCiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFdLUHJpdmF0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KaW5kZXggNzI5NDRkNTg5ZTE1ZmNiZmY1NjliYTA5MmFmMmJkOWNiN2VjMTc3OC4uMmYw
ZDViZDRiNzk0ZDFkNWNlMjEyNWY5ZDQ0YzNjYjY5ZmZjY2JiYSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRpb24ubW0KKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0NvbmZpZ3VyYXRp
b24ubW0KQEAgLTM3LDYgKzM3LDcgQEAKICNpbXBvcnQgIldLV2ViVmlldy5oIgogI2ltcG9ydCAi
V0tXZWJWaWV3Q29udGVudFByb3ZpZGVyUmVnaXN0cnkuaCIKICNpbXBvcnQgIldlYktpdDJJbml0
aWFsaXplLmgiCisjaW1wb3J0ICJXZWJQcmVmZXJlbmNlc0RlZmF1bHRWYWx1ZXMuaCIKICNpbXBv
cnQgIldlYlVSTFNjaGVtZUhhbmRsZXJDb2NvYS5oIgogI2ltcG9ydCAiX1dLQXBwbGljYXRpb25N
YW5pZmVzdEludGVybmFsLmgiCiAjaW1wb3J0ICJfV0tWaXNpdGVkTGlua1N0b3JlLmgiCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aAppbmRleCBmMTk2MDZhZDZlZjEyNDZmMmVkNDQwM2Y3ZTFhZGU4NzliOTYzYTg0Li4xYWE2MWNj
ZDI3OTg4Y2NmMjhkYTkyNjY5ZjBiOWQ2N2FiMWI2YWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTQ1MCwxMSAr
NDUwLDYgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5TVUludGVnZXIsIF9XS1JlY3RFZGdlKSB7CiBA
aW50ZXJmYWNlIFdLV2ViVmlldyAoKSA8VUlSZXNwb25kZXJTdGFuZGFyZEVkaXRBY3Rpb25zPgog
QGVuZAogCi0jZWxzZQotCi1AaW50ZXJmYWNlIFdLV2ViVmlldyAoV0tOU1RleHRGaW5kZXJDbGll
bnQpIDxOU1RleHRGaW5kZXJDbGllbnQ+Ci1AZW5kCi0KICNlbmRpZgogCiBAaW50ZXJmYWNlIFdL
V2ViVmlldyAoV0tUZXN0aW5nKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
Q29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5oCmluZGV4IGI2Njk0ZmU5MDZlYTBiNGY4MmE1NDA2NjJjYzg1NTBiMmZl
MWE1ZDIuLjQ1NGM2MWZmZGVmZWNjNDc2ZDE1NjBjN2M0M2Y1YjVkMzQ1ZjI4MWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNP
QXV0aG9yaXphdGlvblNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2Nv
YS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKQEAgLTI4LDYg
KzI4LDcgQEAKICNpZiBIQVZFKEFQUF9TU08pCiAKICNpbmNsdWRlICJTT0F1dGhvcml6YXRpb25T
ZXNzaW9uLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIE9CSkNfQ0xB
U1MgV0tTT1NlY3JldERlbGVnYXRlOwogT0JKQ19DTEFTUyBXS1dlYlZpZXc7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQppbmRleCAwNzZjZmFh
Njc2YTc0YzRmMzM2MDFmZjY2NDRkZWM1ZTViNTYxY2ExLi4wZjE4MDM4ZGU5ODllNjlhODQzMmM4
NWI3MWI2YzA0ZTkzMTMwMmIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0
aG9yaXphdGlvblNlc3Npb24ubW0KQEAgLTMzLDYgKzMzLDcgQEAKICNpbXBvcnQgIldLVUlEZWxl
Z2F0ZS5oIgogI2ltcG9ydCAiV0tXZWJWaWV3Q29uZmlndXJhdGlvblByaXZhdGUuaCIKICNpbXBv
cnQgIldLV2ViVmlld0ludGVybmFsLmgiCisjaW1wb3J0ICJXZWJQYWdlUHJveHkuaCIKICNpbXBv
cnQgPFdlYkNvcmUvUmVzb3VyY2VSZXNwb25zZS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDhlYzhmYWU3
NGUzZjc5MmMwY2Y2NzA4OGRiZTYyMGMzMTVjZDgwYWYuLmZkOWQzNTQ3ZWZjZjE5N2E0NWJlNzI4
OTUzNzEwYjQ4MWY4ZDU5YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmNwcApAQCAtMzY5OSw5ICszNjk5LDIyIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywKICAgICBt
X3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkZpbmRTdHJpbmdNYXRjaGVzKHN0cmlu
Zywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fd2ViUGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQ
YWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0
cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCwgRnVuY3Rpb248dm9pZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+
JiYgY2FsbGJhY2tGdW5jdGlvbikKIHsKLSAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6Oldl
YlBhZ2U6OkZpbmRTdHJpbmcoc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50KSwgbV93ZWJQ
YWdlSUQpOworICAgIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQ7CisgICAgaWYgKGNh
bGxiYWNrRnVuY3Rpb24pCisgICAgICAgIGNhbGxiYWNrSUQgPSBtX2NhbGxiYWNrcy5wdXQoV1RG
TW92ZShjYWxsYmFja0Z1bmN0aW9uKSwgbV9wcm9jZXNzLT50aHJvdHRsZXIoKS5iYWNrZ3JvdW5k
QWN0aXZpdHkoIldlYlBhZ2VQcm94eTo6ZmluZFN0cmluZyJfcykpOworCisgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4
TWF0Y2hDb3VudCwgY2FsbGJhY2tJRCksIG1fd2ViUGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdl
UHJveHk6OmZpbmRTdHJpbmdDYWxsYmFjayhib29sIGZvdW5kLCBDYWxsYmFja0lEIGNhbGxiYWNr
SUQpCit7CisgICAgYXV0byBjYWxsYmFjayA9IG1fY2FsbGJhY2tzLnRha2U8Qm9vbENhbGxiYWNr
PihjYWxsYmFja0lEKTsKKyAgICBpZiAoIWNhbGxiYWNrKQorICAgICAgICByZXR1cm47CisKKyAg
ICBjYWxsYmFjay0+cGVyZm9ybUNhbGxiYWNrV2l0aFJldHVyblZhbHVlKGZvdW5kKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRl
eCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjg0ZmI5ZTBlZjM5
NWU2ZjZkOTJjYjcwNDBiNWYwNWQ4YWRiYmQ0NS4uYzZjMzZmMzU0OGYzODU3MThmYzg0YWJjMjQx
ZmVlMDk3ZTIzYmJiOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAg
LTMzNyw2ICszMzcsNyBAQCB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBTdHJpbmcmPiBT
dHJpbmdDYWxsYmFjazsKIHR5cGVkZWYgR2VuZXJpY0NhbGxiYWNrPEFQSTo6U2VyaWFsaXplZFNj
cmlwdFZhbHVlKiwgYm9vbCwgY29uc3QgV2ViQ29yZTo6RXhjZXB0aW9uRGV0YWlscyY+IFNjcmlw
dFZhbHVlQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxjb25zdCBXZWJDb3JlOjpG
b250QXR0cmlidXRlcyY+IEZvbnRBdHRyaWJ1dGVzQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWND
YWxsYmFjazxjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmPiBTZWxl
Y3Rpb25Db250ZXh0Q2FsbGJhY2s7Cit0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxib29sPiBCb29s
Q2FsbGJhY2s7CiAKICNpZiBIQVZFKFZJU0lCSUxJVFlfUFJPUEFHQVRJT05fVklFVykKIHVzaW5n
IExheWVySG9zdGluZ0NvbnRleHRJRCA9IHVpbnQzMl90OwpAQCAtMTAxOSw3ICsxMDIwLDcgQEAg
cHVibGljOgogICAgIHZvaWQgcGx1Z2luWm9vbUZhY3RvckRpZENoYW5nZShkb3VibGUpOwogCiAg
ICAgLy8gRmluZC4KLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlv
bnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBT
dHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgRnVuY3Rpb248dm9p
ZCAoYm9vbCwgQ2FsbGJhY2tCYXNlOjpFcnJvcik+JiYgPSBudWxscHRyKTsKICAgICB2b2lkIGZp
bmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKGludDMyX3QgbWF0Y2hJ
bmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2goaW50MzJfdCBtYXRjaEluZGV4KTsKQEAg
LTEwMzIsNiArMTAzMyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFRleHRJbmRpY2F0b3IoY29u
c3QgV2ViQ29yZTo6VGV4dEluZGljYXRvckRhdGEmLCB1aW50NjRfdCAvKiBXZWJDb3JlOjpUZXh0
SW5kaWNhdG9yV2luZG93TGlmZXRpbWUgKi8gbGlmZXRpbWUgPSAwIC8qIFBlcm1hbmVudCAqLyk7
CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yQW5pbWF0aW9uUHJvZ3Jlc3MoZmxvYXQpOwogICAg
IHZvaWQgY2xlYXJUZXh0SW5kaWNhdG9yKCk7CisKKyAgICB2b2lkIGZpbmRTdHJpbmdDYWxsYmFj
ayhib29sIGZvdW5kLCBDYWxsYmFja0lEKTsKICAgICB2b2lkIGRpZEZpbmRTdHJpbmcoY29uc3Qg
U3RyaW5nJiwgY29uc3QgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+JiwgdWludDMyX3QgbWF0Y2hD
b3VudCwgaW50MzJfdCBtYXRjaEluZGV4LCBib29sIGRpZFdyYXBBcm91bmQpOwogICAgIHZvaWQg
ZGlkRmFpbFRvRmluZFN0cmluZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIGRpZEZpbmRTdHJp
bmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxWZWN0b3I8V2ViQ29yZTo6SW50
UmVjdD4+JiBtYXRjaFJlY3RzLCBpbnQzMl90IGZpcnN0SW5kZXhBZnRlclNlbGVjdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMu
aW4gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KaW5k
ZXggMjI2OWFhNjllYTFmZDk4OTVjZDQwYjg4MzNkNTZmZDVkYWZjOTVmOS4uNWQ4MzkyYjkyZjZk
MTVmM2UyMTViN2NiODNhMzI2YWI3YWRkNGI1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjA5LDYgKzIwOSw3IEBAIG1lc3Nh
Z2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAgICAgTWFjaFNlbmRSaWdodENhbGxiYWNrKE1hY2hTZW5k
UmlnaHQgc2VuZFJpZ2h0LCBXZWJLaXQ6OkNhbGxiYWNrSUQgY2FsbGJhY2tJRCkKICAgICBOb3dQ
bGF5aW5nSW5mb0NhbGxiYWNrKGJvb2wgYWN0aXZlLCBib29sIHJlZ2lzdGVyZWRBc05vd1BsYXlp
bmdBcHBsaWNhdGlvbiwgU3RyaW5nIHRpdGxlLCBkb3VibGUgZHVyYXRpb24sIGRvdWJsZSBlbGFw
c2VkVGltZSwgdWludDY0X3QgdW5pcXVlSWRlbnRpZmllciwgV2ViS2l0OjpDYWxsYmFja0lEIGNh
bGxiYWNrSUQpCiAjZW5kaWYKKyAgICBGaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgV2Vi
S2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAKICAgICBQYWdlU2NhbGVGYWN0b3JEaWRDaGFu
Z2UoZG91YmxlIHNjYWxlRmFjdG9yKQogICAgIFBsdWdpblNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRv
dWJsZSB6b29tRmFjdG9yKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKaW5kZXggNzcyYTEwMDlkODEwYjhiZDNhY2EwNTFlMmJiMjRjMzMxMTNhZWVi
OS4uOGUyNzlkMGI3M2MzMGRkYmQzZjFlZjIyOWExZmNiNGY0MGFhMGEyYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC05NjQsNiArOTY0
LDkgQEAKIAkJNTEzRkZCOEQyMDE0NTlCMDAwMjU5NkVBIC8qIFVJTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxM0ZGQjhCMjAxNDU5QTcwMDI1OTZFQSAvKiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmggKi87IH07CiAJCTUxM0ZGQjkxMjAxNDU5QzYwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEzRkZCOEYyMDE0NTlDMjAwMjU5NkVBIC8qIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmggKi87IH07CiAJCTUxNDEyOTk0MUM2NDI4QkIwMDU5RTcxNCAvKiBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2
ZXIuaCAqLzsgfTsKKwkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODlDQzEy
MzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFB1YmxpYywgKTsgfTsgfTsKKwkJNTE0ODlDQzcyMzcyMzc4MDAwNDRFNjhBIC8qIFdL
RmluZFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1MTQ4OUNDNjIzNzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJu
YWwuaCAqLzsgfTsKKwkJNTE0QUI5RjAyMzYwRDJBOTAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3Vy
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
NEFCOUVGMjM1RkE1OUIwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9OwogCQk1MTRCREVEMzE2Qzk4RURE
MDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNEJERUQyMTZDOThFREQwMEU0RTI1RSAvKiBTdGF0aXN0
aWNzUmVxdWVzdC5oICovOyB9OwogCQk1MTREOUY1NzE5MTE5RDM1MDAwMDYzQTcgLyogU2Vydmlj
ZXNDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTREOUY1NTE5MTE5RDM1MDAwMDYzQTcgLyogU2VydmljZXNDb250cm9sbGVyLmggKi87
IH07CiAJCTUxNTI2MkJDMUZCOTUxNUQwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE1MjYyQkIxRkI5NTEzMTAwNzBFNTc5IC8qIFdlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbk1lc3NhZ2VzLmggKi87IH07CkBAIC0zMzQyLDYgKzMzNDUsMTEgQEAKIAkJNTE0
MTI5OTIxQzY0MjgxMDAwNTlFNzE0IC8qIFdlYklEQkNvbm5lY3Rpb25Ub1NlcnZlci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNUUxRERDREZEMTAwMTRGQUM2IC8q
IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gX1dLSWNvbkxvYWRpbmdEZWxlZ2F0ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MTQzQjI2MTFEREQwREEwMDAxNEZBQzYgLyogQVBJSWNvbkxvYWRpbmdDbGllbnQuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVBJSWNvbkxvYWRpbmdDbGllbnQuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0ODlDQzEyMzcwREFDQzAwNDRFNjhBIC8qIFdL
RmluZFJlc3VsdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1
bHQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0ODlDQzIyMzcwREFDQzAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdLRmluZFJlc3VsdC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0
ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZFJlc3VsdEludGVybmFsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNEFCOUVGMjM1RkE1OUIwMEVEQzM5NiAvKiBXS0ZpbmRD
b25maWd1cmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdLRmluZENv
bmZpZ3VyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTE0QUI5RjEyMzYw
RTgzRDAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZpbmRDb25maWd1cmF0aW9uLm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGlj
c1JlcXVlc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RhdGlzdGljc1Jl
cXVlc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0RDlGNTUxOTExOUQzNTAw
MDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTE0RDlGNTYxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcnZpY2VzQ29udHJvbGxlci5t
bTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY0NDAsNiArNjQ0OCwxMSBAQAogCQkJ
CTFBRjQ1OTJDMTk0NjRCMjAwMEY5RDRBMiAvKiBXS0Vycm9yLm1tICovLAogCQkJCTFBMkQyNTJB
MTk0Njg4RkQwMDQ1MzdCMCAvKiBXS0Vycm9ySW50ZXJuYWwuaCAqLywKIAkJCQkzN0I1MDQ1MTE5
RUVGMzEzMDBDRTJDRjggLyogV0tFcnJvclByaXZhdGUuaCAqLywKKwkJCQk1MTRBQjlFRjIzNUZB
NTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovLAorCQkJCTUxNEFCOUYxMjM2
MEU4M0QwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLm1tICovLAorCQkJCTUxNDg5Q0Mx
MjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLywKKwkJCQk1MTQ4OUNDMjIzNzBE
QUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0Lm1tICovLAorCQkJCTUxNDg5Q0M2MjM3MjM3Nzgw
MDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovLAogCQkJCTFBNEQ2NjRBMThBMzAz
MEUwMEQ4MkUyMSAvKiBXS0ZyYW1lSW5mby5oICovLAogCQkJCTFBNEQ2NjQ5MThBMzAzMEUwMEQ4
MkUyMSAvKiBXS0ZyYW1lSW5mby5tbSAqLywKIAkJCQkyREY5RUVFNzFBNzgyNDU1MDBCNkNGQkUg
LyogV0tGcmFtZUluZm9JbnRlcm5hbC5oICovLApAQCAtMTAyMzIsNyArMTAyNDUsMTAgQEAKIAkJ
CQlCQzQwNzVGQzEyNEZGMDI3MDA2OEYyMEEgLyogV0tFcnJvclJlZi5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM0MDc4M0QxMjUwRkFERDAwNjhGMjBBIC8qIFdLRXZlbnQuaCBpbiBIZWFkZXJzICov
LAogCQkJCUE1OEI2RjA4MThGQ0E3MzMwMDhDQkE1MyAvKiBXS0ZpbGVVcGxvYWRQYW5lbC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJNTE0QUI5RjAyMzYwRDJBOTAwRURDMzk2IC8qIFdLRmluZENvbmZp
Z3VyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTM3RjYyM0I4MTJBNTdCNjIwMEUzRkRGNiAv
KiBXS0ZpbmRPcHRpb25zLmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTQ4OUNDMzIzNzBEQkZBMDA0
NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggaW4gSGVhZGVycyAqLywKKwkJCQk1MTQ4OUNDNzIzNzIz
NzgwMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBpbiBIZWFkZXJzICovLAogCQkJ
CTJFMTZCNkNGMjAxN0I3QUQwMDg5OTZENiAvKiBXS0ZvY3VzZWRGb3JtQ29udHJvbFZpZXcuaCBp
biBIZWFkZXJzICovLAogCQkJCUU1Q0IwN0RDMjBFMTY3OEYwMDIyQzE4MyAvKiBXS0Zvcm1Db2xv
ckNvbnRyb2wuaCBpbiBIZWFkZXJzICovLAogCQkJCUU1NDhFQkQxMjEwMTVGMEUwMEJFM0MzMiAv
KiBXS0Zvcm1Db2xvclBpY2tlci5oIGluIEhlYWRlcnMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggMDc2MmQwMGFh
YjQ3ZTJjNmYzOWE4MDQ4NzA2ZDZkY2Q2ZjM2OTQxMC4uYzZjYzM4YTM0ZWFkNzdmMWZiNmVjMzhi
ZDE4MGQ3NGViZGI5MzdhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIHZvaWQgRmluZENv
bnRyb2xsZXI6OnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChib29sIGZvdW5kLCBjb25zdCBT
dHJpbmcmIHN0cmluCiAgICAgICAgIGhpZGVGaW5kSW5kaWNhdG9yKCk7CiB9CiAKLXZvaWQgRmlu
ZENvbnRyb2xsZXI6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25z
IG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCit2b2lkIEZpbmRDb250cm9sbGVyOjpm
aW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lEKQogewog
ICAgIGF1dG8qIHBsdWdpblZpZXcgPSBXZWJQYWdlOjpwbHVnaW5WaWV3Rm9yRnJhbWUobV93ZWJQ
YWdlLT5tYWluRnJhbWUoKSk7CiAKQEAgLTI3Nyw2ICsyNzcsOSBAQCB2b2lkIEZpbmRDb250cm9s
bGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25z
LCB1bnNpZwogICAgIG1fd2ViUGFnZS0+ZHJhd2luZ0FyZWEoKS0+ZGlzcGF0Y2hBZnRlckVuc3Vy
aW5nVXBkYXRlZFNjcm9sbFBvc2l0aW9uKFtwcm90ZWN0ZWRXZWJQYWdlLCBmb3VuZCwgc3RyaW5n
LCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwXSAoKSB7CiAgICAgICAgIHByb3RlY3Rl
ZFdlYlBhZ2UtPmZpbmRDb250cm9sbGVyKCkudXBkYXRlRmluZFVJQWZ0ZXJQYWdlU2Nyb2xsKGZv
dW5kLCBzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGRpZFdyYXAsIEZpbmRVSU9yaWdp
bmF0b3I6OkZpbmRTdHJpbmcpOwogICAgIH0pOworCisgICAgaWYgKGNhbGxiYWNrSUQpCisgICAg
ICAgIG1fd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpGaW5kU3RyaW5nQ2Fs
bGJhY2soZm91bmQsICpjYWxsYmFja0lEKSk7CiB9CiAKIHZvaWQgRmluZENvbnRyb2xsZXI6OmZp
bmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKaW5kZXggYjMyZDUzZjIyODZlM2E0Yjg1NmFiNGI0
YTg3MjZiYmI5YzA5MmZmMy4uNDQwNTlhMWVmYzE0NWY2MmE4ZDhlYjU1OWE3NDgwZGYxODM4NzQ4
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICBleHBsaWNpdCBGaW5kQ29udHJv
bGxlcihXZWJQYWdlKik7CiAgICAgdmlydHVhbCB+RmluZENvbnRyb2xsZXIoKTsKIAotICAgIHZv
aWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCk7CisgICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50LCBPcHRpb25hbDxDYWxsYmFja0lEPik7CiAgICAgdm9p
ZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQg
bWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBt
YXRjaEluZGV4KTsKICAgICB2b2lkIHNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXgg
ZmY4ZjIwNDEzM2MwODFhY2I0ZDZlZWUyMmI0Y2Y5MTVjZDNhZWQ3Ni4uY2E0NWY0ODQ5ZDgwYmU0
YzZmNmZmMjU2NjQ4NmY2ZTk0YTZlOWZjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTQwNDgsOSArNDA0OCw5IEBAIHZvaWQgV2ViUGFnZTo6
cmVwbGFjZVN0cmluZ01hdGNoZXNGcm9tSW5qZWN0ZWRCdW5kbGUoY29uc3QgVmVjdG9yPHVpbnQz
Ml90PiYgbWF0CiAgICAgZmluZENvbnRyb2xsZXIoKS5yZXBsYWNlTWF0Y2hlcyhtYXRjaEluZGlj
ZXMsIHJlcGxhY2VtZW50VGV4dCwgc2VsZWN0aW9uT25seSk7CiB9CiAKLXZvaWQgV2ViUGFnZTo6
ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMy
X3QgbWF4TWF0Y2hDb3VudCkKK3ZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZywgdWludDMyX3Qgb3B0aW9ucywgdWludDMyX3QgbWF4TWF0Y2hDb3VudCwgT3B0aW9u
YWw8Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKIHsKLSAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRT
dHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNo
Q291bnQpOworICAgIGZpbmRDb250cm9sbGVyKCkuZmluZFN0cmluZyhzdHJpbmcsIHN0YXRpY19j
YXN0PEZpbmRPcHRpb25zPihvcHRpb25zKSwgbWF4TWF0Y2hDb3VudCwgY2FsbGJhY2tJRCk7CiB9
CiAKIHZvaWQgV2ViUGFnZTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNDRjN2Y0ODc1ZWNkYTM5ZGQwMDRm
YjYyZjIxMTVlOWVjZjZiNDJiMi4uNjIzMDhkYzY2MDI5MzVjYWY2NzRjNmFjYzFhNzZjMjZkZjkw
NTA1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAt
MTQ3Miw3ICsxNDcyLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlYXBwbHlFZGl0Q29tbWFuZChX
ZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAgICAgdm9pZCBkaWRSZW1vdmVFZGl0Q29tbWFuZChX
ZWJVbmRvU3RlcElEIGNvbW1hbmRJRCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpOworICAg
IHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdWlu
dDMyX3QgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwogICAgIHZvaWQgZmlu
ZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQz
Ml90IG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMy
X3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJ
bmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAzNmUzZDI4OTE5M2QwM2YxYWE5NWQyYjA2YTcxYTEyNmExMzNm
MDM1Li5kYTFjNzU1ZjViMzI4NzViM2FjMTRmODczYzJmMjU2N2M4ZDhmNzFmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTI4NCw3ICsyODQsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogICAgIFBvc3RJbmpl
Y3RlZEJ1bmRsZU1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2VOYW1lLCBXZWJLaXQ6OlVzZXJEYXRhIG1l
c3NhZ2VCb2R5KQogCiAgICAgIyBGaW5kLgotICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywg
dWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpCisgICAgRmluZFN0
cmluZyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCwgT3B0aW9uYWw8V2ViS2l0OjpDYWxsYmFja0lEPiBjYWxsYmFja0lEKQogICAgIEZp
bmRTdHJpbmdNYXRjaGVzKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KQogICAgIEdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1h
dGNoSW5kZXgpCiAgICAgU2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383134</attachid>
            <date>2019-11-08 09:33:40 -0800</date>
            <delta_ts>2019-11-08 15:40:25 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203872-20191108093339.patch</filename>
            <type>text/plain</type>
            <size>51147</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMTUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDlkZmRmNGU3MjYyN2ZhYmQw
NzdmOTI1YTQ4NDNiY2UzOTBmYmMyYTYuLjlhM2U5NGJkMjU5ZjQ1OTg2NWEyODY3NzY2N2Q0ZTQx
NzI2NTJhODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMTEtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBGaW5kLWluLXBh
Z2UgQVBJLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY5NzExMTI+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ292ZXJlZCBieSBBUEkgdGVzdHMuCisKKyAg
ICAgICAgLSBQcm9tb3RlIF9maW5kU3RyaW5nOgorICAgICAgICAtIEFkZCBhIGNvbXBsZXRpb24g
aGFuZGxlciBmb3IgaXQuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAK
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24uaDogQWRk
ZWQuCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1t
OiBBZGRlZC4KKyAgICAgICAgKC1bV0tGaW5kQ29uZmlndXJhdGlvbiBpbml0XSk6CisgICAgICAg
ICgtW1dLRmluZENvbmZpZ3VyYXRpb24gY29weVdpdGhab25lOl0pOgorCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQuaDogQWRkZWQuCisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW06IEFkZGVkLgorICAgICAgICAoLVtXS0ZpbmRS
ZXN1bHQgaW5pdF0pOgorICAgICAgICAoLVtXS0ZpbmRSZXN1bHQgX2luaXRXaXRoTWF0Y2hGb3Vu
ZDpdKToKKyAgICAgICAgKC1bV0tGaW5kUmVzdWx0IGNvcHlXaXRoWm9uZTpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVybmFsLmg6IEFkZGVkLgorCisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHRvRmluZE9wdGlvbnMpOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgZmluZFN0cmluZzp3aXRoQ29uZmlndXJhdGlvbjpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaDoKKworICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmln
dXJhdGlvbi5tbToKKworICAgICAgICAqIFVJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24v
UG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0NvY29h
L1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW06CisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFn
ZVByb3h5OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpmaW5k
U3RyaW5nQ2FsbGJhY2spOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorCisgICAgICAgICog
V2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpGaW5kQ29udHJv
bGxlcjo6ZmluZFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250
cm9sbGVyLmg6CisKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmZpbmRTdHJpbmcpOgorICAgICAgICAqIFdlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UubWVzc2FnZXMuaW46CisKIDIwMTktMTEtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxl
LmNvbT4KIAogICAgICAgICBNYWtlIHN1cmUgd2UgbmV2ZXIgZW5kIHVwIHdpdGggTmV0d29ya0Rh
dGFUYXNrQ29jb2EgVGFza0lkZW50aWZpZXIgY29uZmxpY3RzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQK
aW5kZXggYTIyYWFiYTAzMTAxZWY3YzMwYThhMDQ0YThkY2EyOGY4MTAxZWVjMS4uNjQxMmNlZjc0
MzZhNzRlNjc2M2VlMDJkNTMwMGJlNTljYTAwMzczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApA
QCAtMjkwLDYgKzI5MCw4IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3Qu
bW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KIFVJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tFcnJvci5tbQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9u
Lm1tCitVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQogVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0ZyYW1lSW5mby5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9y
ZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS01lbnVJdGVtSWRlbnRpZmllcnMubW0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJh
dGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjBiMjAyMzlhYTkyYTdlNDIwZjllNDljY2Q1ZmMwMDU4M2I4YmI4
NmIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGaW5kQ29uZmlndXJhdGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisqIENvcHlyaWdodCAo
QykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyogYXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHly
aWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlv
bi5oPgorCitOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tGaW5kQ29uZmln
dXJhdGlvbiA6IE5TT2JqZWN0IDxOU0NvcHlpbmc+CisKKy8qIEBhYnN0cmFjdCBUaGUgZGlyZWN0
aW9uIHRvIHNlYXJjaCBmcm9tIHRoZSBjdXJyZW50IHNlbGVjdGlvbgorIEBkaXNjdXNzaW9uIFRo
ZSBzZWFyY2ggd2lsbCByZXNwZWN0IHRoZSB3cml0aW5nIGRpcmVjdGlvbiBvZiB0aGUgZG9jdW1l
bnQuCisgVGhlIGluaXRpYWwgdmFsdWUgaXMgTk8uCisqLworQHByb3BlcnR5IChub25hdG9taWMp
IEJPT0wgYmFja3dhcmRzOworCisvKiBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgdGhlIHNlYXJj
aCBzaG91bGQgYmUgY2FzZSBzZW5zaXRpdmUKKyBAZGlzY3Vzc2lvbiBUaGUgaW5pdGlhbCB2YWx1
ZSBpcyBOTy4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYXNlU2Vuc2l0aXZlOwor
CisvKiBAYWJzdHJhY3QgV2hldGhlciB0aGUgc2VhcmNoIHNob3VsZCBzdGFydCBhdCB0aGUgYmVn
aW5uaW5nIG9mIHRoZSBkb2N1bWVudCBvbmNlIGl0IHJlYWNoZXMgdGhlIGVuZAorIEBkaXNjdXNz
aW9uIFRoZSBpbml0aWFsIHZhbHVlIGlzIFlFUy4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYykg
Qk9PTCB3cmFwczsKKworQGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1t
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24u
bW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMDE2YmQ3MjljNWQ3MDkyNGZhNzM2NDkzODBmZTdhYWI4NDE4ZDRjZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0Zp
bmRDb25maWd1cmF0aW9uLm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0
ICJjb25maWcuaCIKKyNpbXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKworQGltcGxlbWVu
dGF0aW9uIFdLRmluZENvbmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAg
ICBpZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAg
IF9iYWNrd2FyZHMgPSBOTzsKKyAgICBfY2FzZVNlbnNpdGl2ZSA9IE5POworICAgIF93cmFwcyA9
IFlFUzsKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUg
Kil6b25lCit7CisgICAgV0tGaW5kQ29uZmlndXJhdGlvbiAqZmluZENvbmZpZ3VyYXRpb24gPSBb
KFdLRmluZENvbmZpZ3VyYXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0g
aW5pdF07CisKKyAgICBmaW5kQ29uZmlndXJhdGlvbi5iYWNrd2FyZHMgPSBfYmFja3dhcmRzOwor
ICAgIGZpbmRDb25maWd1cmF0aW9uLmNhc2VTZW5zaXRpdmUgPSBfY2FzZVNlbnNpdGl2ZTsKKyAg
ICBmaW5kQ29uZmlndXJhdGlvbi53cmFwcyA9IF93cmFwczsKKworICAgIHJldHVybiBmaW5kQ29u
ZmlndXJhdGlvbjsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRmluZFJlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlmYzAyYzNkYmFjYjU5NTVmOTFlZTJi
MGE3Y2E4Mjk1NDc2NTVmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0LmgKQEAgLTAsMCArMSwzOCBAQAorLyoKKyogQ29w
eXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0IDxXZWJLaXQvV0tG
b3VuZGF0aW9uLmg+CisKK05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBXS0Zp
bmRSZXN1bHQgOiBOU09iamVjdCA8TlNDb3B5aW5nPgorCisvKiBAYWJzdHJhY3QgV2hldGhlciBv
ciBub3QgYSBtYXRjaCB3YXMgZm91bmQgZHVyaW5nIHRoZSBmaW5kIG9wZXJhdGlvbiAqLworQHBy
b3BlcnR5IChub25hdG9taWMsIHJlYWRvbmx5KSBCT09MIG1hdGNoRm91bmQ7CisKK0BlbmQKKwor
TlNfQVNTVU1FX05PTk5VTExfRU5ECmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLRmluZFJlc3VsdC5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYjFhYTgxYmQzNTU2YWJlMmUwNTEy
YTEyZDkyM2ExZDE3NjI0NmIzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQpAQCAtMCwwICsxLDU1IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2ltcG9ydCAiY29uZmlnLmgiCisjaW1wb3J0ICJXS0ZpbmRSZXN1bHRJbnRlcm5hbC5o
IgorCitAaW1wbGVtZW50YXRpb24gV0tGaW5kUmVzdWx0CisKKy0gKGluc3RhbmNldHlwZSlpbml0
Cit7CisgICAgcmV0dXJuIFtzZWxmIF9pbml0V2l0aE1hdGNoRm91bmQ6Tk9dOworfQorCistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoTWF0Y2hGb3VuZDooQk9PTCltYXRjaEZvdW5kCit7CisgICAg
aWYgKCEoc2VsZiA9IFtzdXBlciBpbml0XSkpCisgICAgICAgIHJldHVybiBuaWw7CisKKyAgICBf
bWF0Y2hGb3VuZCA9IG1hdGNoRm91bmQ7CisKKyAgICByZXR1cm4gc2VsZjsKK30KKworLSAoaWQp
Y29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAgV0tGaW5kUmVzdWx0ICpmaW5kUmVz
dWx0ID0gWyhXS0ZpbmRSZXN1bHQgKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0g
aW5pdF07CisKKyAgICBmaW5kUmVzdWx0LT5fbWF0Y2hGb3VuZCA9IF9tYXRjaEZvdW5kOworCisg
ICAgcmV0dXJuIGZpbmRSZXN1bHQ7Cit9CisKK0BlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVybmFsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uM2YzZDA4MDQyYjM4OGM0NWVmNjg0ZGIxODhlMWRiYjJkZDAzMWI1ZAotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHRJbnRl
cm5hbC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworI2ltcG9ydCAiV0tGaW5kUmVzdWx0LmgiCisKK0BpbnRlcmZhY2UgV0tG
aW5kUmVzdWx0ICgpIHsKK30KKworLSAoaW5zdGFuY2V0eXBlKV9pbml0V2l0aE1hdGNoRm91bmQ6
KEJPT0wpbWF0Y2hGb3VuZDsKKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5oCmluZGV4IGRkNmY4N2IxNjJjYzVjMDc3OWY5ZTEyNTQxNWNlNTQ5
ZjMzM2FiOTIuLjQ2ZDMyNGZmNDQ5NWI2ZDlmYTFjNmFiOTQwZjE1NWVhYzUyMjk4MzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKQEAgLTM1LDYg
KzM1LDggQEAgTlNfQVNTVU1FX05PTk5VTExfQkVHSU4KIAogQGNsYXNzIFdLQmFja0ZvcndhcmRM
aXN0OwogQGNsYXNzIFdLQmFja0ZvcndhcmRMaXN0SXRlbTsKK0BjbGFzcyBXS0ZpbmRDb25maWd1
cmF0aW9uOworQGNsYXNzIFdLRmluZFJlc3VsdDsKIEBjbGFzcyBXS05hdmlnYXRpb247CiBAY2xh
c3MgV0tQREZDb25maWd1cmF0aW9uOwogQGNsYXNzIFdLU25hcHNob3RDb25maWd1cmF0aW9uOwpA
QCAtMzAzLDYgKzMwNSwxNiBAQCBUaGUgdW5pZm9ybSB0eXBlIGlkZW50aWZpZXIga1VUVHlwZVdl
YkFyY2hpdmUgY2FuIGJlIHVzZWQgZ2V0IHRoZSByZWxhdGVkIHBhc3RlYgogKi8KIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBDR0Zsb2F0IHBhZ2Vab29tIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKKy8qIEBhYnN0cmFjdCBTZWFyY2hlcyB0aGUg
cGFnZSBjb250ZW50cyBmb3IgdGhlIGdpdmVuIHN0cmluZy4KKyBAcGFyYW0gc3RyaW5nIFRoZSBz
dHJpbmcgdG8gc2VhcmNoIGZvci4KKyBAcGFyYW0gY29uZmlndXJhdGlvbiBBIHNldCBvZiBvcHRp
b25zIGNvbmZpZ3VyaW5nIHRoZSBzZWFyY2guCisgQHBhcmFtIGNvbXBsZXRpb25IYW5kbGVyIEEg
YmxvY2sgdG8gaW52b2tlIHdoZW4gdGhlIHNlYXJjaCBjb21wbGV0ZXMuCisgQGRpc2N1c3Npb24g
SWYgdGhlIFdLRmluZENvbmZpZ3VyYXRpb24gaXMgbmlsLCBhbGwgb2YgdGhlIGRlZmF1bHQgV0tG
aW5kQ29uZmlndXJhdGlvbiB2YWx1ZXMgd2lsbCBiZSB1c2VkLgorICBBIG1hdGNoIGZvdW5kIGJ5
IHRoZSBzZWFyY2ggaXMgc2VsZWN0ZWQgYW5kIHRoZSBwYWdlIGlzIHNjcm9sbGVkIHRvIHJldmVh
bCB0aGUgc2VsZWN0aW9uLgorICBUaGUgY29tcGxldGlvbiBoYW5kbGVyIGlzIGNhbGxlZCBhZnRl
ciB0aGUgc2VhcmNoIGNvbXBsZXRlcy4KKyovCistICh2b2lkKWZpbmRTdHJpbmc6KE5TU3RyaW5n
ICopc3RyaW5nIHdpdGhDb25maWd1cmF0aW9uOihudWxsYWJsZSBXS0ZpbmRDb25maWd1cmF0aW9u
ICopY29uZmlndXJhdGlvbiBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikoV0tGaW5kUmVzdWx0
ICpyZXN1bHQpKWNvbXBsZXRpb25IYW5kbGVyIE5TX1JFRklORURfRk9SX1NXSUZUIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CisKIC8qIEBhYnN0
cmFjdCBDaGVja3Mgd2hldGhlciBvciBub3QgV0tXZWJWaWV3cyBoYW5kbGUgdGhlIGdpdmVuIFVS
TCBzY2hlbWUgYnkgZGVmYXVsdC4KICBAcGFyYW0gc2NoZW1lIFRoZSBVUkwgc2NoZW1lIHRvIGNo
ZWNrLgogICovCkBAIC0zNTEsNiArMzYzLDEwIEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmll
ciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAK
IEBlbmQKIAorV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSkKK0BpbnRlcmZhY2Ug
V0tXZWJWaWV3IChXS05TVGV4dEZpbmRlckNsaWVudCkgPE5TVGV4dEZpbmRlckNsaWVudD4KK0Bl
bmQKKwogI2VuZGlmCiAKIEBpbnRlcmZhY2UgV0tXZWJWaWV3IChXS0RlcHJlY2F0ZWQpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwY2Mx
Yzg2MDNiZTljMjIxZDBhMDM5ZTMzMzYxMTcwZmU4OTU3OGZkLi42ODQ5YTg0YzliZjUwNGNjZjVk
ZDdhYmViMzA4ZGYyYmM4NTM4ZjMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTU5LDYgKzU5LDggQEAKICNpbXBvcnQgIldLQmFja0Zv
cndhcmRMaXN0SXRlbUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Jyb3dzaW5nQ29udGV4dEhhbmRs
ZUludGVybmFsLmgiCiAjaW1wb3J0ICJXS0Vycm9ySW50ZXJuYWwuaCIKKyNpbXBvcnQgIldLRmlu
ZENvbmZpZ3VyYXRpb24uaCIKKyNpbXBvcnQgIldLRmluZFJlc3VsdEludGVybmFsLmgiCiAjaW1w
b3J0ICJXS0hpc3RvcnlEZWxlZ2F0ZVByaXZhdGUuaCIKICNpbXBvcnQgIldLTGF5b3V0TW9kZS5o
IgogI2ltcG9ydCAiV0tOU0RhdGEuaCIKQEAgLTQ3NDYsNiArNDc0OCwzMiBAQCAtICh2b2lkKWNy
ZWF0ZVdlYkFyY2hpdmVEYXRhV2l0aENvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU0RhdGEg
KiwgTlNFcnJvciAqKQogICAgIH0pOwogfQogCitpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0
b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAg
dW5zaWduZWQgZmluZE9wdGlvbnMgPSAwOworCisgICAgaWYgKCFjb25maWd1cmF0aW9uLmNhc2VT
ZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNl
SW5zZW5zaXRpdmU7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uYmFja3dhcmRzKQorICAgICAgICBm
aW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAgIGlmIChjb25m
aWd1cmF0aW9uLndyYXBzKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRp
b25zV3JhcEFyb3VuZDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRp
b25zPihmaW5kT3B0aW9ucyk7Cit9CisKKy0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilz
dHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0
aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKKyAgICAgICAgY29t
cGxldGlvbkhhbmRsZXIoW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBpbml0XSBhdXRvcmVsZWFzZV0p
OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5n
LCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0
cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpF
cnJvciBlcnJvcikgeworICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2lu
aXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpO
b25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKK30KKwogQGVuZAogCiBAaW1w
bGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmlu
ZGV4IDcyOTQ0ZDU4OWUxNWZjYmZmNTY5YmEwOTJhZjJiZDljYjdlYzE3NzguLjJmMGQ1YmQ0Yjc5
NGQxZDVjZTIxMjVmOWQ0NGMzY2I2OWZmY2NiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBA
IC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmll
d0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5o
IgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgiCiAjaW1wb3J0ICJXZWJV
UkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIl9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJ
bnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZS5oIgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXgg
ZjE5NjA2YWQ2ZWYxMjQ2ZjJlZDQ0MDNmN2UxYWRlODc5Yjk2M2E4NC4uMWFhNjFjY2QyNzk4OGNj
ZjI4ZGE5MjY2OWYwYjlkNjdhYjFiNmFkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00NTAsMTEgKzQ1MCw2IEBA
IHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGludGVyZmFj
ZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9ucz4KIEBlbmQKIAot
I2Vsc2UKLQotQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50KSA8TlNU
ZXh0RmluZGVyQ2xpZW50PgotQGVuZAotCiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1dlYlZpZXcg
KFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NP
QXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNl
c3Npb24uaAppbmRleCBiNjY5NGZlOTA2ZWEwYjRmODJhNTQwNjYyY2M4NTUwYjJmZTFhNWQyLi40
NTRjNjFmZmRlZmVjYzQ3NmQxNTYwYzdjNDNmNWI1ZDM0NWYyODFkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6
YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRo
b3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw3IEBA
CiAjaWYgSEFWRShBUFBfU1NPKQogCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uU2Vzc2lvbi5o
IgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBPQkpDX0NMQVNTIFdLU09T
ZWNyZXREZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggMDc2Y2ZhYTY3NmE3NGM0
ZjMzNjAxZmY2NjQ0ZGVjNWU1YjU2MWNhMS4uMGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMw
NGU5MzEzMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRp
b25TZXNzaW9uLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIK
ICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dl
YlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJD
b3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZWM4ZmFlNzRlM2Y3OTJj
MGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi5mZDlkMzU0N2VmY2YxOTdhNDViZTcyODk1MzcxMGI0
ODFmOGQ1OWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAg
LTM2OTksOSArMzY5OSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMo
Y29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAgbV9wcm9jZXNz
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlv
bnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5
OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1
bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxi
YWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fd2ViUGFnZUlEKTsK
KyAgICBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lEOworICAgIGlmIChjYWxsYmFja0Z1
bmN0aW9uKQorICAgICAgICBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2Fs
bGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5
KCJXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmciX3MpKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291
bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5Ojpm
aW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQorewor
ICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEJvb2xDYWxsYmFjaz4oY2FsbGJh
Y2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJh
Y2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShmb3VuZCk7CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4NGZiOWUwZWYzOTVlNmY2ZDky
Y2I3MDQwYjVmMDVkOGFkYmJkNDUuLmM2YzM2ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZlZTA5N2Uy
M2JiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMzcsNiAr
MzM3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2Fs
bGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRWYWx1ZUNh
bGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJp
YnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8
Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29u
dGV4dENhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Ym9vbD4gQm9vbENhbGxiYWNr
OwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhv
c3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKQEAgLTEwMTksNyArMTAyMCw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIHBsdWdpblpvb21GYWN0b3JEaWRDaGFuZ2UoZG91YmxlKTsKIAogICAgIC8vIEZp
bmQuCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNp
Z25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwg
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2ws
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmID0gbnVsbHB0cik7CiAgICAgdm9pZCBmaW5kU3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3Vu
dCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwog
ICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CkBAIC0xMDMyLDYg
KzEwMzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNv
cmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRv
cldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZv
aWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNs
ZWFyVGV4dEluZGljYXRvcigpOworCisgICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBm
b3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGlu
dDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxU
b0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hl
cyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYg
bWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIyNjlh
YTY5ZWExZmQ5ODk1Y2Q0MGI4ODMzZDU2ZmQ1ZGFmYzk1ZjkuLjVkODM5MmI5MmY2ZDE1ZjNlMjE1
YjdjYjgzYTMyNmFiN2FkZDRiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwOSw2ICsyMDksNyBAQCBtZXNzYWdlcyAtPiBX
ZWJQYWdlUHJveHkgewogICAgIE1hY2hTZW5kUmlnaHRDYWxsYmFjayhNYWNoU2VuZFJpZ2h0IHNl
bmRSaWdodCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0lu
Zm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGlj
YXRpb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUs
IHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lE
KQogI2VuZGlmCisgICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2Fs
bGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJs
ZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9v
bUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCmluZGV4IDc3MmExMDA5ZDgxMGI4YmQzYWNhMDUxZTJiYjI0YzMzMTEzYWVlYjkuLjhlMjc5
ZDBiNzNjMzBkZGJkM2YxZWYyMjlhMWZjYjRmNDBhYTBhMmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktp
dC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY0LDYgKzk2NCw5IEBACiAJ
CTUxM0ZGQjhEMjAxNDU5QjAwMDI1OTZFQSAvKiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGRkI4
QjIwMTQ1OUE3MDAyNTk2RUEgLyogVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyB9
OwogCQk1MTNGRkI5MTIwMTQ1OUM2MDAyNTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
M0ZGQjhGMjAxNDU5QzIwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
ICovOyB9OwogCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRv
U2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi87
IH07CisJCTUxNDg5Q0MzMjM3MERCRkEwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0MxMjM3MERBQ0Mw
MDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
dWJsaWMsICk7IH07IH07CisJCTUxNDg5Q0M3MjM3MjM3ODAwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1
bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi87
IH07CisJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRBQjlFRjIz
NUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTE0QkRFRDMxNkM5OEVERDAwRTRFMjVF
IC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVl
c3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJv
bGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0
RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovOyB9OwogCQk1
MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
TWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxNTI2MkJCMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rp
b25NZXNzYWdlcy5oICovOyB9OwpAQCAtMzM0Miw2ICszMzQ1LDExIEBACiAJCTUxNDEyOTkyMUM2
NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29u
TG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0lj
b25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0Iy
NjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0MxMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1
bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kUmVzdWx0Lmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0MyMjM3MERBQ0MwMDQ0RTY4QSAvKiBX
S0ZpbmRSZXN1bHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S0ZpbmRSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0M2MjM3
MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk1MTRBQjlFRjIzNUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJh
dGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRDb25maWd1cmF0
aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNEFCOUYxMjM2MEU4M0QwMEVE
QzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV0tGaW5kQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpc3RpY3NSZXF1ZXN0Lmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAv
KiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5
RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIubW07IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDQwLDYgKzY0NDgsMTEgQEAKIAkJCQkxQUY0NTky
QzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywKIAkJCQkxQTJEMjUyQTE5NDY4OEZE
MDA0NTM3QjAgLyogV0tFcnJvckludGVybmFsLmggKi8sCiAJCQkJMzdCNTA0NTExOUVFRjMxMzAw
Q0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8sCisJCQkJNTE0QUI5RUYyMzVGQTU5QjAwRURD
Mzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1MTRBQjlGMTIzNjBFODNEMDBF
REMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk1MTQ4OUNDMTIzNzBEQUND
MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi8sCisJCQkJNTE0ODlDQzIyMzcwREFDQzAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLywKKwkJCQk1MTQ4OUNDNjIzNzIzNzc4MDA0NEU2OEEg
LyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLywKIAkJCQkxQTRENjY0QTE4QTMwMzBFMDBEODJF
MjEgLyogV0tGcmFtZUluZm8uaCAqLywKIAkJCQkxQTRENjY0OTE4QTMwMzBFMDBEODJFMjEgLyog
V0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJh
bWVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTEwMjMyLDcgKzEwMjQ1LDEwIEBACiAJCQkJQkM0MDc1
RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJyb3JSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJD
NDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9u
LmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5k
T3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8q
IFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODlDQzcyMzcyMzc4MDAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTE2QjZD
RjIwMTdCN0FEMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9s
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTQ4RUJEMTIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3Jt
Q29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDA3NjJkMDBhYWI0N2UyYzZm
MzlhODA0ODcwNmQ2ZGNkNmYzNjk0MTAuLmM2Y2MzOGEzNGVhZDc3ZjFmYjZlYzM4YmQxODBkNzRl
YmRiOTM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9G
aW5kQ29udHJvbGxlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVy
Ojp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBz
dHJpbgogICAgICAgICBoaWRlRmluZEluZGljYXRvcigpOwogfQogCi12b2lkIEZpbmRDb250cm9s
bGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmlu
Zyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKIHsKICAgICBhdXRv
KiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFp
bkZyYW1lKCkpOwogCkBAIC0yNzcsNiArMjc3LDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Zmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWcK
ICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0
ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVkV2ViUGFnZSwgZm91bmQsIHN0cmluZywgb3B0aW9u
cywgbWF4TWF0Y2hDb3VudCwgZGlkV3JhcF0gKCkgewogICAgICAgICBwcm90ZWN0ZWRXZWJQYWdl
LT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChmb3VuZCwgc3Ry
aW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwLCBGaW5kVUlPcmlnaW5hdG9yOjpG
aW5kU3RyaW5nKTsKICAgICB9KTsKKworICAgIGlmIChjYWxsYmFja0lEKQorICAgICAgICBtX3dl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFN0cmluZ0NhbGxiYWNrKGZv
dW5kLCAqY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IGIzMmQ1M2YyMjg2ZTNhNGI4NTZhYjRiNGE4NzI2YmJi
OWMwOTJmZjMuLjQ0MDU5YTFlZmMxNDVmNjJhOGQ4ZWI1NTlhNzQ4MGRmMTgzODc0ODUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgK
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApA
QCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRmluZENvbnRyb2xsZXIoV2Vi
UGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRDb250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGZpbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQp
OworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwogICAgIHZvaWQgZmluZFN0
cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRl
eCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGZmOGYyMDQx
MzNjMDgxYWNiNGQ2ZWVlMjJiNGNmOTE1Y2QzYWVkNzYuLmNhNDVmNDg0OWQ4MGJlNGM2ZjZmZjI1
NjY0ODZmNmU5NGE2ZTlmY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCkBAIC00MDQ4LDkgKzQwNDgsOSBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VT
dHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1h
dAogICAgIGZpbmRDb250cm9sbGVyKCkucmVwbGFjZU1hdGNoZXMobWF0Y2hJbmRpY2VzLCByZXBs
YWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZpbmRTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1h
dGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcs
IHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxi
YWNrSUQ+IGNhbGxiYWNrSUQpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0
cmluZywgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsK
KyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5k
T3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lk
IFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJf
dCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDQ0YzdmNDg3NWVjZGEzOWRkMDA0ZmI2MmYyMTE1
ZTllY2Y2YjQyYjIuLjYyMzA4ZGM2NjAyOTM1Y2FmNjc0YzZhY2MxYTc2YzI2ZGY5MDUwNTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NzIsNyAr
MTQ3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwcGx5RWRpdENvbW1hbmQoV2ViVW5kb1N0
ZXBJRCBjb21tYW5kSUQpOwogICAgIHZvaWQgZGlkUmVtb3ZlRWRpdENvbW1hbmQoV2ViVW5kb1N0
ZXBJRCBjb21tYW5kSUQpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIHVp
bnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1h
eE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsKICAgICB2b2lkIGZpbmRTdHJpbmdN
YXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhN
YXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNo
SW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNz
YWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KaW5kZXggMzZlM2QyODkxOTNkMDNmMWFhOTVkMmIwNmE3MWExMjZhMTMzZjAzNS4uZGEx
Yzc1NWY1YjMyODc1YjNhYzE0Zjg3M2MyZjI1NjdjOGQ4ZjcxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yODQs
NyArMjg0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3Qg
V2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBQb3N0SW5qZWN0ZWRCdW5k
bGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9k
eSkKIAogICAgICMgRmluZC4KLSAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90
IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorICAgIEZpbmRTdHJpbmcoU3Ry
aW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQs
IE9wdGlvbmFsPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKICAgICBGaW5kU3RyaW5n
TWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4
TWF0Y2hDb3VudCkKICAgICBHZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4
KQogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpkaWZmIC0tZ2l0IGEv
VG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDMwOWFhMmI5ODI0MTg5NjEx
MzY5NWQxOGM5MDNkOWVlMzk3MWMyOWEuLjZiOTVkZTVhOWIxNjVmZDIwZTFkN2Q4OTE2OGIyNTY2
NjE0OTc5ZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMS0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBh
cHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IEZpbmQtaW4tcGFnZSBBUEkuCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS80Njk3MTExMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDM4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2Ev
RmluZEluUGFnZUFQSS5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKyAgICAgICAgKiBUZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcuaDoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3RXS1dlYlZpZXcubW06CisgICAgICAgICgtW1Rlc3RXS1dlYlZpZXcgc2VsZWN0
aW9uUmFuZ2VIYXNTdGFydE9mZnNldDplbmRPZmZzZXQ6XSk6CisKIDIwMTktMTEtMDYgIEFha2Fz
aCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFsbCBFV1Mgc3RhdHVz
LWJ1YmJsZXMgc2hvd3MgIzEgb24gc2VjdXJpdHkgcGF0Y2hlcyB3aGVuIHBhdGNoIGlzIHVwbG9h
ZGVkIHdpdGggd2Via2l0LXBhdGNoIC0tbm8tcmV2aWV3CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmlu
ZGV4IDU5MTM1YWVkNzVmMTVmNjFkOTZkOWRhZmE4NjFlOWQyMjE5ZGIwNzEuLjU4OWMwOGJjYjM5
MmI3NTgzMjNjYjBjODFjYjIxYWEzYmQwMzU0ZTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBA
IC0yNTcsNiArMjU3LDcgQEAKIAkJNTExMEZDRkExRTAxQ0RCODAwNkY4RDBCIC8qIElEQkluZGV4
VXBncmFkZVRvVjIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTEwRkNFRjFFMDFDQkFBMDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5tbSAq
LzsgfTsKIAkJNTEyMEM4M0QxRTY3NTEyOTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
bW0gKi87IH07CiAJCTUxMjBDODNFMUU2NzY3OEYwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3Jl
Q3VzdG9tUGF0aHMuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTIwQzgzQjFFNjc0RTM1MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLmh0bWwgKi87IH07CisJCTUxMjQyQ0Q1MjM3NEU2MjUwMEVFRDlDMSAvKiBG
aW5kSW5QYWdlQVBJLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEyNDJDRDQyMzc0RTYxRTAwRUVEOUMxIC8qIEZpbmRJblBhZ2VBUEkubW0gKi87IH07
CiAJCTUxMkM0QzlFMjBFQUE0MEQwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gu
bW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTJDNEM5
RDIwRUFBNDA1MDA0OTQ1RUEgLyogUmVzcG9uc2l2ZW5lc3NUaW1lckNyYXNoLm1tICovOyB9Owog
CQk1MTM5M0UyMjE1MjM5NTJEMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVu
ZGxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
MzkzRTFEMTUyMzk0NEEwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUu
Y3BwICovOyB9OwogCQk1MTM5NkUxQTIyMkU1MTYwMDBBNDJGQ0UgLyogTG9hZEZpbGVVUkwubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTM5NkUxOTIy
MkU0RTg2MDBBNDJGQ0UgLyogTG9hZEZpbGVVUkwubW0gKi87IH07CkBAIC0xNzg2LDYgKzE3ODcs
NyBAQAogCQk1MTEwRkNGMzFFMDFDRDc3MDA2RjhEMEIgLyogSW5kZXhVcGdyYWRlLnNxbGl0ZTMg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBmaWxlOyBw
YXRoID0gSW5kZXhVcGdyYWRlLnNxbGl0ZTM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMu
aHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9IFdlYnNpdGVEYXRhU3RvcmVDdXN0b21Q
YXRocy5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTIwQzgzQzFFNjc1MDc5
MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1t
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTI0MkNENDIzNzRFNjFFMDBFRUQ5QzEg
LyogRmluZEluUGFnZUFQSS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEZpbmRJblBhZ2VBUEkubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMkM0
QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jh
c2gubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMzkzRTFEMTUyMzk0NEEwMDVG
MzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uQmFzaWNfQnVuZGxlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzOTNFMUUxNTIzOTQ0QTAwNUYzOUM1
IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTI4NTQsNiArMjg1Niw3IEBACiAJCQkJRjQ0RDA2NDYxRjM5NUM0RDAw
MUEwRTI5IC8qIEVkaXRvclN0YXRlVGVzdHMubW0gKi8sCiAJCQkJQ0RBMjlCMjgyMEZEMkE5OTAw
RjE1Q0VEIC8qIEV4aXRGdWxsc2NyZWVuT25FbnRlclBpUC5tbSAqLywKIAkJCQkyRDgxMDRDQjFC
RUMxM0U3MDAyMERBNDYgLyogRmluZEluUGFnZS5tbSAqLywKKwkJCQk1MTI0MkNENDIzNzRFNjFF
MDBFRUQ5QzEgLyogRmluZEluUGFnZUFQSS5tbSAqLywKIAkJCQkxMTgxNTM0NzIyMDhCQURGMDBC
MkNDRDIgLyogRmlyc3RWaXN1YWxseU5vbkVtcHR5TWlsZXN0b25lLm1tICovLAogCQkJCTJEMUZF
MEFGMUFENDY1QzEwMDZDRDlFNiAvKiBGaXhlZExheW91dFNpemUubW0gKi8sCiAJCQkJMkU5MkI4
RjgyMTY0OTBFQTAwNUI2NEYwIC8qIEZvbnRBdHRyaWJ1dGVzLm1tICovLApAQCAtNDYwNSw2ICs0
NjA4LDcgQEAKIAkJCQk3QTMyRDc0QTFGMDIxNTE1MDAxNjJDNDQgLyogRmlsZU1vbml0b3IuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjMxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmQuY3Bw
IGluIFNvdXJjZXMgKi8sCiAJCQkJN0M4M0UwQkIxRDBBNjUwMDAwRkVCQ0YzIC8qIEZpbmRJblBh
Z2UubW0gaW4gU291cmNlcyAqLywKKwkJCQk1MTI0MkNENTIzNzRFNjI1MDBFRUQ5QzEgLyogRmlu
ZEluUGFnZUFQSS5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUY0MUE0MTFBRTYwMDQ0N0M0
QyAvKiBGaW5kTWF0Y2hlcy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTExQjdGRDI4MjE5RjQ3MTEw
MDY5QjI3RiAvKiBGaXJzdE1lYW5pbmdmdWxQYWludE1pbGVzdG9uZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk3QzgzRTA0MDFEMEE2M0UzMDBGRUJDRjMgLyogRmlyc3RSZXNwb25kZXJTY3JvbGxp
bmdQb3NpdGlvbi5tbSBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlQVBJLm1tIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlQVBJLm1tCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwNDIw
NTJkMThlY2NmOGQ2Nzc0ZTQzM2U0Y2E1OGM1ODA3ODJhNWYKLS0tIC9kZXYvbnVsbAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2VBUEkubW0KQEAg
LTAsMCArMSwyNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBv
cnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRl
LmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3LmgiCisjaW1wb3J0IDxXZWJLaXQvV0tGaW5kQ29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8V2ViS2l0L1dLRmluZFJlc3VsdC5oPgorI2ltcG9ydCA8
V2ViS2l0L1dLV2ViVmlldy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisKK1RFU1Qo
V0tXZWJWaWV3LCBGaW5kQVBJRm9yd2FyZHNOb01hdGNoKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBmaW5k
IGNvbmZpZ3VyYXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0aXZlLCB3cmFwcGluZyIK
KyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5kQ29uZmlndXJhdGlvbiBh
bGxvY10gaW5pdF0pOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VI
YXNTdGFydE9mZnNldDowIGVuZE9mZnNldDowXSk7CisKKyAgICBzdGF0aWMgYm9vbCBkb25lOwor
ICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJmb29iYXIiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkg
eworICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0
OjBdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworVEVTVChXS1dlYlZp
ZXcsIEZpbmRBUElGb3J3YXJkc1dyYXApCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAs
IDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ3b3Jk
IHdvcmQiIGJhc2VVUkw6bmlsXTsKKworICAgIC8vIFRoZSBkZWZhdWx0IGZpbmQgY29uZmlndXJh
dGlvbiBpcyAiZm9yd2FyZHMsIGNhc2UgaW5zZW5zaXRpdmUsIHdyYXBwaW5nIgorICAgIGF1dG8g
Y29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS0ZpbmRDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0
XSk7CisKKyAgICBzdGF0aWMgYm9vbCBkb25lOworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3
b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0
Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5n
ZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUg
PSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0
ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAg
ICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUg
ZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3
ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworVEVTVChXS1dlYlZpZXcsIEZpbmRB
UElGb3J3YXJkc05vV3JhcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdL
V2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0p
OworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIndvcmQgd29yZCIg
YmFzZVVSTDpuaWxdOworCisgICAgLy8gVGhlIGRlZmF1bHQgZmluZCBjb25maWd1cmF0aW9uIGlz
ICJmb3J3YXJkcywgY2FzZSBpbnNlbnNpdGl2ZSwgd3JhcHBpbmciCisgICAgYXV0byBjb25maWd1
cmF0aW9uID0gYWRvcHROUyhbW1dLRmluZENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAg
ICBjb25maWd1cmF0aW9uLmdldCgpLndyYXBzID0gTk87CisKKyAgICBzdGF0aWMgYm9vbCBkb25l
OworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQp
IHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0
OjRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZp
bmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNv
bXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNU
X1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBz
ZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3
aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5tYXRj
aEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNT
dGFydE9mZnNldDowIGVuZE9mZnNldDowXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAg
fV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFs
c2U7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGaW5kQVBJQmFja3dhcmRzV3JhcCkKK3sKKyAgICBh
dXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFt
ZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3Vz
bHlMb2FkSFRNTFN0cmluZzpAIndvcmQgd29yZCIgYmFzZVVSTDpuaWxdOworCisgICAgLy8gVGhl
IGRlZmF1bHQgZmluZCBjb25maWd1cmF0aW9uIGlzICJmb3J3YXJkcywgY2FzZSBpbnNlbnNpdGl2
ZSwgd3JhcHBpbmciCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLRmluZENv
bmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKyAgICBjb25maWd1cmF0aW9uLmdldCgpLmJhY2t3
YXJkcyA9IFlFUzsKKworICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFz
U3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6MF0pOworCisgICAgc3RhdGljIGJvb2wgZG9uZTsKKyAg
ICBbd2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJh
dGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7Cisg
ICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RS
VUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDo1IGVuZE9mZnNldDo5XSk7
CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRp
bDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5kU3Ry
aW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0
aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVF
KHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0
aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDo0XSk7CisKKyAgICAgICAgZG9uZSA9
IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAg
ICBkb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmlu
ZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5k
KTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9m
ZnNldDo1IGVuZE9mZnNldDo5XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07Cisg
ICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9
CisKK1RFU1QoV0tXZWJWaWV3LCBGaW5kQVBJQmFja3dhcmRzTm9XcmFwKQoreworICAgIGF1dG8g
d2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5T
TWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxv
YWRIVE1MU3RyaW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBUaGUgZGVm
YXVsdCBmaW5kIGNvbmZpZ3VyYXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0aXZlLCB3
cmFwcGluZyIKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5kQ29uZmln
dXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYmFja3dhcmRz
ID0gWUVTOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud3JhcHMgPSBOTzsKKworICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6
MF0pOworCisgICAgc3RhdGljIGJvb2wgZG9uZTsKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAi
d29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3Vs
dC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFu
Z2VIYXNTdGFydE9mZnNldDo1IGVuZE9mZnNldDo5XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25l
ID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3Vy
YXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3Vs
dCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAg
ICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDow
IGVuZE9mZnNldDo0XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVz
dFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBb
d2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlv
bi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAg
ICAgIEVYUEVDVF9GQUxTRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVF
KFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6MF0pOwor
CisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6
OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCitURVNUKFdLV2ViVmlldywgRmlu
ZEFQSUZvcndhcmRzQ2FzZVNlbnNpdGl2ZSkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5T
KFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQw
MCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIndv
cmQgV29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBmaW5kIGNv
bmZpZ3VyYXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0aXZlLCB3cmFwcGluZyIKKyAg
ICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5kQ29uZmlndXJhdGlvbiBhbGxv
Y10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuY2FzZVNlbnNpdGl2ZSA9IFlFUzsK
KworICAgIHN0YXRpYyBib29sIGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQi
IHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0
Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFz
U3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6NF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworCisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9u
OmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJl
c3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAg
IEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MTAgZW5k
T2Zmc2V0OjE0XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdl
YktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBbd2Vi
VmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5n
ZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAg
IEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dl
YlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDo0XSk7CisKKyAg
ICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAi
V29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFu
ZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3Vs
dC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFu
Z2VIYXNTdGFydE9mZnNldDo1IGVuZE9mZnNldDo5XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7
CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25l
ID0gZmFsc2U7Cit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RX
S1dlYlZpZXcuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCmlu
ZGV4IGFiMjUwMzk2MWQwOGEyOTIwYTA2YTM2ODZkNDNkY2Q0MzIyMzBiOWQuLjE1NDNlMmY2MTk0
ZTIwNTJhMzA0OTllZGE4MDNlNjc2NDM5MTZlYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oCkBAIC04Myw2ICs4Myw3IEBACiAtICh2b2lkKWNvbGxhcHNlVG9T
dGFydDsKIC0gKHZvaWQpY29sbGFwc2VUb0VuZDsKIC0gKHZvaWQpYWRkVG9UZXN0V2luZG93Owor
LSAoQk9PTClzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OihpbnQpc3RhcnQgZW5kT2Zmc2V0
OihpbnQpZW5kOwogQGVuZAogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbSBiL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQppbmRleCAzYjgzYzkyM2JmZjhiNzQ1OTk0
YzY3NDQxMTdjYWUxYzkwMzkzOTkzLi42MDNjYjczZGJiYzc4NDBlYWQ1YzUzNzQ4N2RlYWIwMDRh
MWI1OTcwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCkBA
IC00NTksNiArNDU5LDI0IEBAIC0gKHZvaWQpY29sbGFwc2VUb0VuZAogICAgIFtzZWxmIGV2YWx1
YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlv
bkhhbmRsZXI6bmlsXTsKIH0KIAorLSAoQk9PTClzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0
OihpbnQpc3RhcnQgZW5kT2Zmc2V0OihpbnQpZW5kCit7CisgICAgX19ibG9jayBib29sIGlzRG9u
ZSA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBtYXRjaGVzID0gdHJ1ZTsKKyAgICBbc2VsZiBl
dmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5z
dGFydE9mZnNldCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9y
KSB7CisgICAgICAgIGlmIChbKE5TTnVtYmVyICopcmVzdWx0IGludFZhbHVlXSAhPSBzdGFydCkK
KyAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTsKKyAgICB9XTsKKyAgICBbc2VsZiBldmFsdWF0
ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5lbmRPZmZz
ZXQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAg
ICAgICBpZiAoWyhOU051bWJlciAqKXJlc3VsdCBpbnRWYWx1ZV0gIT0gZW5kKQorICAgICAgICAg
ICAgbWF0Y2hlcyA9IGZhbHNlOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIHJldHVybiBtYXRjaGVz
OworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClkaWRTdGFydEZvcm1D
b250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383173</attachid>
            <date>2019-11-08 15:40:26 -0800</date>
            <delta_ts>2019-11-08 17:19:23 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203872-20191108154026.patch</filename>
            <type>text/plain</type>
            <size>51087</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQxYjcxNDJlNGEwYWViYzI0
OWJlOGE1M2E2NzYzMzAxMzU2MTljMzguLjU2NjBmMzZiNDNmNTI1NWZhOWM2MmNhYzM2OWE3ZTJj
ZmYxM2YzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMTEtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBGaW5kLWluLXBh
Z2UgQVBJLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY5NzExMTI+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAg
ICAtIFByb21vdGUgX2ZpbmRTdHJpbmc6CisgICAgICAgIC0gQWRkIGEgY29tcGxldGlvbiBoYW5k
bGVyIGZvciBpdC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW06IEFk
ZGVkLgorICAgICAgICAoLVtXS0ZpbmRDb25maWd1cmF0aW9uIGluaXRdKToKKyAgICAgICAgKC1b
V0tGaW5kQ29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRmluZFJlc3Vs
dCBpbml0XSk6CisgICAgICAgICgtW1dLRmluZFJlc3VsdCBfaW5pdFdpdGhNYXRjaEZvdW5kOl0p
OgorICAgICAgICAoLVtXS0ZpbmRSZXN1bHQgY29weVdpdGhab25lOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAodG9GaW5kT3B0aW9ucyk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BV
cFNPQXV0aG9yaXphdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRTdHJp
bmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAxOS0xMS0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBbaU9TXSBBZGQgbG9nZ2luZyBhbmQgdGVsZW1ldHJ5
IHRvIG1hY2ggbG9va3VwIHJ1bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjA3NzU0MmQy
M2M4Nzg5OWVmNTljMjg2YWVmYmU2NWYxOGJjZTczMS4uNjNjNGRmYTEwYWIwOTQ4YzI2MGFhMjk1
NzliMzA1YjBhMjE2NjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjkwLDYgKzI5MCw4
IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3QubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5t
bQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCitVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
by5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS01lbnVJdGVtSWRlbnRpZmllcnMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBiMjAyMzlhYTkyYTdlNDIwZjllNDljY2Q1ZmMwMDU4M2I4YmI4NmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJh
dGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tGaW5kQ29uZmlndXJhdGlvbiA6IE5TT2Jq
ZWN0IDxOU0NvcHlpbmc+CisKKy8qIEBhYnN0cmFjdCBUaGUgZGlyZWN0aW9uIHRvIHNlYXJjaCBm
cm9tIHRoZSBjdXJyZW50IHNlbGVjdGlvbgorIEBkaXNjdXNzaW9uIFRoZSBzZWFyY2ggd2lsbCBy
ZXNwZWN0IHRoZSB3cml0aW5nIGRpcmVjdGlvbiBvZiB0aGUgZG9jdW1lbnQuCisgVGhlIGluaXRp
YWwgdmFsdWUgaXMgTk8uCisqLworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYmFja3dhcmRz
OworCisvKiBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgdGhlIHNlYXJjaCBzaG91bGQgYmUgY2Fz
ZSBzZW5zaXRpdmUKKyBAZGlzY3Vzc2lvbiBUaGUgaW5pdGlhbCB2YWx1ZSBpcyBOTy4KKyovCitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYXNlU2Vuc2l0aXZlOworCisvKiBAYWJzdHJhY3Qg
V2hldGhlciB0aGUgc2VhcmNoIHNob3VsZCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBk
b2N1bWVudCBvbmNlIGl0IHJlYWNoZXMgdGhlIGVuZAorIEBkaXNjdXNzaW9uIFRoZSBpbml0aWFs
IHZhbHVlIGlzIFlFUy4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3cmFwczsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDE2YmQ3MjljNWQ3MDkyNGZhNzM2NDkzODBmZTdhYWI4NDE4ZDRjZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9u
Lm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZENv
bmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9iYWNrd2FyZHMgPSBO
TzsKKyAgICBfY2FzZVNlbnNpdGl2ZSA9IE5POworICAgIF93cmFwcyA9IFlFUzsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAg
V0tGaW5kQ29uZmlndXJhdGlvbiAqZmluZENvbmZpZ3VyYXRpb24gPSBbKFdLRmluZENvbmZpZ3Vy
YXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBm
aW5kQ29uZmlndXJhdGlvbi5iYWNrd2FyZHMgPSBfYmFja3dhcmRzOworICAgIGZpbmRDb25maWd1
cmF0aW9uLmNhc2VTZW5zaXRpdmUgPSBfY2FzZVNlbnNpdGl2ZTsKKyAgICBmaW5kQ29uZmlndXJh
dGlvbi53cmFwcyA9IF93cmFwczsKKworICAgIHJldHVybiBmaW5kQ29uZmlndXJhdGlvbjsKK30K
KworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RmluZFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllZTFhNGYyNGI4ODNiODYxMmE4MzYxYTJiOTRhOTIxMzM4ZDQw
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGaW5kUmVzdWx0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBXS0ZpbmRSZXN1bHQgOiBOU09i
amVjdCA8TlNDb3B5aW5nPgorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsK
KworLyogQGFic3RyYWN0IFdoZXRoZXIgb3Igbm90IGEgbWF0Y2ggd2FzIGZvdW5kIGR1cmluZyB0
aGUgZmluZCBvcGVyYXRpb24gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBtYXRjaEZvdW5kOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGY1ZTZkYjk4NWVlNDVjZjhjYzg4ZDNiOTBlZmZlYTQzZTcwODExYQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0K
QEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZFJlc3Vs
dAorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlfaW5pdFdpdGhNYXRjaEZvdW5kOihCT09MKW1hdGNoRm91bmQKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9t
YXRjaEZvdW5kID0gbWF0Y2hGb3VuZDsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICBXS0ZpbmRSZXN1bHQgKmZpbmRSZXN1
bHQgPSBbKFdLRmluZFJlc3VsdCAqKVtbc2VsZiBjbGFzc10gYWxsb2NXaXRoWm9uZTp6b25lXSBp
bml0XTsKKworICAgIGZpbmRSZXN1bHQtPl9tYXRjaEZvdW5kID0gX21hdGNoRm91bmQ7CisKKyAg
ICByZXR1cm4gZmluZFJlc3VsdDsKK30KKworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVybmFsLmggYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4zZjNkMDgwNDJiMzg4YzQ1ZWY2ODRkYjE4OGUxZGJiMmRkMDMxYjVkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdEludGVy
bmFsLmgKQEAgLTAsMCArMSwzMyBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworKiBh
cmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisqLworCisjaW1wb3J0ICJXS0ZpbmRSZXN1bHQuaCIKKworQGludGVyZmFjZSBXS0Zp
bmRSZXN1bHQgKCkgeworfQorCistIChpbnN0YW5jZXR5cGUpX2luaXRXaXRoTWF0Y2hGb3VuZDoo
Qk9PTCltYXRjaEZvdW5kOworCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJWaWV3LmgKaW5kZXggZGQ2Zjg3YjE2MmNjNWMwNzc5ZjllMTI1NDE1Y2U1NDlm
MzMzYWI5Mi4uNDZkMzI0ZmY0NDk1YjZkOWZhMWM2YWI5NDBmMTU1ZWFjNTIyOTgzMyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzUsNiAr
MzUsOCBAQCBOU19BU1NVTUVfTk9OTlVMTF9CRUdJTgogCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExp
c3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3RJdGVtOworQGNsYXNzIFdLRmluZENvbmZpZ3Vy
YXRpb247CitAY2xhc3MgV0tGaW5kUmVzdWx0OwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFz
cyBXS1BERkNvbmZpZ3VyYXRpb247CiBAY2xhc3MgV0tTbmFwc2hvdENvbmZpZ3VyYXRpb247CkBA
IC0zMDMsNiArMzA1LDE2IEBAIFRoZSB1bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2Vi
QXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQgdGhlIHJlbGF0ZWQgcGFzdGViCiAqLwogQHByb3BlcnR5
IChub25hdG9taWMpIENHRmxvYXQgcGFnZVpvb20gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAorLyogQGFic3RyYWN0IFNlYXJjaGVzIHRoZSBw
YWdlIGNvbnRlbnRzIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLgorIEBwYXJhbSBzdHJpbmcgVGhlIHN0
cmluZyB0byBzZWFyY2ggZm9yLgorIEBwYXJhbSBjb25maWd1cmF0aW9uIEEgc2V0IG9mIG9wdGlv
bnMgY29uZmlndXJpbmcgdGhlIHNlYXJjaC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBi
bG9jayB0byBpbnZva2Ugd2hlbiB0aGUgc2VhcmNoIGNvbXBsZXRlcy4KKyBAZGlzY3Vzc2lvbiBJ
ZiB0aGUgV0tGaW5kQ29uZmlndXJhdGlvbiBpcyBuaWwsIGFsbCBvZiB0aGUgZGVmYXVsdCBXS0Zp
bmRDb25maWd1cmF0aW9uIHZhbHVlcyB3aWxsIGJlIHVzZWQuCisgIEEgbWF0Y2ggZm91bmQgYnkg
dGhlIHNlYXJjaCBpcyBzZWxlY3RlZCBhbmQgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQgdG8gcmV2ZWFs
IHRoZSBzZWxlY3Rpb24uCisgIFRoZSBjb21wbGV0aW9uIGhhbmRsZXIgaXMgY2FsbGVkIGFmdGVy
IHRoZSBzZWFyY2ggY29tcGxldGVzLgorKi8KKy0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcg
KilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KG51bGxhYmxlIFdLRmluZENvbmZpZ3VyYXRpb24g
Kiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQg
KnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIgTlNfUkVGSU5FRF9GT1JfU1dJRlQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3Ry
YWN0IENoZWNrcyB3aGV0aGVyIG9yIG5vdCBXS1dlYlZpZXdzIGhhbmRsZSB0aGUgZ2l2ZW4gVVJM
IHNjaGVtZSBieSBkZWZhdWx0LgogIEBwYXJhbSBzY2hlbWUgVGhlIFVSTCBzY2hlbWUgdG8gY2hl
Y2suCiAgKi8KQEAgLTM1MSw2ICszNjMsMTAgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVy
IGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBiZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKIAog
QGVuZAogCitXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpKQorQGludGVyZmFjZSBX
S1dlYlZpZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgorQGVu
ZAorCiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLRGVwcmVjYXRlZCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDBjYzFj
ODYwM2JlOWMyMjFkMGEwMzllMzMzNjExNzBmZTg5NTc4ZmQuLjUwMGRiNWM1Mjg3MWQ1MmRmMWQ4
OGEwNjUyYTJmOTM1ZTJiM2M2MjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlldy5tbQpAQCAtNTksNiArNTksOCBAQAogI2ltcG9ydCAiV0tCYWNrRm9y
d2FyZExpc3RJdGVtSW50ZXJuYWwuaCIKICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxl
SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLRXJyb3JJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGaW5k
Q29uZmlndXJhdGlvbi5oIgorI2ltcG9ydCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKICNpbXBv
cnQgIldLSGlzdG9yeURlbGVnYXRlUHJpdmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgi
CiAjaW1wb3J0ICJXS05TRGF0YS5oIgpAQCAtNDc0Niw2ICs0NzQ4LDMyIEBAIEFMTE9XX0RFUFJF
Q0FURURfSU1QTEVNRU5UQVRJT05TX0VORAogICAgIH0pOwogfQogCitpbmxpbmUgV2ViS2l0OjpG
aW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25zKFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24pCit7CisgICAgdW5zaWduZWQgZmluZE9wdGlvbnMgPSAwOworCisgICAgaWYgKCFjb25maWd1
cmF0aW9uLmNhc2VTZW5zaXRpdmUpCisgICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6Rmlu
ZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uYmFja3dhcmRz
KQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOwor
ICAgIGlmIChjb25maWd1cmF0aW9uLndyYXBzKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJL
aXQ6OkZpbmRPcHRpb25zV3JhcEFyb3VuZDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJL
aXQ6OkZpbmRPcHRpb25zPihmaW5kT3B0aW9ucyk7Cit9CisKKy0gKHZvaWQpZmluZFN0cmluZzoo
TlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24g
Kiljb25maWd1cmF0aW9uIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQg
KnJlc3VsdCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsK
KyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdp
dGhNYXRjaEZvdW5kOk5PXSBhdXRvcmVsZWFzZV0pOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgX3BhZ2UtPmZpbmRTdHJpbmcoc3RyaW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRp
b24pLCAxLCBbaGFuZGxlciA9IG1ha2VCbG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wg
Zm91bmQsIFdlYktpdDo6Q2FsbGJhY2tCYXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBoYW5k
bGVyKFtbW1dLRmluZFJlc3VsdCBhbGxvY10gX2luaXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0g
V2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVycm9yOjpOb25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2Vd
KTsKKyAgICB9KTsKK30KKwogQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1By
aXZhdGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCmluZGV4IDcyOTQ0ZDU4OWUxNWZjYmZmNTY5YmEw
OTJhZjJiZDljYjdlYzE3NzguLjJmMGQ1YmQ0Yjc5NGQxZDVjZTIxMjVmOWQ0NGMzY2I2OWZmY2Ni
YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXdDb25maWd1cmF0aW9uLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJX
S1dlYlZpZXcuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5Lmgi
CiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6ZS5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNE
ZWZhdWx0VmFsdWVzLmgiCiAjaW1wb3J0ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNp
bXBvcnQgIl9XS0FwcGxpY2F0aW9uTWFuaWZlc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlz
aXRlZExpbmtTdG9yZS5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKaW5kZXggMmQzYjllZjY1MjRmMTc2ZGI0ZDc2MTBlY2I2
MThjMmZhMzdlOWVlNi4uZmQ5MTkxMDU1ZTRjOTBhODMzNmNmZmFhOTA0YzFhZmM4Mjk2OGZhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oCkBAIC00NTAsMTEgKzQ1MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRl
Z2VyLCBfV0tSZWN0RWRnZSkgewogQGludGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVy
U3RhbmRhcmRFZGl0QWN0aW9ucz4KIEBlbmQKIAotI2Vsc2UKLQotQGludGVyZmFjZSBXS1dlYlZp
ZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgotQGVuZAotCiAj
ZW5kaWYKIAogQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9y
aXphdGlvblNlc3Npb24uaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9y
aXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaAppbmRleCBiNjY5NGZlOTA2ZWEw
YjRmODJhNTQwNjYyY2M4NTUwYjJmZTFhNWQyLi40NTRjNjFmZmRlZmVjYzQ3NmQxNTYwYzdjNDNm
NWI1ZDM0NWYyODFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9T
T0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0
aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsyOCw3IEBACiAjaWYgSEFWRShBUFBfU1NPKQogCiAjaW5j
bHVkZSAiU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9u
SGFuZGxlci5oPgogCiBPQkpDX0NMQVNTIFdLU09TZWNyZXREZWxlZ2F0ZTsKIE9CSkNfQ0xBU1Mg
V0tXZWJWaWV3OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KaW5kZXggMDc2Y2ZhYTY3NmE3NGM0ZjMzNjAxZmY2NjQ0ZGVjNWU1YjU2MWNhMS4u
MGYxODAzOGRlOTg5ZTY5YTg0MzJjODViNzFiNmMwNGU5MzEzMDJiMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3Jp
emF0aW9uU2Vzc2lvbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1
dGhvcml6YXRpb24vUG9wVXBTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCkBAIC0zMyw2ICszMyw3
IEBACiAjaW1wb3J0ICJXS1VJRGVsZWdhdGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3Vy
YXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAi
V2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNp
bXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmNwcAppbmRleCA4ZWM4ZmFlNzRlM2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi5m
ZDlkMzU0N2VmY2YxOTdhNDViZTcyODk1MzcxMGI0ODFmOGQ1OWM5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKQEAgLTM2OTksOSArMzY5OSwyMiBAQCB2b2lkIFdl
YlBhZ2VQcm94eTo6ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRP
cHRpb25zIG9wdGlvbnMsCiAgICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpG
aW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYg
c3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9p
ZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRp
b25zIG9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2ws
IENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmIGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9wcm9j
ZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywg
bWF4TWF0Y2hDb3VudCksIG1fd2ViUGFnZUlEKTsKKyAgICBPcHRpb25hbDxDYWxsYmFja0lEPiBj
YWxsYmFja0lEOworICAgIGlmIChjYWxsYmFja0Z1bmN0aW9uKQorICAgICAgICBjYWxsYmFja0lE
ID0gbV9jYWxsYmFja3MucHV0KFdURk1vdmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+
dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFjdGl2aXR5KCJXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmci
X3MpKTsKKworICAgIG1fcHJvY2Vzcy0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmlu
ZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJ
RCk7Cit9CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3Vu
ZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxi
YWNrcy50YWtlPEJvb2xDYWxsYmFjaz4oY2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykK
KyAgICAgICAgcmV0dXJuOworCisgICAgY2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1
cm5WYWx1ZShmb3VuZCk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRN
YXRjaChpbnQzMl90IG1hdGNoSW5kZXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCmluZGV4IGI4NGZiOWUwZWYzOTVlNmY2ZDkyY2I3MDQwYjVmMDVkOGFkYmJkNDUuLmM2YzM2
ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZlZTA5N2UyM2JiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0zMzcsNiArMzM3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgU3RyaW5nJj4gU3RyaW5nQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxs
YmFjazxBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4
Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRWYWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgV2ViQ29yZTo6Rm9udEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxi
YWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0aW9uQ29udGV4dENhbGxiYWNrOwordHlwZWRlZiBHZW5l
cmljQ2FsbGJhY2s8Ym9vbD4gQm9vbENhbGxiYWNrOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BS
T1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBMYXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsK
QEAgLTEwMTksNyArMTAyMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHBsdWdpblpvb21GYWN0b3JE
aWRDaGFuZ2UoZG91YmxlKTsKIAogICAgIC8vIEZpbmQuCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNv
bnN0IFN0cmluZyYsIEZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2
b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1h
dGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmID0g
bnVsbHB0cik7CiAgICAgdm9pZCBmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5k
T3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZp
bmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGlu
dDMyX3QgbWF0Y2hJbmRleCk7CkBAIC0xMDMyLDYgKzEwMzMsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWlu
dDY0X3QgLyogV2ViQ29yZTo6VGV4dEluZGljYXRvcldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1l
ID0gMCAvKiBQZXJtYW5lbnQgKi8pOwogICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlv
blByb2dyZXNzKGZsb2F0KTsKICAgICB2b2lkIGNsZWFyVGV4dEluZGljYXRvcigpOworCisgICAg
dm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9p
ZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRS
ZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRX
cmFwQXJvdW5kKTsKICAgICB2b2lkIGRpZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7
CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0
b3I8VmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdElu
ZGV4QWZ0ZXJTZWxlY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDIyNjlhYTY5ZWExZmQ5ODk1Y2Q0MGI4ODMzZDU2ZmQ1
ZGFmYzk1ZjkuLjVkODM5MmI5MmY2ZDE1ZjNlMjE1YjdjYjgzYTMyNmFiN2FkZDRiNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAg
LTIwOSw2ICsyMDksNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogICAgIE1hY2hTZW5k
UmlnaHRDYWxsYmFjayhNYWNoU2VuZFJpZ2h0IHNlbmRSaWdodCwgV2ViS2l0OjpDYWxsYmFja0lE
IGNhbGxiYWNrSUQpCiAgICAgTm93UGxheWluZ0luZm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9v
bCByZWdpc3RlcmVkQXNOb3dQbGF5aW5nQXBwbGljYXRpb24sIFN0cmluZyB0aXRsZSwgZG91Ymxl
IGR1cmF0aW9uLCBkb3VibGUgZWxhcHNlZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIs
IFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogI2VuZGlmCisgICAgRmluZFN0cmluZ0Nh
bGxiYWNrKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAg
UGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdlKGRvdWJsZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5T
Y2FsZUZhY3RvckRpZENoYW5nZShkb3VibGUgem9vbUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0
L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDg1OWM4ZmFjNDAwMGI4ZTdl
MWFlN2U2MDEwMjVmYTEwNjlmYjcyMTguLjVlM2VhM2IzNDM5NmM3ZTBiMWY3OWMzZjZjM2NkODg2
ZTA5NmIyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtOTY1LDYgKzk2NSw5IEBACiAJCTUxM0ZGQjhEMjAxNDU5QjAwMDI1OTZFQSAv
KiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTNGRkI4QjIwMTQ1OUE3MDAyNTk2RUEgLyogVUlNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyB9OwogCQk1MTNGRkI5MTIwMTQ1OUM2MDAyNTk2
RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxM0ZGQjhGMjAxNDU5QzIwMDI1OTZFQSAvKiBX
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovOyB9OwogCQk1MTQxMjk5NDFDNjQyOEJC
MDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyog
V2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmggKi87IH07CisJCTUxNDg5Q0MzMjM3MERCRkEwMDQ0
RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxNDg5Q0MxMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxNDg5Q0M3
MjM3MjM3ODAwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhB
IC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggKi87IH07CisJCTUxNEFCOUYwMjM2MEQyQTkwMEVE
QzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRBQjlFRjIzNUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29u
ZmlndXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsg
fTsKIAkJNTE0QkRFRDMxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2Qzk4
RUREMDBFNEUyNUUgLyogU3RhdGlzdGljc1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcxOTEx
OUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNl
cnZpY2VzQ29udHJvbGxlci5oICovOyB9OwogCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyog
V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNTI2MkJCMUZCOTUxMzEwMDcwRTU3OSAv
KiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMzM0
NCw2ICszMzQ3LDExIEBACiAJCTUxNDEyOTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25u
ZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURC
Q29ubmVjdGlvblRvU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNC
MjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBfV0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUlj
b25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUlj
b25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0Mx
MjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0tGaW5kUmVzdWx0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUxNDg5Q0MyMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQubW0gKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXS0ZpbmRSZXN1bHQubW07IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1
bHRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1
bHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MTRBQjlFRjIzNUZB
NTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXS0ZpbmRDb25maWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTUxNEFCOUYxMjM2MEU4M0QwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9u
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGaW5kQ29uZmln
dXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVE
RDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFN0YXRpc3RpY3NSZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTUxNEQ5RjU1MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2
aWNlc0NvbnRyb2xsZXIubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBTZXJ2aWNlc0NvbnRyb2xsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02
NDQyLDYgKzY0NTAsMTEgQEAKIAkJCQkxQUY0NTkyQzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJv
ci5tbSAqLywKIAkJCQkxQTJEMjUyQTE5NDY4OEZEMDA0NTM3QjAgLyogV0tFcnJvckludGVybmFs
LmggKi8sCiAJCQkJMzdCNTA0NTExOUVFRjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmgg
Ki8sCisJCQkJNTE0QUI5RUYyMzVGQTU5QjAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24u
aCAqLywKKwkJCQk1MTRBQjlGMTIzNjBFODNEMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlv
bi5tbSAqLywKKwkJCQk1MTQ4OUNDMTIzNzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0Lmgg
Ki8sCisJCQkJNTE0ODlDQzIyMzcwREFDQzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLywK
KwkJCQk1MTQ4OUNDNjIzNzIzNzc4MDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAq
LywKIAkJCQkxQTRENjY0QTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAqLywKIAkJ
CQkxQTRENjY0OTE4QTMwMzBFMDBEODJFMjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRG
OUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8qIFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTEw
MjI2LDcgKzEwMjM5LDEwIEBACiAJCQkJQkM0MDc1RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJy
b3JSZWYuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBX
S0V2ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyog
V0tGaWxlVXBsb2FkUGFuZWwuaCBpbiBIZWFkZXJzICovLAorCQkJCTUxNEFCOUYwMjM2MEQyQTkw
MEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y2
MjNCODEyQTU3QjYyMDBFM0ZERjYgLyogV0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJNTE0ODlDQzMyMzcwREJGQTAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJNTE0ODlDQzcyMzcyMzc4MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFs
LmggaW4gSGVhZGVycyAqLywKIAkJCQkyRTE2QjZDRjIwMTdCN0FEMDA4OTk2RDYgLyogV0tGb2N1
c2VkRm9ybUNvbnRyb2xWaWV3LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNUNCMDdEQzIwRTE2NzhG
MDAyMkMxODMgLyogV0tGb3JtQ29sb3JDb250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTQ4
RUJEMTIxMDE1RjBFMDBCRTNDMzIgLyogV0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICov
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuY3BwCmluZGV4IDA3NjJkMDBhYWI0N2UyYzZmMzlhODA0ODcwNmQ2ZGNkNmYzNjk0MTAuLmM2
Y2MzOGEzNGVhZDc3ZjFmYjZlYzM4YmQxODBkNzRlYmRiOTM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTIyNCw3
ICsyMjQsNyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3Jv
bGwoYm9vbCBmb3VuZCwgY29uc3QgU3RyaW5nJiBzdHJpbgogICAgICAgICBoaWRlRmluZEluZGlj
YXRvcigpOwogfQogCi12b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQor
dm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmlu
ZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJh
Y2tJRD4gY2FsbGJhY2tJRCkKIHsKICAgICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1
Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFnZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yNzcsNiArMjc3
LDkgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWcKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVh
KCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmluZ1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVk
V2ViUGFnZSwgZm91bmQsIHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCwgZGlkV3JhcF0g
KCkgewogICAgICAgICBwcm90ZWN0ZWRXZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZp
bmRVSUFmdGVyUGFnZVNjcm9sbChmb3VuZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50
LCBkaWRXcmFwLCBGaW5kVUlPcmlnaW5hdG9yOjpGaW5kU3RyaW5nKTsKICAgICB9KTsKKworICAg
IGlmIChjYWxsYmFja0lEKQorICAgICAgICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBh
Z2VQcm94eTo6RmluZFN0cmluZ0NhbGxiYWNrKGZvdW5kLCAqY2FsbGJhY2tJRCkpOwogfQogCiB2
b2lkIEZpbmRDb250cm9sbGVyOjpmaW5kU3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmlu
ZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IGIz
MmQ1M2YyMjg2ZTNhNGI4NTZhYjRiNGE4NzI2YmJiOWMwOTJmZjMuLjQ0MDU5YTFlZmMxNDVmNjJh
OGQ4ZWI1NTlhNzQ4MGRmMTgzODc0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAg
ICAgZXhwbGljaXQgRmluZENvbnRyb2xsZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRD
b250cm9sbGVyKCk7CiAKLSAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25z
dCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8
Q2FsbGJhY2tJRD4pOwogICAgIHZvaWQgZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwg
RmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VG
b3JGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0
Y2godWludDMyX3QgbWF0Y2hJbmRleCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgyNDc0ODA3ODk3NTcxODQ1MGNjYTEyOWU1MGY5M2RjMmRm
MDZiMmUuLjBjNTg4MDQwNDU3NTVmNTlkOTM5Yzc5NzYxZDY4Y2QzN2Q5OWYwZmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MDQ3LDkgKzQw
NDcsOSBAQCB2b2lkIFdlYlBhZ2U6OnJlcGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVu
ZGxlKGNvbnN0IFZlY3Rvcjx1aW50MzJfdD4mIG1hdAogICAgIGZpbmRDb250cm9sbGVyKCkucmVw
bGFjZU1hdGNoZXMobWF0Y2hJbmRpY2VzLCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkp
OwogfQogCi12b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVp
bnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90
IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQpCiB7Ci0gICAg
ZmluZENvbnRyb2xsZXIoKS5maW5kU3RyaW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8RmluZE9wdGlv
bnM+KG9wdGlvbnMpLCBtYXhNYXRjaENvdW50KTsKKyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRT
dHJpbmcoc3RyaW5nLCBzdGF0aWNfY2FzdDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNo
Q291bnQsIGNhbGxiYWNrSUQpOwogfQogCiB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVz
KGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRj
aENvdW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4
IGIxMDBjY2E4MzdlYmNlZDA3MDNjYjc3MmFlZjQxY2M5NGMwNzMwZTUuLjQyNjMzZjFmMzYwOTcx
ZDUxZjc5ZGFhYjQ2M2FmZWM3ZDFjOWVhNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0NzIsNyArMTQ3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZWFwcGx5RWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogICAgIHZvaWQg
ZGlkUmVtb3ZlRWRpdENvbW1hbmQoV2ViVW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogCi0gICAgdm9p
ZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJf
dCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWlu
dDMyX3QgZmluZE9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxi
YWNrSUQ+KTsKICAgICB2b2lkIGZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQz
Ml90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldElt
YWdlRm9yRmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0Rmlu
ZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5kZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMzZlM2QyODkxOTNkMDNm
MWFhOTVkMmIwNmE3MWExMjZhMTMzZjAzNS4uZGExYzc1NWY1YjMyODc1YjNhYzE0Zjg3M2MyZjI1
NjdjOGQ4ZjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBAIC0yODQsNyArMjg0LDcgQEAgR2VuZXJhdGVTeW50aGV0
aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29t
bWFuZFR5cGUKICAgICBQb3N0SW5qZWN0ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFt
ZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNzYWdlQm9keSkKIAogICAgICMgRmluZC4KLSAgICBGaW5k
U3RyaW5nKFN0cmluZyBzdHJpbmcsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhN
YXRjaENvdW50KQorICAgIEZpbmRTdHJpbmcoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9w
dGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPFdlYktpdDo6Q2FsbGJhY2tJ
RD4gY2FsbGJhY2tJRCkKICAgICBGaW5kU3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50
MzJfdCBmaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKICAgICBHZXRJbWFnZUZv
ckZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50
MzJfdCBtYXRjaEluZGV4KQpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hh
bmdlTG9nCmluZGV4IDUzMDRlMTQxODAyMGQ4M2Q5OGFlNDQ5NmU4ZDNlMTZmNDAyMjMzMDQuLmQ3
NWMxNmU3Y2M4M2FjYjIxZmEyMmU4ZDNmOTg3MWZmOTFmNWNiMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0x
MS0wOCAgQnJhZHkgRWlkc29uICA8YmVpZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJW
aWV3IEZpbmQtaW4tcGFnZSBBUEkuCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njk3MTExMj4g
YW5kIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBUaW0gSG9ydG9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9GaW5kSW5QYWdlQVBJLm1tOiBBZGRlZC4KKyAgICAg
ICAgKFRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5o
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAg
ICAgKC1bVGVzdFdLV2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OmVuZE9mZnNl
dDpdKToKKwogMjAxOS0xMS0wOCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgogCiAgICAgICAgIEZpeCBmbGFreSB0ZXN0cyBpbiBodHRwL3Rlc3RzL2NhY2hlL2Rp
c2stY2FjaGUKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNTkxMzVhZWQ3NWYxNWY2MWQ5NmQ5
ZGFmYTg2MWU5ZDIyMTlkYjA3MS4uNTg5YzA4YmNiMzkyYjc1ODMyM2NiMGM4MWNiMjFhYTNiZDAz
NTRlNyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTI1Nyw2ICsyNTcsNyBAQAogCQk1MTEw
RkNGQTFFMDFDREI4MDA2RjhEMEIgLyogSURCSW5kZXhVcGdyYWRlVG9WMi5tbSBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMTBGQ0VGMUUwMUNCQUEwMDZG
OEQwQiAvKiBJREJJbmRleFVwZ3JhZGVUb1YyLm1tICovOyB9OwogCQk1MTIwQzgzRDFFNjc1MTI5
MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUw
IC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5tbSAqLzsgfTsKIAkJNTEyMEM4M0UxRTY3
Njc4RjAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBDODNCMUU2
NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLzsgfTsK
KwkJNTEyNDJDRDUyMzc0RTYyNTAwRUVEOUMxIC8qIEZpbmRJblBhZ2VBUEkubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTI0MkNENDIzNzRFNjFFMDBF
RUQ5QzEgLyogRmluZEluUGFnZUFQSS5tbSAqLzsgfTsKIAkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0
NUVBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNw
b25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0gKi87IH07CiAJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlD
NSAvKiBET01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8q
IERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi87IH07CiAJCTUxMzk2RTFBMjIy
RTUxNjAwMEE0MkZDRSAvKiBMb2FkRmlsZVVSTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMzk2RTE5MjIyRTRFODYwMEE0MkZDRSAvKiBMb2FkRmls
ZVVSTC5tbSAqLzsgfTsKQEAgLTE3ODYsNiArMTc4Nyw3IEBACiAJCTUxMTBGQ0YzMUUwMUNENzcw
MDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUuc3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGZpbGU7IHBhdGggPSBJbmRleFVwZ3JhZGUuc3FsaXRl
Mzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUw
IC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0b21QYXRocy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1s
OyBwYXRoID0gV2Vic2l0ZURhdGFTdG9yZUN1c3RvbVBhdGhzLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUxMjBDODNDMUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0
b3JlQ3VzdG9tUGF0aHMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCTUxMjQyQ0Q0MjM3NEU2MUUwMEVFRDlDMSAvKiBGaW5kSW5QYWdlQVBJLm1tICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gRmluZEluUGFnZUFQSS5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEyQzRDOUQyMEVBQTQwNTAwNDk0NUVBIC8qIFJl
c3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNzVGltZXJDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lv
bkJhc2ljX0J1bmRsZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBE
T01XaW5kb3dFeHRlbnNpb25CYXNpY19CdW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1MTM5M0UxRTE1MjM5NDRBMDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFz
aWMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0
ZW5zaW9uQmFzaWMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1NCw2ICsy
ODU2LDcgQEAKIAkJCQlGNDREMDY0NjFGMzk1QzREMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0
cy5tbSAqLywKIAkJCQlDREEyOUIyODIwRkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1bGxzY3JlZW5P
bkVudGVyUGlQLm1tICovLAogCQkJCTJEODEwNENCMUJFQzEzRTcwMDIwREE0NiAvKiBGaW5kSW5Q
YWdlLm1tICovLAorCQkJCTUxMjQyQ0Q0MjM3NEU2MUUwMEVFRDlDMSAvKiBGaW5kSW5QYWdlQVBJ
Lm1tICovLAogCQkJCTExODE1MzQ3MjIwOEJBREYwMEIyQ0NEMiAvKiBGaXJzdFZpc3VhbGx5Tm9u
RW1wdHlNaWxlc3RvbmUubW0gKi8sCiAJCQkJMkQxRkUwQUYxQUQ0NjVDMTAwNkNEOUU2IC8qIEZp
eGVkTGF5b3V0U2l6ZS5tbSAqLywKIAkJCQkyRTkyQjhGODIxNjQ5MEVBMDA1QjY0RjAgLyogRm9u
dEF0dHJpYnV0ZXMubW0gKi8sCkBAIC00NjA1LDYgKzQ2MDgsNyBAQAogCQkJCTdBMzJENzRBMUYw
MjE1MTUwMDE2MkM0NCAvKiBGaWxlTW9uaXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NF
N0VGMzFBNDExQUU2MDA0NDdDNEMgLyogRmluZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Qzgz
RTBCQjFEMEE2NTAwMDBGRUJDRjMgLyogRmluZEluUGFnZS5tbSBpbiBTb3VyY2VzICovLAorCQkJ
CTUxMjQyQ0Q1MjM3NEU2MjUwMEVFRDlDMSAvKiBGaW5kSW5QYWdlQVBJLm1tIGluIFNvdXJjZXMg
Ki8sCiAJCQkJN0NDRTdFRjQxQTQxMUFFNjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNv
dXJjZXMgKi8sCiAJCQkJMTFCN0ZEMjgyMTlGNDcxMTAwNjlCMjdGIC8qIEZpcnN0TWVhbmluZ2Z1
bFBhaW50TWlsZXN0b25lLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMw
MEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRlclNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMg
Ki8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Zp
bmRJblBhZ2VBUEkubW0gYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Zp
bmRJblBhZ2VBUEkubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjA0MjA1MmQxOGVjY2Y4ZDY3NzRlNDMzZTRjYTU4
YzU4MDc4MmE1ZgotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvRmluZEluUGFnZUFQSS5tbQpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIK
KyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZp
ZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS0ZpbmRDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxX
ZWJLaXQvV0tGaW5kUmVzdWx0Lmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1w
b3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKworVEVTVChXS1dlYlZpZXcsIEZpbmRBUElGb3J3YXJk
c05vTWF0Y2gpCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBb
d2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ3b3JkIHdvcmQiIGJhc2VVUkw6
bmlsXTsKKworICAgIC8vIFRoZSBkZWZhdWx0IGZpbmQgY29uZmlndXJhdGlvbiBpcyAiZm9yd2Fy
ZHMsIGNhc2UgaW5zZW5zaXRpdmUsIHdyYXBwaW5nIgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9
IGFkb3B0TlMoW1tXS0ZpbmRDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBFWFBF
Q1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0
OjBdKTsKKworICAgIHN0YXRpYyBib29sIGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpA
ImZvb2JhciIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShy
ZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlv
blJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6MF0pOworCisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworfQorCitURVNUKFdLV2ViVmlldywgRmluZEFQSUZvcndhcmRzV3JhcCkK
K3sKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5p
dFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIndvcmQgd29yZCIgYmFzZVVSTDpuaWxdOworCisg
ICAgLy8gVGhlIGRlZmF1bHQgZmluZCBjb25maWd1cmF0aW9uIGlzICJmb3J3YXJkcywgY2FzZSBp
bnNlbnNpdGl2ZSwgd3JhcHBpbmciCisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhb
W1dLRmluZENvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRdKTsKKworICAgIHN0YXRpYyBib29sIGRv
bmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNv
bmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3Vs
dCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVY
UEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZz
ZXQ6NF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcg
ZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkg
Y29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBF
Q1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3
IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6NSBlbmRPZmZzZXQ6OV0pOworCisgICAgICAg
IGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9u
ZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQi
IHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6
XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0
Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFz
U3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6NF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAg
IH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZh
bHNlOworfQorCitURVNUKFdLV2ViVmlldywgRmluZEFQSUZvcndhcmRzTm9XcmFwKQoreworICAg
IGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZy
YW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25v
dXNseUxvYWRIVE1MU3RyaW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBU
aGUgZGVmYXVsdCBmaW5kIGNvbmZpZ3VyYXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0
aXZlLCB3cmFwcGluZyIKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5k
Q29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud3Jh
cHMgPSBOTzsKKworICAgIHN0YXRpYyBib29sIGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmlu
ZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlv
bkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShy
ZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlv
blJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6NF0pOworCisgICAgICAgIGRvbmUgPSB0
cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAg
ZG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25m
aWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRS
ZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7
CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZz
ZXQ6NSBlbmRPZmZzZXQ6OV0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisg
ICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3Vy
YXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgewor
ICAgICAgICBFWFBFQ1RfRkFMU0UocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjBd
KTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworVEVTVChXS1dlYlZpZXcs
IEZpbmRBUElCYWNrd2FyZHNXcmFwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tU
ZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0
MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAid29yZCB3
b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBmaW5kIGNvbmZpZ3VyYXRp
b24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0aXZlLCB3cmFwcGluZyIKKyAgICBhdXRvIGNv
bmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5kQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0p
OworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkuYmFja3dhcmRzID0gWUVTOworCisgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDow
XSk7CisKKyAgICBzdGF0aWMgYm9vbCBkb25lOworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3
b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5k
bGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0
Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5n
ZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsK
KyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUg
PSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0
ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAg
ICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAg
ZW5kT2Zmc2V0OjRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0
V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3
ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
LmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAg
ICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShb
d2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKwor
ICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpy
dW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KKworVEVTVChXS1dlYlZpZXcsIEZpbmRB
UElCYWNrd2FyZHNOb1dyYXApCit7CisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RX
S1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCld
KTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ3b3JkIHdvcmQi
IGJhc2VVUkw6bmlsXTsKKworICAgIC8vIFRoZSBkZWZhdWx0IGZpbmQgY29uZmlndXJhdGlvbiBp
cyAiZm9yd2FyZHMsIGNhc2UgaW5zZW5zaXRpdmUsIHdyYXBwaW5nIgorICAgIGF1dG8gY29uZmln
dXJhdGlvbiA9IGFkb3B0TlMoW1tXS0ZpbmRDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7Cisg
ICAgY29uZmlndXJhdGlvbi5nZXQoKS5iYWNrd2FyZHMgPSBZRVM7CisgICAgY29uZmlndXJhdGlv
bi5nZXQoKS53cmFwcyA9IE5POworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9u
UmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDowXSk7CisKKyAgICBzdGF0aWMgYm9vbCBk
b25lOworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1
bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zm
c2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3
IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3Jk
IiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5t
YXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VI
YXNTdGFydE9mZnNldDowIGVuZE9mZnNldDowXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7Cisg
ICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0g
ZmFsc2U7Cit9CisKK1RFU1QoV0tXZWJWaWV3LCBGaW5kQVBJRm9yd2FyZHNDYXNlU2Vuc2l0aXZl
KQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBp
bml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAid29yZCBXb3JkIHdvcmQiIGJhc2VVUkw6bmls
XTsKKworICAgIC8vIFRoZSBkZWZhdWx0IGZpbmQgY29uZmlndXJhdGlvbiBpcyAiZm9yd2FyZHMs
IGNhc2UgaW5zZW5zaXRpdmUsIHdyYXBwaW5nIgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFk
b3B0TlMoW1tXS0ZpbmRDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJh
dGlvbi5nZXQoKS5jYXNlU2Vuc2l0aXZlID0gWUVTOworCisgICAgc3RhdGljIGJvb2wgZG9uZTsK
KyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmln
dXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7
CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNU
X1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDo0
XSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6
VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5k
U3RyaW5nOkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21w
bGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9U
UlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2Vs
ZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDoxMCBlbmRPZmZzZXQ6MTRdKTsKKworICAgICAgICBk
b25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUp
OworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3
aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4o
V0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNo
Rm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0
YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9
XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxz
ZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJXb3JkIiB3aXRoQ29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1
bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zm
c2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKK30KZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKaW5kZXggYWIyNTAzOTYxZDA4YTI5MjBhMDZh
MzY4NmQ0M2RjZDQzMjIzMGI5ZC4uMTU0M2UyZjYxOTRlMjA1MmEzMDQ5OWVkYTgwM2U2NzY0Mzkx
NmVjNiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3
LmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTgz
LDYgKzgzLDcgQEAKIC0gKHZvaWQpY29sbGFwc2VUb1N0YXJ0OwogLSAodm9pZCljb2xsYXBzZVRv
RW5kOwogLSAodm9pZClhZGRUb1Rlc3RXaW5kb3c7CistIChCT09MKXNlbGVjdGlvblJhbmdlSGFz
U3RhcnRPZmZzZXQ6KGludClzdGFydCBlbmRPZmZzZXQ6KGludCllbmQ7CiBAZW5kCiAKICNpZiBQ
TEFURk9STShJT1NfRkFNSUxZKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3Lm1tCmluZGV4IDNiODNjOTIzYmZmOGI3NDU5OTRjNjc0NDExN2NhZTFjOTAzOTM5OTMuLjYw
M2NiNzNkYmJjNzg0MGVhZDVjNTM3NDg3ZGVhYjAwNGExYjU5NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZpZXcubW0KQEAgLTQ1OSw2ICs0NTksMjQgQEAgc3RhdGlj
IFVJQ2FsbG91dEJhciAqc3VwcHJlc3NVSUNhbGxvdXRCYXIoKQogICAgIFtzZWxmIGV2YWx1YXRl
SmF2YVNjcmlwdDpAImdldFNlbGVjdGlvbigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlvbkhh
bmRsZXI6bmlsXTsKIH0KIAorLSAoQk9PTClzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0Oihp
bnQpc3RhcnQgZW5kT2Zmc2V0OihpbnQpZW5kCit7CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9
IGZhbHNlOworICAgIF9fYmxvY2sgYm9vbCBtYXRjaGVzID0gdHJ1ZTsKKyAgICBbc2VsZiBldmFs
dWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFy
dE9mZnNldCIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgIGlmIChbKE5TTnVtYmVyICopcmVzdWx0IGludFZhbHVlXSAhPSBzdGFydCkKKyAg
ICAgICAgICAgIG1hdGNoZXMgPSBmYWxzZTsKKyAgICB9XTsKKyAgICBbc2VsZiBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJ3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5lbmRPZmZzZXQi
IGNvbXBsZXRpb25IYW5kbGVyOl4oaWQgcmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAg
ICBpZiAoWyhOU051bWJlciAqKXJlc3VsdCBpbnRWYWx1ZV0gIT0gZW5kKQorICAgICAgICAgICAg
bWF0Y2hlcyA9IGZhbHNlOworICAgICAgICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmaXNEb25lKTsKKworICAgIHJldHVybiBtYXRjaGVzOwor
fQorCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKIAogLSAodm9pZClkaWRTdGFydEZvcm1Db250
cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>383184</attachid>
            <date>2019-11-08 17:19:25 -0800</date>
            <delta_ts>2019-11-08 20:07:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203872-20191108171924.patch</filename>
            <type>text/plain</type>
            <size>51063</size>
            <attacher name="Brady Eidson">beidson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyMjYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IGQxYjcxNDJlNGEwYWViYzI0
OWJlOGE1M2E2NzYzMzAxMzU2MTljMzguLjU2NjBmMzZiNDNmNTI1NWZhOWM2MmNhYzM2OWE3ZTJj
ZmYxM2YzNWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTcgQEAKKzIwMTktMTEtMDggIEJyYWR5IEVp
ZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgorCisgICAgICAgIFdLV2ViVmlldyBGaW5kLWluLXBh
Z2UgQVBJLgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNDY5NzExMTI+IGFuZCBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzODcyCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgVGltIEhvcnRvbi4KKworICAgICAgICBDb3ZlcmVkIGJ5IEFQSSB0ZXN0cy4KKworICAgICAg
ICAtIFByb21vdGUgX2ZpbmRTdHJpbmc6CisgICAgICAgIC0gQWRkIGEgY29tcGxldGlvbiBoYW5k
bGVyIGZvciBpdC4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgIAorICAg
ICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oOiBBZGRlZC4K
KyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW06IEFk
ZGVkLgorICAgICAgICAoLVtXS0ZpbmRDb25maWd1cmF0aW9uIGluaXRdKToKKyAgICAgICAgKC1b
V0tGaW5kQ29uZmlndXJhdGlvbiBjb3B5V2l0aFpvbmU6XSk6CisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5oOiBBZGRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbTogQWRkZWQuCisgICAgICAgICgtW1dLRmluZFJlc3Vs
dCBpbml0XSk6CisgICAgICAgICgtW1dLRmluZFJlc3VsdCBfaW5pdFdpdGhNYXRjaEZvdW5kOl0p
OgorICAgICAgICAoLVtXS0ZpbmRSZXN1bHQgY29weVdpdGhab25lOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaDogQWRkZWQuCisKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAodG9GaW5kT3B0aW9ucyk6CisgICAg
ICAgICgtW1dLV2ViVmlldyBmaW5kU3RyaW5nOndpdGhDb25maWd1cmF0aW9uOmNvbXBsZXRpb25I
YW5kbGVyOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0
ZS5oOgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0
aW9uLm1tOgorCisgICAgICAgICogVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BV
cFNPQXV0aG9yaXphdGlvblNlc3Npb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbToKKworICAgICAgICAq
IFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmZpbmRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmZpbmRTdHJp
bmdDYWxsYmFjayk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisKKyAgICAgICAgKiBXZWJL
aXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRDb250cm9sbGVy
OjpmaW5kU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaDoKKworICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6ZmluZFN0cmluZyk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5t
ZXNzYWdlcy5pbjoKKwogMjAxOS0xMS0wOCAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBs
ZS5jb20+CiAKICAgICAgICAgW21hY09TXSBbaU9TXSBBZGQgbG9nZ2luZyBhbmQgdGVsZW1ldHJ5
IHRvIG1hY2ggbG9va3VwIHJ1bGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXND
b2NvYS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNDb2NvYS50eHQKaW5kZXggYjA3NzU0MmQy
M2M4Nzg5OWVmNTljMjg2YWVmYmU2NWYxOGJjZTczMS4uNjNjNGRmYTEwYWIwOTQ4YzI2MGFhMjk1
NzliMzA1YjBhMjE2NjE3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9Tb3VyY2VzQ29jb2Eu
dHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc0NvY29hLnR4dApAQCAtMjkwLDYgKzI5MCw4
IEBAIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3QubW0KIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tDb250ZW50UnVsZUxpc3RTdG9yZS5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S0NvbnRleHRNZW51RWxlbWVudEluZm8ubW0KIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tFcnJvci5t
bQorVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tCitVSVByb2Nlc3Mv
QVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZyYW1lSW5m
by5tbQogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0hUVFBDb29raWVTdG9yZS5tbQogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS01lbnVJdGVtSWRlbnRpZmllcnMubW0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLmggYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJhdGlvbi5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjBiMjAyMzlhYTkyYTdlNDIwZjllNDljY2Q1ZmMwMDU4M2I4YmI4NmIKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kQ29uZmlndXJh
dGlvbi5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisqCisqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyog
YXJlIG1ldDoKKyogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisqCisqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorKi8KKworI2ltcG9ydCA8V2ViS2l0L1dLRm91bmRhdGlvbi5oPgorCitOU19BU1NV
TUVfTk9OTlVMTF9CRUdJTgorCitXS19DTEFTU19BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSks
IGlvcyhXS19JT1NfVEJBKSkKK0BpbnRlcmZhY2UgV0tGaW5kQ29uZmlndXJhdGlvbiA6IE5TT2Jq
ZWN0IDxOU0NvcHlpbmc+CisKKy8qIEBhYnN0cmFjdCBUaGUgZGlyZWN0aW9uIHRvIHNlYXJjaCBm
cm9tIHRoZSBjdXJyZW50IHNlbGVjdGlvbgorIEBkaXNjdXNzaW9uIFRoZSBzZWFyY2ggd2lsbCBy
ZXNwZWN0IHRoZSB3cml0aW5nIGRpcmVjdGlvbiBvZiB0aGUgZG9jdW1lbnQuCisgVGhlIGluaXRp
YWwgdmFsdWUgaXMgTk8uCisqLworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgYmFja3dhcmRz
OworCisvKiBAYWJzdHJhY3QgV2hldGhlciBvciBub3QgdGhlIHNlYXJjaCBzaG91bGQgYmUgY2Fz
ZSBzZW5zaXRpdmUKKyBAZGlzY3Vzc2lvbiBUaGUgaW5pdGlhbCB2YWx1ZSBpcyBOTy4KKyovCitA
cHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBjYXNlU2Vuc2l0aXZlOworCisvKiBAYWJzdHJhY3Qg
V2hldGhlciB0aGUgc2VhcmNoIHNob3VsZCBzdGFydCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBk
b2N1bWVudCBvbmNlIGl0IHJlYWNoZXMgdGhlIGVuZAorIEBkaXNjdXNzaW9uIFRoZSBpbml0aWFs
IHZhbHVlIGlzIFlFUy4KKyovCitAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCB3cmFwczsKKwor
QGVuZAorCitOU19BU1NVTUVfTk9OTlVMTF9FTkQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9uLm1tIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZENvbmZpZ3VyYXRpb24ubW0KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDE2YmQ3MjljNWQ3MDkyNGZhNzM2NDkzODBmZTdhYWI4NDE4ZDRjZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRDb25maWd1cmF0aW9u
Lm1tCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKyNp
bXBvcnQgIldLRmluZENvbmZpZ3VyYXRpb24uaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZENv
bmZpZ3VyYXRpb24KKworLSAoaW5zdGFuY2V0eXBlKWluaXQKK3sKKyAgICBpZiAoIShzZWxmID0g
W3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9iYWNrd2FyZHMgPSBO
TzsKKyAgICBfY2FzZVNlbnNpdGl2ZSA9IE5POworICAgIF93cmFwcyA9IFlFUzsKKyAgICByZXR1
cm4gc2VsZjsKK30KKworLSAoaWQpY29weVdpdGhab25lOihOU1pvbmUgKil6b25lCit7CisgICAg
V0tGaW5kQ29uZmlndXJhdGlvbiAqZmluZENvbmZpZ3VyYXRpb24gPSBbKFdLRmluZENvbmZpZ3Vy
YXRpb24gKilbW3NlbGYgY2xhc3NdIGFsbG9jV2l0aFpvbmU6em9uZV0gaW5pdF07CisKKyAgICBm
aW5kQ29uZmlndXJhdGlvbi5iYWNrd2FyZHMgPSBfYmFja3dhcmRzOworICAgIGZpbmRDb25maWd1
cmF0aW9uLmNhc2VTZW5zaXRpdmUgPSBfY2FzZVNlbnNpdGl2ZTsKKyAgICBmaW5kQ29uZmlndXJh
dGlvbi53cmFwcyA9IF93cmFwczsKKworICAgIHJldHVybiBmaW5kQ29uZmlndXJhdGlvbjsKK30K
KworQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
RmluZFJlc3VsdC5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJl
c3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjllZTFhNGYyNGI4ODNiODYxMmE4MzYxYTJiOTRhOTIxMzM4ZDQw
NzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tGaW5kUmVzdWx0LmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyogQ29weXJpZ2h0IChDKSAyMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyoKKyogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworKiBhcmUgbWV0OgorKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyoKKyogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyogSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4KKyogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKKyogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisqLworCisjaW1wb3J0IDxXZWJLaXQvV0tGb3VuZGF0aW9uLmg+CisK
K05TX0FTU1VNRV9OT05OVUxMX0JFR0lOCisKK1dLX0NMQVNTX0FWQUlMQUJMRShtYWNvcyhXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKQorQGludGVyZmFjZSBXS0ZpbmRSZXN1bHQgOiBOU09i
amVjdCA8TlNDb3B5aW5nPgorCistIChpbnN0YW5jZXR5cGUpaW5pdCBOU19VTkFWQUlMQUJMRTsK
KworLyogQGFic3RyYWN0IFdoZXRoZXIgb3Igbm90IGEgbWF0Y2ggd2FzIGZvdW5kIGR1cmluZyB0
aGUgZmluZCBvcGVyYXRpb24gKi8KK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCByZWFkb25seSkgQk9P
TCBtYXRjaEZvdW5kOworCitAZW5kCisKK05TX0FTU1VNRV9OT05OVUxMX0VORApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLRmluZFJlc3VsdC5tbSBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMzZlZGU5ZGE1ZjUyYTA4MDA0Y2MxYzJiNmU4NTE3MTQ4MGFkZGU1ZgotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS0ZpbmRSZXN1bHQubW0K
QEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFy
ZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbXBvcnQgImNvbmZpZy5oIgorI2ltcG9y
dCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKKworQGltcGxlbWVudGF0aW9uIFdLRmluZFJlc3Vs
dAorCistIChpbnN0YW5jZXR5cGUpaW5pdAoreworICAgIHJldHVybiBuaWw7Cit9CisKKy0gKGlu
c3RhbmNldHlwZSlfaW5pdFdpdGhNYXRjaEZvdW5kOihCT09MKW1hdGNoRm91bmQKK3sKKyAgICBp
ZiAoIShzZWxmID0gW3N1cGVyIGluaXRdKSkKKyAgICAgICAgcmV0dXJuIG5pbDsKKworICAgIF9t
YXRjaEZvdW5kID0gbWF0Y2hGb3VuZDsKKworICAgIHJldHVybiBzZWxmOworfQorCistIChpZClj
b3B5V2l0aFpvbmU6KE5TWm9uZSAqKXpvbmUKK3sKKyAgICBXS0ZpbmRSZXN1bHQgKmZpbmRSZXN1
bHQgPSBbKFdLRmluZFJlc3VsdCAqKVtbc2VsZiBjbGFzc10gYWxsb2NXaXRoWm9uZTp6b25lXSBf
aW5pdFdpdGhNYXRjaEZvdW5kOl9tYXRjaEZvdW5kXTsKKworICAgIHJldHVybiBmaW5kUmVzdWx0
OworfQorCitAZW5kCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS0ZpbmRSZXN1bHRJbnRlcm5hbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMjhkN2IzNTM1YTRlNzM4
NzUwNmI3YjA4OWRiOWY5Y2U1ZDJiOWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tGaW5kUmVzdWx0SW50ZXJuYWwuaApAQCAtMCwwICsxLDMy
IEBACisvKgorKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorKgorKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorKgorKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbXBv
cnQgIldLRmluZFJlc3VsdC5oIgorCitAaW50ZXJmYWNlIFdLRmluZFJlc3VsdCAoKQorCistIChp
bnN0YW5jZXR5cGUpX2luaXRXaXRoTWF0Y2hGb3VuZDooQk9PTCltYXRjaEZvdW5kOworCitAZW5k
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3LmgKaW5kZXgg
ZGQ2Zjg3YjE2MmNjNWMwNzc5ZjllMTI1NDE1Y2U1NDlmMzMzYWI5Mi4uNDZkMzI0ZmY0NDk1YjZk
OWZhMWM2YWI5NDBmMTU1ZWFjNTIyOTgzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYlZpZXcuaApAQCAtMzUsNiArMzUsOCBAQCBOU19BU1NVTUVfTk9OTlVM
TF9CRUdJTgogCiBAY2xhc3MgV0tCYWNrRm9yd2FyZExpc3Q7CiBAY2xhc3MgV0tCYWNrRm9yd2Fy
ZExpc3RJdGVtOworQGNsYXNzIFdLRmluZENvbmZpZ3VyYXRpb247CitAY2xhc3MgV0tGaW5kUmVz
dWx0OwogQGNsYXNzIFdLTmF2aWdhdGlvbjsKIEBjbGFzcyBXS1BERkNvbmZpZ3VyYXRpb247CiBA
Y2xhc3MgV0tTbmFwc2hvdENvbmZpZ3VyYXRpb247CkBAIC0zMDMsNiArMzA1LDE2IEBAIFRoZSB1
bmlmb3JtIHR5cGUgaWRlbnRpZmllciBrVVRUeXBlV2ViQXJjaGl2ZSBjYW4gYmUgdXNlZCBnZXQg
dGhlIHJlbGF0ZWQgcGFzdGViCiAqLwogQHByb3BlcnR5IChub25hdG9taWMpIENHRmxvYXQgcGFn
ZVpvb20gV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEp
KTsKIAorLyogQGFic3RyYWN0IFNlYXJjaGVzIHRoZSBwYWdlIGNvbnRlbnRzIGZvciB0aGUgZ2l2
ZW4gc3RyaW5nLgorIEBwYXJhbSBzdHJpbmcgVGhlIHN0cmluZyB0byBzZWFyY2ggZm9yLgorIEBw
YXJhbSBjb25maWd1cmF0aW9uIEEgc2V0IG9mIG9wdGlvbnMgY29uZmlndXJpbmcgdGhlIHNlYXJj
aC4KKyBAcGFyYW0gY29tcGxldGlvbkhhbmRsZXIgQSBibG9jayB0byBpbnZva2Ugd2hlbiB0aGUg
c2VhcmNoIGNvbXBsZXRlcy4KKyBAZGlzY3Vzc2lvbiBJZiB0aGUgV0tGaW5kQ29uZmlndXJhdGlv
biBpcyBuaWwsIGFsbCBvZiB0aGUgZGVmYXVsdCBXS0ZpbmRDb25maWd1cmF0aW9uIHZhbHVlcyB3
aWxsIGJlIHVzZWQuCisgIEEgbWF0Y2ggZm91bmQgYnkgdGhlIHNlYXJjaCBpcyBzZWxlY3RlZCBh
bmQgdGhlIHBhZ2UgaXMgc2Nyb2xsZWQgdG8gcmV2ZWFsIHRoZSBzZWxlY3Rpb24uCisgIFRoZSBj
b21wbGV0aW9uIGhhbmRsZXIgaXMgY2FsbGVkIGFmdGVyIHRoZSBzZWFyY2ggY29tcGxldGVzLgor
Ki8KKy0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENvbmZpZ3VyYXRp
b246KG51bGxhYmxlIFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXIgTlNfUkVGSU5FRF9GT1JfU1dJRlQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKKwogLyogQGFic3RyYWN0IENoZWNrcyB3aGV0aGVyIG9yIG5v
dCBXS1dlYlZpZXdzIGhhbmRsZSB0aGUgZ2l2ZW4gVVJMIHNjaGVtZSBieSBkZWZhdWx0LgogIEBw
YXJhbSBzY2hlbWUgVGhlIFVSTCBzY2hlbWUgdG8gY2hlY2suCiAgKi8KQEAgLTM1MSw2ICszNjMs
MTAgQEAgVGhlIHVuaWZvcm0gdHlwZSBpZGVudGlmaWVyIGtVVFR5cGVXZWJBcmNoaXZlIGNhbiBi
ZSB1c2VkIGdldCB0aGUgcmVsYXRlZCBwYXN0ZWIKIAogQGVuZAogCitXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpKQorQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0RmluZGVy
Q2xpZW50KSA8TlNUZXh0RmluZGVyQ2xpZW50PgorQGVuZAorCiAjZW5kaWYKIAogQGludGVyZmFj
ZSBXS1dlYlZpZXcgKFdLRGVwcmVjYXRlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDBjYzFjODYwM2JlOWMyMjFkMGEwMzllMzMzNjEx
NzBmZTg5NTc4ZmQuLjUwMGRiNWM1Mjg3MWQ1MmRmMWQ4OGEwNjUyYTJmOTM1ZTJiM2M2MjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
KysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAt
NTksNiArNTksOCBAQAogI2ltcG9ydCAiV0tCYWNrRm9yd2FyZExpc3RJdGVtSW50ZXJuYWwuaCIK
ICNpbXBvcnQgIldLQnJvd3NpbmdDb250ZXh0SGFuZGxlSW50ZXJuYWwuaCIKICNpbXBvcnQgIldL
RXJyb3JJbnRlcm5hbC5oIgorI2ltcG9ydCAiV0tGaW5kQ29uZmlndXJhdGlvbi5oIgorI2ltcG9y
dCAiV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCIKICNpbXBvcnQgIldLSGlzdG9yeURlbGVnYXRlUHJp
dmF0ZS5oIgogI2ltcG9ydCAiV0tMYXlvdXRNb2RlLmgiCiAjaW1wb3J0ICJXS05TRGF0YS5oIgpA
QCAtNDc0Niw2ICs0NzQ4LDMyIEBAIEFMTE9XX0RFUFJFQ0FURURfSU1QTEVNRU5UQVRJT05TX0VO
RAogICAgIH0pOwogfQogCitpbmxpbmUgV2ViS2l0OjpGaW5kT3B0aW9ucyB0b0ZpbmRPcHRpb25z
KFdLRmluZENvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24pCit7CisgICAgdW5zaWduZWQgZmlu
ZE9wdGlvbnMgPSAwOworCisgICAgaWYgKCFjb25maWd1cmF0aW9uLmNhc2VTZW5zaXRpdmUpCisg
ICAgICAgIGZpbmRPcHRpb25zIHw9IFdlYktpdDo6RmluZE9wdGlvbnNDYXNlSW5zZW5zaXRpdmU7
CisgICAgaWYgKGNvbmZpZ3VyYXRpb24uYmFja3dhcmRzKQorICAgICAgICBmaW5kT3B0aW9ucyB8
PSBXZWJLaXQ6OkZpbmRPcHRpb25zQmFja3dhcmRzOworICAgIGlmIChjb25maWd1cmF0aW9uLndy
YXBzKQorICAgICAgICBmaW5kT3B0aW9ucyB8PSBXZWJLaXQ6OkZpbmRPcHRpb25zV3JhcEFyb3Vu
ZDsKKworICAgIHJldHVybiBzdGF0aWNfY2FzdDxXZWJLaXQ6OkZpbmRPcHRpb25zPihmaW5kT3B0
aW9ucyk7Cit9CisKKy0gKHZvaWQpZmluZFN0cmluZzooTlNTdHJpbmcgKilzdHJpbmcgd2l0aENv
bmZpZ3VyYXRpb246KFdLRmluZENvbmZpZ3VyYXRpb24gKiljb25maWd1cmF0aW9uIGNvbXBsZXRp
b25IYW5kbGVyOih2b2lkICheKShXS0ZpbmRSZXN1bHQgKnJlc3VsdCkpY29tcGxldGlvbkhhbmRs
ZXIKK3sKKyAgICBpZiAoIXN0cmluZy5sZW5ndGgpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoW1tbV0tGaW5kUmVzdWx0IGFsbG9jXSBfaW5pdFdpdGhNYXRjaEZvdW5kOk5PXSBhdXRvcmVs
ZWFzZV0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgX3BhZ2UtPmZpbmRTdHJpbmco
c3RyaW5nLCB0b0ZpbmRPcHRpb25zKGNvbmZpZ3VyYXRpb24pLCAxLCBbaGFuZGxlciA9IG1ha2VC
bG9ja1B0cihjb21wbGV0aW9uSGFuZGxlcildKGJvb2wgZm91bmQsIFdlYktpdDo6Q2FsbGJhY2tC
YXNlOjpFcnJvciBlcnJvcikgeworICAgICAgICBoYW5kbGVyKFtbW1dLRmluZFJlc3VsdCBhbGxv
Y10gX2luaXRXaXRoTWF0Y2hGb3VuZDooZXJyb3IgPT0gV2ViS2l0OjpDYWxsYmFja0Jhc2U6OkVy
cm9yOjpOb25lICYmIGZvdW5kKV0gYXV0b3JlbGVhc2VdKTsKKyAgICB9KTsKK30KKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChXS1ByaXZhdGUpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Q29uZmlndXJhdGlvbi5tbSBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCmluZGV4IDcyOTQ0ZDU4OWUxNWZjYmZmNTY5YmEwOTJhZjJiZDljYjdlYzE3NzguLjJmMGQ1
YmQ0Yjc5NGQxZDVjZTIxMjVmOWQ0NGMzY2I2OWZmY2NiYmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9uLm1tCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdDb25maWd1cmF0aW9u
Lm1tCkBAIC0zNyw2ICszNyw3IEBACiAjaW1wb3J0ICJXS1dlYlZpZXcuaCIKICNpbXBvcnQgIldL
V2ViVmlld0NvbnRlbnRQcm92aWRlclJlZ2lzdHJ5LmgiCiAjaW1wb3J0ICJXZWJLaXQySW5pdGlh
bGl6ZS5oIgorI2ltcG9ydCAiV2ViUHJlZmVyZW5jZXNEZWZhdWx0VmFsdWVzLmgiCiAjaW1wb3J0
ICJXZWJVUkxTY2hlbWVIYW5kbGVyQ29jb2EuaCIKICNpbXBvcnQgIl9XS0FwcGxpY2F0aW9uTWFu
aWZlc3RJbnRlcm5hbC5oIgogI2ltcG9ydCAiX1dLVmlzaXRlZExpbmtTdG9yZS5oIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUu
aCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgK
aW5kZXggMmQzYjllZjY1MjRmMTc2ZGI0ZDc2MTBlY2I2MThjMmZhMzdlOWVlNi4uZmQ5MTkxMDU1
ZTRjOTBhODMzNmNmZmFhOTA0YzFhZmM4Mjk2OGZhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC00NTAsMTEgKzQ1
MCw2IEBAIHR5cGVkZWYgTlNfT1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWRnZSkgewogQGlu
dGVyZmFjZSBXS1dlYlZpZXcgKCkgPFVJUmVzcG9uZGVyU3RhbmRhcmRFZGl0QWN0aW9ucz4KIEBl
bmQKIAotI2Vsc2UKLQotQGludGVyZmFjZSBXS1dlYlZpZXcgKFdLTlNUZXh0RmluZGVyQ2xpZW50
KSA8TlNUZXh0RmluZGVyQ2xpZW50PgotQGVuZAotCiAjZW5kaWYKIAogQGludGVyZmFjZSBXS1dl
YlZpZXcgKFdLVGVzdGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0Nv
Y29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24uaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXph
dGlvblNlc3Npb24uaAppbmRleCBiNjY5NGZlOTA2ZWEwYjRmODJhNTQwNjYyY2M4NTUwYjJmZTFh
NWQyLi40NTRjNjFmZmRlZmVjYzQ3NmQxNTYwYzdjNDNmNWI1ZDM0NWYyODFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1
dGhvcml6YXRpb25TZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2Ev
U09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5oCkBAIC0yOCw2ICsy
OCw3IEBACiAjaWYgSEFWRShBUFBfU1NPKQogCiAjaW5jbHVkZSAiU09BdXRob3JpemF0aW9uU2Vz
c2lvbi5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBPQkpDX0NMQVNT
IFdLU09TZWNyZXREZWxlZ2F0ZTsKIE9CSkNfQ0xBU1MgV0tXZWJWaWV3OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9Qb3BVcFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KaW5kZXggMDc2Y2ZhYTY3
NmE3NGM0ZjMzNjAxZmY2NjQ0ZGVjNWU1YjU2MWNhMS4uMGYxODAzOGRlOTg5ZTY5YTg0MzJjODVi
NzFiNmMwNGU5MzEzMDJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29j
b2EvU09BdXRob3JpemF0aW9uL1BvcFVwU09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUG9wVXBTT0F1dGhv
cml6YXRpb25TZXNzaW9uLm1tCkBAIC0zMyw2ICszMyw3IEBACiAjaW1wb3J0ICJXS1VJRGVsZWdh
dGUuaCIKICNpbXBvcnQgIldLV2ViVmlld0NvbmZpZ3VyYXRpb25Qcml2YXRlLmgiCiAjaW1wb3J0
ICJXS1dlYlZpZXdJbnRlcm5hbC5oIgorI2ltcG9ydCAiV2ViUGFnZVByb3h5LmgiCiAjaW1wb3J0
IDxXZWJDb3JlL1Jlc291cmNlUmVzcG9uc2UuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCA4ZWM4ZmFlNzRl
M2Y3OTJjMGNmNjcwODhkYmU2MjBjMzE1Y2Q4MGFmLi5mZDlkMzU0N2VmY2YxOTdhNDViZTcyODk1
MzcxMGI0ODFmOGQ1OWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5j
cHAKQEAgLTM2OTksOSArMzY5OSwyMiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFN0cmluZ01h
dGNoZXMoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsCiAgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpGaW5kU3RyaW5nTWF0Y2hlcyhzdHJpbmcs
IG9wdGlvbnMsIG1heE1hdGNoQ291bnQpLCBtX3dlYlBhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFn
ZVByb3h5OjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBvcHRp
b25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBXZWJQYWdlUHJveHk6OmZpbmRTdHJp
bmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIEZpbmRPcHRpb25zIG9wdGlvbnMsIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQgKGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYm
IGNhbGxiYWNrRnVuY3Rpb24pCiB7Ci0gICAgbV9wcm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpGaW5kU3RyaW5nKHN0cmluZywgb3B0aW9ucywgbWF4TWF0Y2hDb3VudCksIG1fd2ViUGFn
ZUlEKTsKKyAgICBPcHRpb25hbDxDYWxsYmFja0lEPiBjYWxsYmFja0lEOworICAgIGlmIChjYWxs
YmFja0Z1bmN0aW9uKQorICAgICAgICBjYWxsYmFja0lEID0gbV9jYWxsYmFja3MucHV0KFdURk1v
dmUoY2FsbGJhY2tGdW5jdGlvbiksIG1fcHJvY2Vzcy0+dGhyb3R0bGVyKCkuYmFja2dyb3VuZEFj
dGl2aXR5KCJXZWJQYWdlUHJveHk6OmZpbmRTdHJpbmciX3MpKTsKKworICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6RmluZFN0cmluZyhzdHJpbmcsIG9wdGlvbnMsIG1heE1h
dGNoQ291bnQsIGNhbGxiYWNrSUQpLCBtX3dlYlBhZ2VJRCk7Cit9CisKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpmaW5kU3RyaW5nQ2FsbGJhY2soYm9vbCBmb3VuZCwgQ2FsbGJhY2tJRCBjYWxsYmFja0lE
KQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX2NhbGxiYWNrcy50YWtlPEJvb2xDYWxsYmFjaz4o
Y2FsbGJhY2tJRCk7CisgICAgaWYgKCFjYWxsYmFjaykKKyAgICAgICAgcmV0dXJuOworCisgICAg
Y2FsbGJhY2stPnBlcmZvcm1DYWxsYmFja1dpdGhSZXR1cm5WYWx1ZShmb3VuZCk7CiB9CiAKIHZv
aWQgV2ViUGFnZVByb3h5OjpnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5kZXgp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI4NGZiOWUwZWYzOTVl
NmY2ZDkyY2I3MDQwYjVmMDVkOGFkYmJkNDUuLmM2YzM2ZjM1NDhmMzg1NzE4ZmM4NGFiYzI0MWZl
ZTA5N2UyM2JiYjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0z
MzcsNiArMzM3LDcgQEAgdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgU3RyaW5nJj4gU3Ry
aW5nQ2FsbGJhY2s7CiB0eXBlZGVmIEdlbmVyaWNDYWxsYmFjazxBUEk6OlNlcmlhbGl6ZWRTY3Jp
cHRWYWx1ZSosIGJvb2wsIGNvbnN0IFdlYkNvcmU6OkV4Y2VwdGlvbkRldGFpbHMmPiBTY3JpcHRW
YWx1ZUNhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Y29uc3QgV2ViQ29yZTo6Rm9u
dEF0dHJpYnV0ZXMmPiBGb250QXR0cmlidXRlc0NhbGxiYWNrOwogdHlwZWRlZiBHZW5lcmljQ2Fs
bGJhY2s8Y29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJj4gU2VsZWN0
aW9uQ29udGV4dENhbGxiYWNrOwordHlwZWRlZiBHZW5lcmljQ2FsbGJhY2s8Ym9vbD4gQm9vbENh
bGxiYWNrOwogCiAjaWYgSEFWRShWSVNJQklMSVRZX1BST1BBR0FUSU9OX1ZJRVcpCiB1c2luZyBM
YXllckhvc3RpbmdDb250ZXh0SUQgPSB1aW50MzJfdDsKQEAgLTEwMTksNyArMTAyMCw3IEBAIHB1
YmxpYzoKICAgICB2b2lkIHBsdWdpblpvb21GYWN0b3JEaWRDaGFuZ2UoZG91YmxlKTsKIAogICAg
IC8vIEZpbmQuCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYsIEZpbmRPcHRpb25z
LCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KTsKKyAgICB2b2lkIGZpbmRTdHJpbmcoY29uc3QgU3Ry
aW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNoQ291bnQsIEZ1bmN0aW9uPHZvaWQg
KGJvb2wsIENhbGxiYWNrQmFzZTo6RXJyb3IpPiYmID0gbnVsbHB0cik7CiAgICAgdm9pZCBmaW5k
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywgdW5zaWduZWQgbWF4TWF0
Y2hDb3VudCk7CiAgICAgdm9pZCBnZXRJbWFnZUZvckZpbmRNYXRjaChpbnQzMl90IG1hdGNoSW5k
ZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKGludDMyX3QgbWF0Y2hJbmRleCk7CkBAIC0x
MDMyLDYgKzEwMzMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0SW5kaWNhdG9yKGNvbnN0
IFdlYkNvcmU6OlRleHRJbmRpY2F0b3JEYXRhJiwgdWludDY0X3QgLyogV2ViQ29yZTo6VGV4dElu
ZGljYXRvcldpbmRvd0xpZmV0aW1lICovIGxpZmV0aW1lID0gMCAvKiBQZXJtYW5lbnQgKi8pOwog
ICAgIHZvaWQgc2V0VGV4dEluZGljYXRvckFuaW1hdGlvblByb2dyZXNzKGZsb2F0KTsKICAgICB2
b2lkIGNsZWFyVGV4dEluZGljYXRvcigpOworCisgICAgdm9pZCBmaW5kU3RyaW5nQ2FsbGJhY2so
Ym9vbCBmb3VuZCwgQ2FsbGJhY2tJRCk7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5nKGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZlY3RvcjxXZWJDb3JlOjpJbnRSZWN0PiYsIHVpbnQzMl90IG1hdGNoQ291
bnQsIGludDMyX3QgbWF0Y2hJbmRleCwgYm9vbCBkaWRXcmFwQXJvdW5kKTsKICAgICB2b2lkIGRp
ZEZhaWxUb0ZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgdm9pZCBkaWRGaW5kU3RyaW5n
TWF0Y2hlcyhjb25zdCBTdHJpbmcmLCBjb25zdCBWZWN0b3I8VmVjdG9yPFdlYkNvcmU6OkludFJl
Y3Q+PiYgbWF0Y2hSZWN0cywgaW50MzJfdCBmaXJzdEluZGV4QWZ0ZXJTZWxlY3Rpb24pOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmlu
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCmluZGV4
IDIyNjlhYTY5ZWExZmQ5ODk1Y2Q0MGI4ODMzZDU2ZmQ1ZGFmYzk1ZjkuLjVkODM5MmI5MmY2ZDE1
ZjNlMjE1YjdjYjgzYTMyNmFiN2FkZDRiNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KQEAgLTIwOSw2ICsyMDksNyBAQCBtZXNzYWdl
cyAtPiBXZWJQYWdlUHJveHkgewogICAgIE1hY2hTZW5kUmlnaHRDYWxsYmFjayhNYWNoU2VuZFJp
Z2h0IHNlbmRSaWdodCwgV2ViS2l0OjpDYWxsYmFja0lEIGNhbGxiYWNrSUQpCiAgICAgTm93UGxh
eWluZ0luZm9DYWxsYmFjayhib29sIGFjdGl2ZSwgYm9vbCByZWdpc3RlcmVkQXNOb3dQbGF5aW5n
QXBwbGljYXRpb24sIFN0cmluZyB0aXRsZSwgZG91YmxlIGR1cmF0aW9uLCBkb3VibGUgZWxhcHNl
ZFRpbWUsIHVpbnQ2NF90IHVuaXF1ZUlkZW50aWZpZXIsIFdlYktpdDo6Q2FsbGJhY2tJRCBjYWxs
YmFja0lEKQogI2VuZGlmCisgICAgRmluZFN0cmluZ0NhbGxiYWNrKGJvb2wgZm91bmQsIFdlYktp
dDo6Q2FsbGJhY2tJRCBjYWxsYmFja0lEKQogCiAgICAgUGFnZVNjYWxlRmFjdG9yRGlkQ2hhbmdl
KGRvdWJsZSBzY2FsZUZhY3RvcikKICAgICBQbHVnaW5TY2FsZUZhY3RvckRpZENoYW5nZShkb3Vi
bGUgem9vbUZhY3RvcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCmluZGV4IDg1OWM4ZmFjNDAwMGI4ZTdlMWFlN2U2MDEwMjVmYTEwNjlmYjcyMTgu
LjVlM2VhM2IzNDM5NmM3ZTBiMWY3OWMzZjZjM2NkODg2ZTA5NmIyOTEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNl
L1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtOTY1LDYgKzk2NSw5
IEBACiAJCTUxM0ZGQjhEMjAxNDU5QjAwMDI1OTZFQSAvKiBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
MTNGRkI4QjIwMTQ1OUE3MDAyNTk2RUEgLyogVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5o
ICovOyB9OwogCQk1MTNGRkI5MTIwMTQ1OUM2MDAyNTk2RUEgLyogV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUxM0ZGQjhGMjAxNDU5QzIwMDI1OTZFQSAvKiBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oICovOyB9OwogCQk1MTQxMjk5NDFDNjQyOEJCMDA1OUU3MTQgLyogV2ViSURCQ29ubmVj
dGlvblRvU2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MTQxMjk5MjFDNjQyODEwMDA1OUU3MTQgLyogV2ViSURCQ29ubmVjdGlvblRvU2VydmVy
LmggKi87IH07CisJCTUxNDg5Q0MzMjM3MERCRkEwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxNDg5Q0MxMjM3
MERBQ0MwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHQuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQdWJsaWMsICk7IH07IH07CisJCTUxNDg5Q0M3MjM3MjM3ODAwMDQ0RTY4QSAvKiBXS0Zp
bmRSZXN1bHRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTE0ODlDQzYyMzcyMzc3ODAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFs
LmggKi87IH07CisJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0
aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRB
QjlFRjIzNUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFB1YmxpYywgKTsgfTsgfTsKIAkJNTE0QkRFRDMxNkM5OEVERDAw
RTRFMjVFIC8qIFN0YXRpc3RpY3NSZXF1ZXN0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MTRCREVEMjE2Qzk4RUREMDBFNEUyNUUgLyogU3RhdGlzdGlj
c1JlcXVlc3QuaCAqLzsgfTsKIAkJNTE0RDlGNTcxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2Vz
Q29udHJvbGxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNTE0RDlGNTUxOTExOUQzNTAwMDA2M0E3IC8qIFNlcnZpY2VzQ29udHJvbGxlci5oICovOyB9
OwogCQk1MTUyNjJCQzFGQjk1MTVEMDA3MEU1NzkgLyogV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uTWVzc2FnZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDUxNTI2MkJCMUZCOTUxMzEwMDcwRTU3OSAvKiBXZWJTV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb25NZXNzYWdlcy5oICovOyB9OwpAQCAtMzM0NCw2ICszMzQ3LDExIEBACiAJCTUxNDEy
OTkyMUM2NDI4MTAwMDU5RTcxNCAvKiBXZWJJREJDb25uZWN0aW9uVG9TZXJ2ZXIuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViSURCQ29ubmVjdGlvblRvU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNDNCMjVFMUREQ0RGRDEwMDE0RkFDNiAvKiBf
V0tJY29uTG9hZGluZ0RlbGVnYXRlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IF9XS0ljb25Mb2FkaW5nRGVsZWdhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTE0M0IyNjExREREMERBMDAwMTRGQUM2IC8qIEFQSUljb25Mb2FkaW5nQ2xpZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEFQSUljb25Mb2FkaW5nQ2xpZW50Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0MxMjM3MERBQ0MwMDQ0RTY4QSAvKiBXS0Zp
bmRSZXN1bHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0tGaW5kUmVzdWx0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5Q0MyMjM3MERBQ0MwMDQ0RTY4
QSAvKiBXS0ZpbmRSZXN1bHQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS0ZpbmRSZXN1bHQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNDg5
Q0M2MjM3MjM3NzgwMDQ0RTY4QSAvKiBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRSZXN1bHRJbnRlcm5hbC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MTRBQjlFRjIzNUZBNTlCMDBFREMzOTYgLyogV0tGaW5kQ29u
ZmlndXJhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS0ZpbmRDb25m
aWd1cmF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxNEFCOUYxMjM2MEU4
M0QwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gV0tGaW5kQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTE0QkRFRDIxNkM5OEVERDAwRTRFMjVFIC8qIFN0YXRpc3RpY3NS
ZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0YXRpc3RpY3NSZXF1
ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxNEQ5RjU1MTkxMTlEMzUwMDAw
NjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU2VydmljZXNDb250cm9sbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTUxNEQ5RjU2MTkxMTlEMzUwMDAwNjNBNyAvKiBTZXJ2aWNlc0NvbnRyb2xsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJ2aWNlc0NvbnRyb2xsZXIubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC02NDQyLDYgKzY0NTAsMTEgQEAKIAkJCQkx
QUY0NTkyQzE5NDY0QjIwMDBGOUQ0QTIgLyogV0tFcnJvci5tbSAqLywKIAkJCQkxQTJEMjUyQTE5
NDY4OEZEMDA0NTM3QjAgLyogV0tFcnJvckludGVybmFsLmggKi8sCiAJCQkJMzdCNTA0NTExOUVF
RjMxMzAwQ0UyQ0Y4IC8qIFdLRXJyb3JQcml2YXRlLmggKi8sCisJCQkJNTE0QUI5RUYyMzVGQTU5
QjAwRURDMzk2IC8qIFdLRmluZENvbmZpZ3VyYXRpb24uaCAqLywKKwkJCQk1MTRBQjlGMTIzNjBF
ODNEMDBFREMzOTYgLyogV0tGaW5kQ29uZmlndXJhdGlvbi5tbSAqLywKKwkJCQk1MTQ4OUNDMTIz
NzBEQUNDMDA0NEU2OEEgLyogV0tGaW5kUmVzdWx0LmggKi8sCisJCQkJNTE0ODlDQzIyMzcwREFD
QzAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdC5tbSAqLywKKwkJCQk1MTQ4OUNDNjIzNzIzNzc4MDA0
NEU2OEEgLyogV0tGaW5kUmVzdWx0SW50ZXJuYWwuaCAqLywKIAkJCQkxQTRENjY0QTE4QTMwMzBF
MDBEODJFMjEgLyogV0tGcmFtZUluZm8uaCAqLywKIAkJCQkxQTRENjY0OTE4QTMwMzBFMDBEODJF
MjEgLyogV0tGcmFtZUluZm8ubW0gKi8sCiAJCQkJMkRGOUVFRTcxQTc4MjQ1NTAwQjZDRkJFIC8q
IFdLRnJhbWVJbmZvSW50ZXJuYWwuaCAqLywKQEAgLTEwMjI2LDcgKzEwMjM5LDEwIEBACiAJCQkJ
QkM0MDc1RkMxMjRGRjAyNzAwNjhGMjBBIC8qIFdLRXJyb3JSZWYuaCBpbiBIZWFkZXJzICovLAog
CQkJCUJDNDA3ODNEMTI1MEZBREQwMDY4RjIwQSAvKiBXS0V2ZW50LmggaW4gSGVhZGVycyAqLywK
IAkJCQlBNThCNkYwODE4RkNBNzMzMDA4Q0JBNTMgLyogV0tGaWxlVXBsb2FkUGFuZWwuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTUxNEFCOUYwMjM2MEQyQTkwMEVEQzM5NiAvKiBXS0ZpbmRDb25maWd1
cmF0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkzN0Y2MjNCODEyQTU3QjYyMDBFM0ZERjYgLyog
V0tGaW5kT3B0aW9ucy5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODlDQzMyMzcwREJGQTAwNDRF
NjhBIC8qIFdLRmluZFJlc3VsdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTE0ODlDQzcyMzcyMzc4
MDAwNDRFNjhBIC8qIFdLRmluZFJlc3VsdEludGVybmFsLmggaW4gSGVhZGVycyAqLywKIAkJCQky
RTE2QjZDRjIwMTdCN0FEMDA4OTk2RDYgLyogV0tGb2N1c2VkRm9ybUNvbnRyb2xWaWV3LmggaW4g
SGVhZGVycyAqLywKIAkJCQlFNUNCMDdEQzIwRTE2NzhGMDAyMkMxODMgLyogV0tGb3JtQ29sb3JD
b250cm9sLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNTQ4RUJEMTIxMDE1RjBFMDBCRTNDMzIgLyog
V0tGb3JtQ29sb3JQaWNrZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCmluZGV4IDA3NjJkMDBhYWI0
N2UyYzZmMzlhODA0ODcwNmQ2ZGNkNmYzNjk0MTAuLmM2Y2MzOGEzNGVhZDc3ZjFmYjZlYzM4YmQx
ODBkNzRlYmRiOTM3YTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL0ZpbmRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEZpbmRDb250
cm9sbGVyOjp1cGRhdGVGaW5kVUlBZnRlclBhZ2VTY3JvbGwoYm9vbCBmb3VuZCwgY29uc3QgU3Ry
aW5nJiBzdHJpbgogICAgICAgICBoaWRlRmluZEluZGljYXRvcigpOwogfQogCi12b2lkIEZpbmRD
b250cm9sbGVyOjpmaW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nLCBGaW5kT3B0aW9ucyBv
cHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQordm9pZCBGaW5kQ29udHJvbGxlcjo6Zmlu
ZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKIHsKICAg
ICBhdXRvKiBwbHVnaW5WaWV3ID0gV2ViUGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKG1fd2ViUGFn
ZS0+bWFpbkZyYW1lKCkpOwogCkBAIC0yNzcsNiArMjc3LDkgQEAgdm9pZCBGaW5kQ29udHJvbGxl
cjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWcKICAgICBtX3dlYlBhZ2UtPmRyYXdpbmdBcmVhKCktPmRpc3BhdGNoQWZ0ZXJFbnN1cmlu
Z1VwZGF0ZWRTY3JvbGxQb3NpdGlvbihbcHJvdGVjdGVkV2ViUGFnZSwgZm91bmQsIHN0cmluZywg
b3B0aW9ucywgbWF4TWF0Y2hDb3VudCwgZGlkV3JhcF0gKCkgewogICAgICAgICBwcm90ZWN0ZWRX
ZWJQYWdlLT5maW5kQ29udHJvbGxlcigpLnVwZGF0ZUZpbmRVSUFmdGVyUGFnZVNjcm9sbChmb3Vu
ZCwgc3RyaW5nLCBvcHRpb25zLCBtYXhNYXRjaENvdW50LCBkaWRXcmFwLCBGaW5kVUlPcmlnaW5h
dG9yOjpGaW5kU3RyaW5nKTsKICAgICB9KTsKKworICAgIGlmIChjYWxsYmFja0lEKQorICAgICAg
ICBtX3dlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RmluZFN0cmluZ0NhbGxi
YWNrKGZvdW5kLCAqY2FsbGJhY2tJRCkpOwogfQogCiB2b2lkIEZpbmRDb250cm9sbGVyOjpmaW5k
U3RyaW5nTWF0Y2hlcyhjb25zdCBTdHJpbmcmIHN0cmluZywgRmluZE9wdGlvbnMgb3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5oCmluZGV4IGIzMmQ1M2YyMjg2ZTNhNGI4NTZhYjRiNGE4
NzI2YmJiOWMwOTJmZjMuLjQ0MDU5YTFlZmMxNDVmNjJhOGQ4ZWI1NTlhNzQ4MGRmMTgzODc0ODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xs
ZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgZXhwbGljaXQgRmluZENvbnRyb2xs
ZXIoV2ViUGFnZSopOwogICAgIHZpcnR1YWwgfkZpbmRDb250cm9sbGVyKCk7CiAKLSAgICB2b2lk
IGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQpOworICAgIHZvaWQgZmluZFN0cmluZyhjb25zdCBTdHJpbmcmLCBGaW5kT3B0aW9ucywg
dW5zaWduZWQgbWF4TWF0Y2hDb3VudCwgT3B0aW9uYWw8Q2FsbGJhY2tJRD4pOwogICAgIHZvaWQg
ZmluZFN0cmluZ01hdGNoZXMoY29uc3QgU3RyaW5nJiwgRmluZE9wdGlvbnMsIHVuc2lnbmVkIG1h
eE1hdGNoQ291bnQpOwogICAgIHZvaWQgZ2V0SW1hZ2VGb3JGaW5kTWF0Y2godWludDMyX3QgbWF0
Y2hJbmRleCk7CiAgICAgdm9pZCBzZWxlY3RGaW5kTWF0Y2godWludDMyX3QgbWF0Y2hJbmRleCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNw
cCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IDgy
NDc0ODA3ODk3NTcxODQ1MGNjYTEyOWU1MGY5M2RjMmRmMDZiMmUuLjBjNTg4MDQwNDU3NTVmNTlk
OTM5Yzc5NzYxZDY4Y2QzN2Q5OWYwZmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC00MDQ3LDkgKzQwNDcsOSBAQCB2b2lkIFdlYlBhZ2U6OnJl
cGxhY2VTdHJpbmdNYXRjaGVzRnJvbUluamVjdGVkQnVuZGxlKGNvbnN0IFZlY3Rvcjx1aW50MzJf
dD4mIG1hdAogICAgIGZpbmRDb250cm9sbGVyKCkucmVwbGFjZU1hdGNoZXMobWF0Y2hJbmRpY2Vz
LCByZXBsYWNlbWVudFRleHQsIHNlbGVjdGlvbk9ubHkpOwogfQogCi12b2lkIFdlYlBhZ2U6OmZp
bmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90
IG1heE1hdGNoQ291bnQpCit2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
dHJpbmcsIHVpbnQzMl90IG9wdGlvbnMsIHVpbnQzMl90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFs
PENhbGxiYWNrSUQ+IGNhbGxiYWNrSUQpCiB7Ci0gICAgZmluZENvbnRyb2xsZXIoKS5maW5kU3Ry
aW5nKHN0cmluZywgc3RhdGljX2Nhc3Q8RmluZE9wdGlvbnM+KG9wdGlvbnMpLCBtYXhNYXRjaENv
dW50KTsKKyAgICBmaW5kQ29udHJvbGxlcigpLmZpbmRTdHJpbmcoc3RyaW5nLCBzdGF0aWNfY2Fz
dDxGaW5kT3B0aW9ucz4ob3B0aW9ucyksIG1heE1hdGNoQ291bnQsIGNhbGxiYWNrSUQpOwogfQog
CiB2b2lkIFdlYlBhZ2U6OmZpbmRTdHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYgc3RyaW5nLCB1
aW50MzJfdCBvcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGIxMDBjY2E4MzdlYmNlZDA3MDNjYjc3
MmFlZjQxY2M5NGMwNzMwZTUuLjQyNjMzZjFmMzYwOTcxZDUxZjc5ZGFhYjQ2M2FmZWM3ZDFjOWVh
NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0
NzIsNyArMTQ3Miw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFwcGx5RWRpdENvbW1hbmQoV2Vi
VW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogICAgIHZvaWQgZGlkUmVtb3ZlRWRpdENvbW1hbmQoV2Vi
VW5kb1N0ZXBJRCBjb21tYW5kSUQpOwogCi0gICAgdm9pZCBmaW5kU3RyaW5nKGNvbnN0IFN0cmlu
ZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJfdCBtYXhNYXRjaENvdW50KTsKKyAgICB2
b2lkIGZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiwgdWludDMyX3QgZmluZE9wdGlvbnMsIHVpbnQz
Ml90IG1heE1hdGNoQ291bnQsIE9wdGlvbmFsPENhbGxiYWNrSUQ+KTsKICAgICB2b2lkIGZpbmRT
dHJpbmdNYXRjaGVzKGNvbnN0IFN0cmluZyYsIHVpbnQzMl90IGZpbmRPcHRpb25zLCB1aW50MzJf
dCBtYXhNYXRjaENvdW50KTsKICAgICB2b2lkIGdldEltYWdlRm9yRmluZE1hdGNoKHVpbnQzMl90
IG1hdGNoSW5kZXgpOwogICAgIHZvaWQgc2VsZWN0RmluZE1hdGNoKHVpbnQzMl90IG1hdGNoSW5k
ZXgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KaW5kZXggMzZlM2QyODkxOTNkMDNmMWFhOTVkMmIwNmE3MWExMjZhMTMzZjAz
NS4uZGExYzc1NWY1YjMyODc1YjNhYzE0Zjg3M2MyZjI1NjdjOGQ4ZjcxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCkBA
IC0yODQsNyArMjg0LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChlbnVtOnVp
bnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKICAgICBQb3N0SW5qZWN0
ZWRCdW5kbGVNZXNzYWdlKFN0cmluZyBtZXNzYWdlTmFtZSwgV2ViS2l0OjpVc2VyRGF0YSBtZXNz
YWdlQm9keSkKIAogICAgICMgRmluZC4KLSAgICBGaW5kU3RyaW5nKFN0cmluZyBzdHJpbmcsIHVp
bnQzMl90IGZpbmRPcHRpb25zLCB1bnNpZ25lZCBtYXhNYXRjaENvdW50KQorICAgIEZpbmRTdHJp
bmcoU3RyaW5nIHN0cmluZywgdWludDMyX3QgZmluZE9wdGlvbnMsIHVuc2lnbmVkIG1heE1hdGNo
Q291bnQsIE9wdGlvbmFsPFdlYktpdDo6Q2FsbGJhY2tJRD4gY2FsbGJhY2tJRCkKICAgICBGaW5k
U3RyaW5nTWF0Y2hlcyhTdHJpbmcgc3RyaW5nLCB1aW50MzJfdCBmaW5kT3B0aW9ucywgdW5zaWdu
ZWQgbWF4TWF0Y2hDb3VudCkKICAgICBHZXRJbWFnZUZvckZpbmRNYXRjaCh1aW50MzJfdCBtYXRj
aEluZGV4KQogICAgIFNlbGVjdEZpbmRNYXRjaCh1aW50MzJfdCBtYXRjaEluZGV4KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDUzMDRlMTQxODAy
MGQ4M2Q5OGFlNDQ5NmU4ZDNlMTZmNDAyMjMzMDQuLmQ3NWMxNmU3Y2M4M2FjYjIxZmEyMmU4ZDNm
OTg3MWZmOTFmNWNiMDkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9D
aGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxOS0xMS0wOCAgQnJhZHkgRWlkc29uICA8YmVp
ZHNvbkBhcHBsZS5jb20+CisKKyAgICAgICAgV0tXZWJWaWV3IEZpbmQtaW4tcGFnZSBBUEkuCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80Njk3MTExMj4gYW5kIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDM4NzIKKworICAgICAgICBSZXZpZXdlZCBieSBUaW0gSG9y
dG9uLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9GaW5kSW5QYWdlQVBJLm1tOiBBZGRlZC4KKyAgICAgICAgKFRFU1QpOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvY29jb2EvVGVzdFdLV2ViVmlldy5oOgorICAgICAgICAqIFRlc3RXZWJLaXRB
UEkvY29jb2EvVGVzdFdLV2ViVmlldy5tbToKKyAgICAgICAgKC1bVGVzdFdLV2ViVmlldyBzZWxl
Y3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OmVuZE9mZnNldDpdKToKKwogMjAxOS0xMS0wOCAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIEZpeCBm
bGFreSB0ZXN0cyBpbiBodHRwL3Rlc3RzL2NhY2hlL2Rpc2stY2FjaGUKZGlmZiAtLWdpdCBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKaW5kZXggNTkxMzVhZWQ3NWYxNWY2MWQ5NmQ5ZGFmYTg2MWU5ZDIyMTlkYjA3MS4uNTg5
YzA4YmNiMzkyYjc1ODMyM2NiMGM4MWNiMjFhYTNiZDAzNTRlNyAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTI1Nyw2ICsyNTcsNyBAQAogCQk1MTEwRkNGQTFFMDFDREI4MDA2RjhEMEIgLyog
SURCSW5kZXhVcGdyYWRlVG9WMi5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUxMTBGQ0VGMUUwMUNCQUEwMDZGOEQwQiAvKiBJREJJbmRleFVwZ3JhZGVU
b1YyLm1tICovOyB9OwogCQk1MTIwQzgzRDFFNjc1MTI5MDAyNUIyNTAgLyogV2Vic2l0ZURhdGFT
dG9yZUN1c3RvbVBhdGhzLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNTEyMEM4M0MxRTY3NTA3OTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5tbSAqLzsgfTsKIAkJNTEyMEM4M0UxRTY3Njc4RjAwMjVCMjUwIC8qIFdlYnNpdGVE
YXRhU3RvcmVDdXN0b21QYXRocy5odG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUxMjBDODNCMUU2NzRFMzUwMDI1QjI1MCAvKiBXZWJzaXRl
RGF0YVN0b3JlQ3VzdG9tUGF0aHMuaHRtbCAqLzsgfTsKKwkJNTEyNDJDRDUyMzc0RTYyNTAwRUVE
OUMxIC8qIEZpbmRJblBhZ2VBUEkubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1MTI0MkNENDIzNzRFNjFFMDBFRUQ5QzEgLyogRmluZEluUGFnZUFQSS5t
bSAqLzsgfTsKIAkJNTEyQzRDOUUyMEVBQTQwRDAwNDk0NUVBIC8qIFJlc3BvbnNpdmVuZXNzVGlt
ZXJDcmFzaC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDUxMkM0QzlEMjBFQUE0MDUwMDQ5NDVFQSAvKiBSZXNwb25zaXZlbmVzc1RpbWVyQ3Jhc2gubW0g
Ki87IH07CiAJCTUxMzkzRTIyMTUyMzk1MkQwMDVGMzlDNSAvKiBET01XaW5kb3dFeHRlbnNpb25C
YXNpY19CdW5kbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTEzOTNFMUQxNTIzOTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2lj
X0J1bmRsZS5jcHAgKi87IH07CiAJCTUxMzk2RTFBMjIyRTUxNjAwMEE0MkZDRSAvKiBMb2FkRmls
ZVVSTC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUx
Mzk2RTE5MjIyRTRFODYwMEE0MkZDRSAvKiBMb2FkRmlsZVVSTC5tbSAqLzsgfTsKQEAgLTE3ODYs
NiArMTc4Nyw3IEBACiAJCTUxMTBGQ0YzMUUwMUNENzcwMDZGOEQwQiAvKiBJbmRleFVwZ3JhZGUu
c3FsaXRlMyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IGZpbGU7IHBhdGggPSBJbmRleFVwZ3JhZGUuc3FsaXRlMzsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTEyMEM4M0IxRTY3NEUzNTAwMjVCMjUwIC8qIFdlYnNpdGVEYXRhU3RvcmVDdXN0
b21QYXRocy5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gV2Vic2l0ZURhdGFTdG9y
ZUN1c3RvbVBhdGhzLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxMjBDODND
MUU2NzUwNzkwMDI1QjI1MCAvKiBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9tUGF0aHMubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJzaXRlRGF0YVN0b3JlQ3VzdG9t
UGF0aHMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUxMjQyQ0Q0MjM3NEU2MUUw
MEVFRDlDMSAvKiBGaW5kSW5QYWdlQVBJLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gRmluZEluUGFnZUFQSS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTEyQzRDOUQyMEVBQTQwNTAwNDk0NUVBIC8qIFJlc3BvbnNpdmVuZXNzVGltZXJDcmFzaC5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFJlc3BvbnNpdmVuZXNz
VGltZXJDcmFzaC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTEzOTNFMUQxNTIz
OTQ0QTAwNUYzOUM1IC8qIERPTVdpbmRvd0V4dGVuc2lvbkJhc2ljX0J1bmRsZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBET01XaW5kb3dFeHRlbnNpb25CYXNpY19C
dW5kbGUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MTM5M0UxRTE1MjM5NDRB
MDA1RjM5QzUgLyogRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRE9NV2luZG93RXh0ZW5zaW9uQmFzaWMuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjg1NCw2ICsyODU2LDcgQEAKIAkJCQlGNDREMDY0NjFG
Mzk1QzREMDAxQTBFMjkgLyogRWRpdG9yU3RhdGVUZXN0cy5tbSAqLywKIAkJCQlDREEyOUIyODIw
RkQyQTk5MDBGMTVDRUQgLyogRXhpdEZ1bGxzY3JlZW5PbkVudGVyUGlQLm1tICovLAogCQkJCTJE
ODEwNENCMUJFQzEzRTcwMDIwREE0NiAvKiBGaW5kSW5QYWdlLm1tICovLAorCQkJCTUxMjQyQ0Q0
MjM3NEU2MUUwMEVFRDlDMSAvKiBGaW5kSW5QYWdlQVBJLm1tICovLAogCQkJCTExODE1MzQ3MjIw
OEJBREYwMEIyQ0NEMiAvKiBGaXJzdFZpc3VhbGx5Tm9uRW1wdHlNaWxlc3RvbmUubW0gKi8sCiAJ
CQkJMkQxRkUwQUYxQUQ0NjVDMTAwNkNEOUU2IC8qIEZpeGVkTGF5b3V0U2l6ZS5tbSAqLywKIAkJ
CQkyRTkyQjhGODIxNjQ5MEVBMDA1QjY0RjAgLyogRm9udEF0dHJpYnV0ZXMubW0gKi8sCkBAIC00
NjA1LDYgKzQ2MDgsNyBAQAogCQkJCTdBMzJENzRBMUYwMjE1MTUwMDE2MkM0NCAvKiBGaWxlTW9u
aXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VGMzFBNDExQUU2MDA0NDdDNEMgLyog
RmluZC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QzgzRTBCQjFEMEE2NTAwMDBGRUJDRjMgLyog
RmluZEluUGFnZS5tbSBpbiBTb3VyY2VzICovLAorCQkJCTUxMjQyQ0Q1MjM3NEU2MjUwMEVFRDlD
MSAvKiBGaW5kSW5QYWdlQVBJLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFRjQxQTQxMUFF
NjAwNDQ3QzRDIC8qIEZpbmRNYXRjaGVzLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTFCN0ZEMjgy
MTlGNDcxMTAwNjlCMjdGIC8qIEZpcnN0TWVhbmluZ2Z1bFBhaW50TWlsZXN0b25lLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDODNFMDQwMUQwQTYzRTMwMEZFQkNGMyAvKiBGaXJzdFJlc3BvbmRl
clNjcm9sbGluZ1Bvc2l0aW9uLm1tIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2VBUEkubW0gYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0ZpbmRJblBhZ2VBUEkubW0KbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNjA0MjA1MmQxOGVjY2Y4ZDY3NzRlNDMzZTRjYTU4YzU4MDc4MmE1ZgotLS0gL2Rldi9udWxs
CisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRmluZEluUGFnZUFQ
SS5tbQpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9X
S0ZpbmRDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tGaW5kUmVzdWx0Lmg+Cisj
aW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisK
KworVEVTVChXS1dlYlZpZXcsIEZpbmRBUElGb3J3YXJkc05vTWF0Y2gpCit7CisgICAgYXV0byB3
ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNN
YWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9h
ZEhUTUxTdHJpbmc6QCJ3b3JkIHdvcmQiIGJhc2VVUkw6bmlsXTsKKworICAgIC8vIFRoZSBkZWZh
dWx0IGZpbmQgY29uZmlndXJhdGlvbiBpcyAiZm9yd2FyZHMsIGNhc2UgaW5zZW5zaXRpdmUsIHdy
YXBwaW5nIgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS0ZpbmRDb25maWd1
cmF0aW9uIGFsbG9jXSBpbml0XSk7CisKKyAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rp
b25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjBdKTsKKworICAgIHN0YXRpYyBib29s
IGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAImZvb2JhciIgd2l0aENvbmZpZ3VyYXRp
b246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJlc3VsdCAq
cmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9GQUxTRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBl
bmRPZmZzZXQ6MF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCitURVNU
KFdLV2ViVmlldywgRmluZEFQSUZvcndhcmRzV3JhcCkKK3sKKyAgICBhdXRvIHdlYlZpZXcgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAs
IDAsIDQwMCwgNDAwKV0pOworICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmlu
ZzpAIndvcmQgd29yZCIgYmFzZVVSTDpuaWxdOworCisgICAgLy8gVGhlIGRlZmF1bHQgZmluZCBj
b25maWd1cmF0aW9uIGlzICJmb3J3YXJkcywgY2FzZSBpbnNlbnNpdGl2ZSwgd3JhcHBpbmciCisg
ICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbW1dLRmluZENvbmZpZ3VyYXRpb24gYWxs
b2NdIGluaXRdKTsKKworICAgIHN0YXRpYyBib29sIGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0
cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxl
dGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJV
RShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVj
dGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6NF0pOworCisgICAgICAgIGRvbmUg
PSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cisg
ICAgZG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhD
b25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0Zp
bmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3Vu
ZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRP
ZmZzZXQ6NSBlbmRPZmZzZXQ6OV0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOwor
ICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOwor
CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZp
Z3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkg
eworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVD
VF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBlbmRPZmZzZXQ6
NF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworfQorCitURVNUKFdLV2ViVmll
dywgRmluZEFQSUZvcndhcmRzTm9XcmFwKQoreworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAw
LCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAid29y
ZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAgICAvLyBUaGUgZGVmYXVsdCBmaW5kIGNvbmZpZ3Vy
YXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGluc2Vuc2l0aXZlLCB3cmFwcGluZyIKKyAgICBhdXRv
IGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtbV0tGaW5kQ29uZmlndXJhdGlvbiBhbGxvY10gaW5p
dF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0KCkud3JhcHMgPSBOTzsKKworICAgIHN0YXRpYyBi
b29sIGRvbmU7CisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQg
KnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAg
ICAgIEVYUEVDVF9UUlVFKFt3ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6MCBl
bmRPZmZzZXQ6NF0pOworCisgICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RX
ZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgW3dl
YlZpZXcgZmluZFN0cmluZzpAIndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24u
Z2V0KCkgY29tcGxldGlvbkhhbmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAg
ICBFWFBFQ1RfVFJVRShyZXN1bHQubWF0Y2hGb3VuZCk7CisgICAgICAgIEVYUEVDVF9UUlVFKFt3
ZWJWaWV3IHNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6NSBlbmRPZmZzZXQ6OV0pOworCisg
ICAgICAgIGRvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1
bigmZG9uZSk7CisgICAgZG9uZSA9IGZhbHNlOworCisgICAgW3dlYlZpZXcgZmluZFN0cmluZzpA
IndvcmQiIHdpdGhDb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCkgY29tcGxldGlvbkhh
bmRsZXI6XihXS0ZpbmRSZXN1bHQgKnJlc3VsdCkgeworICAgICAgICBFWFBFQ1RfRkFMU0UocmVz
dWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25S
YW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjBdKTsKKworICAgICAgICBkb25lID0gdHJ1
ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRv
bmUgPSBmYWxzZTsKK30KKworVEVTVChXS1dlYlZpZXcsIEZpbmRBUElCYWNrd2FyZHNXcmFwKQor
eworICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0
V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3lu
Y2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAid29yZCB3b3JkIiBiYXNlVVJMOm5pbF07CisKKyAg
ICAvLyBUaGUgZGVmYXVsdCBmaW5kIGNvbmZpZ3VyYXRpb24gaXMgImZvcndhcmRzLCBjYXNlIGlu
c2Vuc2l0aXZlLCB3cmFwcGluZyIKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtb
V0tGaW5kQ29uZmlndXJhdGlvbiBhbGxvY10gaW5pdF0pOworICAgIGNvbmZpZ3VyYXRpb24uZ2V0
KCkuYmFja3dhcmRzID0gWUVTOworCisgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9u
UmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDowXSk7CisKKyAgICBzdGF0aWMgYm9vbCBk
b25lOworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1
bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBF
WFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zm
c2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3
IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgp
IGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQ
RUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmll
dyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKworICAgICAg
ICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRv
bmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3Jk
IiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVy
Ol4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1h
dGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhh
c1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAg
ICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBm
YWxzZTsKK30KKworVEVTVChXS1dlYlZpZXcsIEZpbmRBUElCYWNrd2FyZHNOb1dyYXApCit7Cisg
ICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRo
RnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA0MDAsIDQwMCldKTsKKyAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6QCJ3b3JkIHdvcmQiIGJhc2VVUkw6bmlsXTsKKworICAgIC8v
IFRoZSBkZWZhdWx0IGZpbmQgY29uZmlndXJhdGlvbiBpcyAiZm9yd2FyZHMsIGNhc2UgaW5zZW5z
aXRpdmUsIHdyYXBwaW5nIgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS0Zp
bmRDb25maWd1cmF0aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5i
YWNrd2FyZHMgPSBZRVM7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS53cmFwcyA9IE5POworCisg
ICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVu
ZE9mZnNldDowXSk7CisKKyAgICBzdGF0aWMgYm9vbCBkb25lOworICAgIFt3ZWJWaWV3IGZpbmRT
dHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxl
Y3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRo
Q29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tG
aW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91
bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0
T2Zmc2V0OjAgZW5kT2Zmc2V0OjRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsK
KyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsK
KworICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25m
aWd1cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQp
IHsKKyAgICAgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQ
RUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNl
dDowXSk7CisKKyAgICAgICAgZG9uZSA9IHRydWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBkb25lID0gZmFsc2U7Cit9CisKK1RFU1QoV0tXZWJW
aWV3LCBGaW5kQVBJRm9yd2FyZHNDYXNlU2Vuc2l0aXZlKQoreworICAgIGF1dG8gd2ViVmlldyA9
IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3Qo
MCwgMCwgNDAwLCA0MDApXSk7CisgICAgW3dlYlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3Ry
aW5nOkAid29yZCBXb3JkIHdvcmQiIGJhc2VVUkw6bmlsXTsKKworICAgIC8vIFRoZSBkZWZhdWx0
IGZpbmQgY29uZmlndXJhdGlvbiBpcyAiZm9yd2FyZHMsIGNhc2UgaW5zZW5zaXRpdmUsIHdyYXBw
aW5nIgorICAgIGF1dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1tXS0ZpbmRDb25maWd1cmF0
aW9uIGFsbG9jXSBpbml0XSk7CisgICAgY29uZmlndXJhdGlvbi5nZXQoKS5jYXNlU2Vuc2l0aXZl
ID0gWUVTOworCisgICAgc3RhdGljIGJvb2wgZG9uZTsKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5n
OkAid29yZCIgd2l0aENvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9u
SGFuZGxlcjpeKFdLRmluZFJlc3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJl
c3VsdC5tYXRjaEZvdW5kKTsKKyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9u
UmFuZ2VIYXNTdGFydE9mZnNldDowIGVuZE9mZnNldDo0XSk7CisKKyAgICAgICAgZG9uZSA9IHRy
dWU7CisgICAgfV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICBk
b25lID0gZmFsc2U7CisKKyAgICBbd2ViVmlldyBmaW5kU3RyaW5nOkAid29yZCIgd2l0aENvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKSBjb21wbGV0aW9uSGFuZGxlcjpeKFdLRmluZFJl
c3VsdCAqcmVzdWx0KSB7CisgICAgICAgIEVYUEVDVF9UUlVFKHJlc3VsdC5tYXRjaEZvdW5kKTsK
KyAgICAgICAgRVhQRUNUX1RSVUUoW3dlYlZpZXcgc2VsZWN0aW9uUmFuZ2VIYXNTdGFydE9mZnNl
dDoxMCBlbmRPZmZzZXQ6MTRdKTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAg
ICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKwor
ICAgIFt3ZWJWaWV3IGZpbmRTdHJpbmc6QCJ3b3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1
cmF0aW9uLmdldCgpIGNvbXBsZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsK
KyAgICAgICAgRVhQRUNUX1RSVUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1Rf
VFJVRShbd2ViVmlldyBzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjAgZW5kT2Zmc2V0OjRd
KTsKKworICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpV
dGlsOjpydW4oJmRvbmUpOworICAgIGRvbmUgPSBmYWxzZTsKKworICAgIFt3ZWJWaWV3IGZpbmRT
dHJpbmc6QCJXb3JkIiB3aXRoQ29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uLmdldCgpIGNvbXBs
ZXRpb25IYW5kbGVyOl4oV0tGaW5kUmVzdWx0ICpyZXN1bHQpIHsKKyAgICAgICAgRVhQRUNUX1RS
VUUocmVzdWx0Lm1hdGNoRm91bmQpOworICAgICAgICBFWFBFQ1RfVFJVRShbd2ViVmlldyBzZWxl
Y3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OjUgZW5kT2Zmc2V0OjldKTsKKworICAgICAgICBkb25l
ID0gdHJ1ZTsKKyAgICB9XTsKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmRvbmUpOwor
ICAgIGRvbmUgPSBmYWxzZTsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdFdLV2ViVmlldy5oIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJW
aWV3LmgKaW5kZXggYWIyNTAzOTYxZDA4YTI5MjBhMDZhMzY4NmQ0M2RjZDQzMjIzMGI5ZC4uMTU0
M2UyZjYxOTRlMjA1MmEzMDQ5OWVkYTgwM2U2NzY0MzkxNmVjNiAxMDA2NDQKLS0tIGEvVG9vbHMv
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3LmgKQEAgLTgzLDYgKzgzLDcgQEAKIC0gKHZvaWQpY29s
bGFwc2VUb1N0YXJ0OwogLSAodm9pZCljb2xsYXBzZVRvRW5kOwogLSAodm9pZClhZGRUb1Rlc3RX
aW5kb3c7CistIChCT09MKXNlbGVjdGlvblJhbmdlSGFzU3RhcnRPZmZzZXQ6KGludClzdGFydCBl
bmRPZmZzZXQ6KGludCllbmQ7CiBAZW5kCiAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQpkaWZm
IC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCmluZGV4IDNiODNjOTIzYmZm
OGI3NDU5OTRjNjc0NDExN2NhZTFjOTAzOTM5OTMuLjYwM2NiNzNkYmJjNzg0MGVhZDVjNTM3NDg3
ZGVhYjAwNGExYjU5NzAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dFdLV2ViVmlldy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3RXS1dlYlZp
ZXcubW0KQEAgLTQ1OSw2ICs0NTksMjQgQEAgc3RhdGljIFVJQ2FsbG91dEJhciAqc3VwcHJlc3NV
SUNhbGxvdXRCYXIoKQogICAgIFtzZWxmIGV2YWx1YXRlSmF2YVNjcmlwdDpAImdldFNlbGVjdGlv
bigpLmNvbGxhcHNlVG9FbmQoKSIgY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAorLSAoQk9P
TClzZWxlY3Rpb25SYW5nZUhhc1N0YXJ0T2Zmc2V0OihpbnQpc3RhcnQgZW5kT2Zmc2V0OihpbnQp
ZW5kCit7CisgICAgX19ibG9jayBib29sIGlzRG9uZSA9IGZhbHNlOworICAgIF9fYmxvY2sgYm9v
bCBtYXRjaGVzID0gdHJ1ZTsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5zdGFydE9mZnNldCIgY29tcGxldGlvbkhhbmRs
ZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7CisgICAgICAgIGlmIChbKE5TTnVtYmVy
ICopcmVzdWx0IGludFZhbHVlXSAhPSBzdGFydCkKKyAgICAgICAgICAgIG1hdGNoZXMgPSBmYWxz
ZTsKKyAgICB9XTsKKyAgICBbc2VsZiBldmFsdWF0ZUphdmFTY3JpcHQ6QCJ3aW5kb3cuZ2V0U2Vs
ZWN0aW9uKCkuZ2V0UmFuZ2VBdCgwKS5lbmRPZmZzZXQiIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICBpZiAoWyhOU051bWJlciAqKXJlc3Vs
dCBpbnRWYWx1ZV0gIT0gZW5kKQorICAgICAgICAgICAgbWF0Y2hlcyA9IGZhbHNlOworICAgICAg
ICBpc0RvbmUgPSB0cnVlOworICAgIH1dOworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigm
aXNEb25lKTsKKworICAgIHJldHVybiBtYXRjaGVzOworfQorCiAjaWYgUExBVEZPUk0oSU9TX0ZB
TUlMWSkKIAogLSAodm9pZClkaWRTdGFydEZvcm1Db250cm9sSW50ZXJhY3Rpb24K
</data>

          </attachment>
      

    </bug>

</bugzilla>