<?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>224773</bug_id>
          
          <creation_ts>2021-04-19 11:26:35 -0700</creation_ts>
          <short_desc>Support scrolling to a selected AppHighlight</short_desc>
          <delta_ts>2021-04-21 10:56:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Megan Gardner">megan_gardner</reporter>
          <assigned_to name="Megan Gardner">megan_gardner</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>mifenton</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>wenson_hsieh</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1751874</commentid>
    <comment_count>0</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-19 11:26:35 -0700</bug_when>
    <thetext>Support scrolling to a selected AppHighlight</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751880</commentid>
    <comment_count>1</comment_count>
      <attachid>426450</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-19 11:34:50 -0700</bug_when>
    <thetext>Created attachment 426450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751884</commentid>
    <comment_count>2</comment_count>
      <attachid>426450</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-19 11:45:30 -0700</bug_when>
    <thetext>Comment on attachment 426450
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:71
&gt; +    Optional&lt;AppHighlightRangeData&gt; m_unrestoreScrollHighlight;

&quot;unrestore&quot;? unrestored, maybe, like the one above?

&gt; Source/WebCore/page/Page.cpp:1594
&gt; +#if ENABLE(APP_HIGHLIGHTS)

Newline above

&gt; Source/WebCore/page/Page.cpp:1602
&gt; +        if (appHighlightStorage-&gt;hasUnrestoredHighlights() &amp;&amp; MonotonicTime::now() - appHighlightStorage-&gt;lastRangeSearchTime() &gt; 1_s) {

Why is all this code duplicated with that down below? Something is wrong with the factoring here. (also maybe the logic? what&apos;s up with this one second comparison here, after the one second timer?)

&gt; Source/WebKit/UIProcess/WebPageProxy.h:1886
&gt; +    void restoreAppHighlightsAndScrollToIndex(const Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt;&amp; highlights, const int64_t index);

Why a signed index?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7498
&gt; +            document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), ScrollToHighlight::Yes);

This will be a lot less duplicative if you shove the comparison into the last argument:

document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), i == index ? ScrollToHighlight::Yes : ScrollToHighlight::No);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751885</commentid>
    <comment_count>3</comment_count>
      <attachid>426450</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-19 11:46:29 -0700</bug_when>
    <thetext>Comment on attachment 426450
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:67
&gt; +    bool attemptHighlightRestoreAndScroll(AppHighlightRangeData&amp;, ScrollToHighlight);

Nit - maybe `attemptToRestoreHighlightAndScroll`?

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:71
&gt; +    Optional&lt;AppHighlightRangeData&gt; m_unrestoreScrollHighlight;

Nit - `m_unrestoredScrollHighlight`

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2184
&gt; +- (void)_restoreAndScrollToAppHighlight:(NSData *)highlight
&gt; +{
&gt; +#if ENABLE(APP_HIGHLIGHTS)
&gt; +    Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; buffers;
&gt; +    
&gt; +    auto sharedMemory = WebKit::SharedMemory::allocate(highlight.length);
&gt; +    if (sharedMemory) {
&gt; +        [highlight getBytes:sharedMemory-&gt;data() length:highlight.length];
&gt; +        buffers.append(*sharedMemory);
&gt; +    }
&gt; +    _page-&gt;restoreAppHighlightsAndScrollToIndex(buffers, 0);

Nit - maybe some of this code can be shared with `-_restoreAppHighlights:` via a static helper function?

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7500
&gt; +        if (i == index)
&gt; +            document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), ScrollToHighlight::Yes);
&gt; +        else
&gt; +            document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), ScrollToHighlight::No);

Nit - I think you can avoid duplication here as well by making the `ScrollToHighlight` argument a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1751898</commentid>
    <comment_count>4</comment_count>
      <attachid>426450</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-19 12:12:13 -0700</bug_when>
    <thetext>Comment on attachment 426450
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.cpp:266
&gt; +        TemporarySelectionChange selectionChange(*strongDocument, { range.value() }, temporarySelectionOptions);

Does this option work in the case where there was already a selection in the DOM prior to highlight restoration?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752068</commentid>
    <comment_count>5</comment_count>
      <attachid>426498</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-19 17:37:02 -0700</bug_when>
    <thetext>Created attachment 426498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752410</commentid>
    <comment_count>6</comment_count>
      <attachid>426498</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-20 13:50:12 -0700</bug_when>
    <thetext>Comment on attachment 426498
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:29
&gt; +

No newline here.

&gt; Source/WebCore/page/Page.cpp:1623
&gt; +#if ENABLE(APP_HIGHLIGHTS)

Oof

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2157
&gt; +static void restoreHighlight(Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; &amp;buffers, NSData* highlight)

This does no restoration, just does type conversion and adds it to a vector.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7492
&gt; +    unsigned i = 0;

I think this type and the inner type of index should match, though I don&apos;t know which is right.

&gt; Source/WebKit/WebProcess/WebPage/WebPage.cpp:7501
&gt; +            document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), ScrollToHighlight::Yes);
&gt; +        else
&gt; +            document-&gt;appHighlightStorage().restoreAndScrollToAppHighlight(SharedBuffer::create(static_cast&lt;const char*&gt;(sharedMemory-&gt;data()), sharedMemory-&gt;size()), ScrollToHighlight::No);

Multiple review comments about this code above were not applied. Intentional?

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:95
&gt; +    [webViewCreate synchronouslyLoadHTMLString:@&quot;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;Test&quot;];

&lt;div style=&apos;height: 1000px&apos;&gt;&lt;/div&gt;? Or just use lots-of-text.html like all the other tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752413</commentid>
    <comment_count>7</comment_count>
      <attachid>426498</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 14:14:05 -0700</bug_when>
    <thetext>Comment on attachment 426498
Patch

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

&gt;&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2157
&gt;&gt; +static void restoreHighlight(Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; &amp;buffers, NSData* highlight)
&gt; 
&gt; This does no restoration, just does type conversion and adds it to a vector.

Also, minor nit - `&amp;` and `*` are on the wrong sides. Perhaps a better helper method would be something along the lines of:

static Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; copyHighlightDataToSharedMemory(NSArray&lt;NSData *&gt; *highlights)
{
    …
}</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752524</commentid>
    <comment_count>8</comment_count>
      <attachid>426621</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 17:14:07 -0700</bug_when>
    <thetext>Created attachment 426621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752537</commentid>
    <comment_count>9</comment_count>
      <attachid>426625</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 17:47:23 -0700</bug_when>
    <thetext>Created attachment 426625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752546</commentid>
    <comment_count>10</comment_count>
      <attachid>426625</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 18:03:07 -0700</bug_when>
    <thetext>Comment on attachment 426625
Patch

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

&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:110
&gt; +        EXPECT_NE(0, [[webViewRestore objectByEvaluatingJavaScript:@&quot;pageYOffset&quot;] floatValue]);

Would we actually expect to scroll in this case? It seems like we&apos;re restoring highlights in a web view that is not scrollable, since the web view we&apos;re restoring highlights in just contains &quot;Test&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752602</commentid>
    <comment_count>11</comment_count>
      <attachid>426625</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 20:10:36 -0700</bug_when>
    <thetext>Comment on attachment 426625
Patch

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

&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:110
&gt;&gt; +        EXPECT_NE(0, [[webViewRestore objectByEvaluatingJavaScript:@&quot;pageYOffset&quot;] floatValue]);
&gt; 
&gt; Would we actually expect to scroll in this case? It seems like we&apos;re restoring highlights in a web view that is not scrollable, since the web view we&apos;re restoring highlights in just contains &quot;Test&quot;.

I used to have a bunch of &lt;br&gt;s but Tim said to just have a tall div instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752604</commentid>
    <comment_count>12</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-20 20:18:46 -0700</bug_when>
    <thetext>(In reply to Megan Gardner from comment #11)
&gt; Comment on attachment 426625 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=426625&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:110
&gt; &gt;&gt; +        EXPECT_NE(0, [[webViewRestore objectByEvaluatingJavaScript:@&quot;pageYOffset&quot;] floatValue]);
&gt; &gt; 
&gt; &gt; Would we actually expect to scroll in this case? It seems like we&apos;re restoring highlights in a web view that is not scrollable, since the web view we&apos;re restoring highlights in just contains &quot;Test&quot;.
&gt; 
&gt; I used to have a bunch of &lt;br&gt;s but Tim said to just have a tall div instead.

I did, but:

1) you put the text inside the div; I think you wanted to put it after, and 
2) your &quot;restore&quot; webview only has this: [webViewRestore synchronouslyLoadHTMLString:@&quot;Test&quot;];</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752606</commentid>
    <comment_count>13</comment_count>
      <attachid>426625</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 20:19:06 -0700</bug_when>
    <thetext>Comment on attachment 426625
Patch

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

&gt;&gt;&gt; Tools/TestWebKitAPI/Tests/WebKitCocoa/WKAppHighlights.mm:110
&gt;&gt;&gt; +        EXPECT_NE(0, [[webViewRestore objectByEvaluatingJavaScript:@&quot;pageYOffset&quot;] floatValue]);
&gt;&gt; 
&gt;&gt; Would we actually expect to scroll in this case? It seems like we&apos;re restoring highlights in a web view that is not scrollable, since the web view we&apos;re restoring highlights in just contains &quot;Test&quot;.
&gt; 
&gt; I used to have a bunch of &lt;br&gt;s but Tim said to just have a tall div instead.

I do agree that having a tall div element is a bit cleaner than lots of br elements. But that was on the WKWebView where we created the highlight, right? When restoring the highlight, it looks like we&apos;re restoring the highlight to an unscrollable web page…(I suppose it&apos;s not really clear to me why we expect `pageYOffset != 0` after restoration).

Also, it looks like the test is calling `-_restoreAppHighlights:` instead of `-_restoreAndScrollToAppHighlight:`. Does the former also trigger scrolling, or is it just the latter?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752622</commentid>
    <comment_count>14</comment_count>
      <attachid>426640</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 21:23:38 -0700</bug_when>
    <thetext>Created attachment 426640
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752624</commentid>
    <comment_count>15</comment_count>
      <attachid>426640</attachid>
    <who name="Wenson Hsieh">wenson_hsieh</who>
    <bug_when>2021-04-20 21:37:07 -0700</bug_when>
    <thetext>Comment on attachment 426640
Patch

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

Looking much better! A couple of minor comments.

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:63
&gt;      bool hasUnrestoredHighlights() const { return m_unrestoredHighlights.size(); }

Do we need to update this implementation to `return m_unrestoredScrollHighlight || m_unrestoredHighlights.size();`? It looks like in the case where we have an unrestored highlight that we need to scroll to, the highlight won&apos;t end up being stored in `m_unrestoredHighlights`, so this will return `false`.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2157
&gt; +static void convertAndAddHighlight(Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; &amp;buffers, NSData* highlight)

Nit - the `&amp;` and `*` are still on the wrong side (https://bugs.webkit.org/show_bug.cgi?id=224773#c7).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752625</commentid>
    <comment_count>16</comment_count>
      <attachid>426640</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-20 21:37:34 -0700</bug_when>
    <thetext>Comment on attachment 426640
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:66
&gt; +    bool attemptToRestoreHighlightAndScroll(AppHighlightRangeData&amp;, ScrollToHighlight);

Newline below here, before the members.

&gt; Source/WebCore/page/Page.cpp:1623
&gt; -#if ENABLE(APP_HIGHLIGHT)
&gt; +#if ENABLE(APP_HIGHLIGHTS)

Should make sure that there&apos;s a test that covers this code (maybe in another patch)

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:2157
&gt; +static void convertAndAddHighlight(Vector&lt;Ref&lt;WebKit::SharedMemory&gt;&gt; &amp;buffers, NSData* highlight)

star&apos;s on the wrong side</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752633</commentid>
    <comment_count>17</comment_count>
      <attachid>426647</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 22:09:13 -0700</bug_when>
    <thetext>Created attachment 426647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752637</commentid>
    <comment_count>18</comment_count>
      <attachid>426647</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2021-04-20 22:21:47 -0700</bug_when>
    <thetext>Comment on attachment 426647
Patch

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

&gt; Source/WebCore/Modules/highlight/AppHighlightStorage.h:66
&gt; +    bool attemptToRestoreHighlightAndScroll(AppHighlightRangeData&amp;, ScrollToHighlight);

still missing this newline</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752643</commentid>
    <comment_count>19</comment_count>
      <attachid>426649</attachid>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-20 23:14:03 -0700</bug_when>
    <thetext>Created attachment 426649
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752653</commentid>
    <comment_count>20</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-21 00:18:24 -0700</bug_when>
    <thetext>Committed r276347 (236825@main): &lt;https://commits.webkit.org/236825@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 426649.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1752822</commentid>
    <comment_count>21</comment_count>
    <who name="Megan Gardner">megan_gardner</who>
    <bug_when>2021-04-21 10:56:22 -0700</bug_when>
    <thetext>rdar://76166593</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426450</attachid>
            <date>2021-04-19 11:34:50 -0700</date>
            <delta_ts>2021-04-19 17:37:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210419113449.patch</filename>
            <type>text/plain</type>
            <size>27113</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MTcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTI3YWFkYTM4YjhlMmY4
YzRmYTVjM2JjNjM4OTY1N2YwZDEwZmYwMS4uMGI3OGJmZjUyZDk0OTkzYzY2MTZjMzU0ZTc3OTU3
YjVmZTZmMzZjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxp
Z2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpy
ZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGln
aGxpZ2h0U3RvcmFnZTo6YXR0ZW1wdEhpZ2hsaWdodFJlc3RvcmVBbmRTY3JvbGwpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdo
bGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVB
cHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAqIHBhZ2Uv
UGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjphcHBIaWdobGlnaHRSZXN0b3JlVGlt
ZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5n
KToKKyAgICAgICAgKiBwYWdlL1BhZ2UuaDoKKwogMjAyMS0wNC0xNiAgWmFsYW4gQnVqdGFzICA8
emFsYW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlbW92ZSByZWR1bmRhbnQgcmVuZGVyT2JqZWN0
IGluIEJyZWFraW5nQ29udGV4dDo6aGFuZGxlVGV4dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCA2NDcxNzZkMTk3ZTMx
NWJhMTUwNjlkODI1NjcyMjg4M2FlNjVhMWQwLi4wZmU1MWVjZGVhMDFiYTE5NDA0ZTQwOTFhNWI0
OTJjMzUyNzE1MzRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNC0xNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERpc2FibGUgQXBwbGljYXRpb25DYWNoZSB3
aXRoIGxpbmtlZE9uT3JBZnRlciBjaGVjawpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBmMGU0MGQyMWY4
NGYwYjkyNWNjYjBjMWY5MGZiYTIzMzg2YTdiMWNiLi43M2MwMzdjZDJjOGY5ODBkOTU3MGEwOTUw
ZjEwZGIzMzU0ZTNhOTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hs
aWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2lu
Y2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAiSFRN
TEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlnaGxpZ2h0UmVnaXN0ZXIuaCIKICNpbmNsdWRl
ICJOb2RlLmgiCkBAIC0yMjksNDQgKzIzMCw1NyBAQCB2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6
OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAgICBtX2RvY3Vt
ZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxpZ2h0
KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodChS
ZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVz
dG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyLCBT
Y3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAg
ICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1ha2VSZWZQdHIobV9k
b2N1bWVudC5nZXQoKSk7Ci0KICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFwcEhp
Z2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBIaWdobGlnaHRS
YW5nZURhdGEpCiAgICAgICAgIHJldHVybjsKIAotICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2Uo
KmFwcEhpZ2hsaWdodFJhbmdlRGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAKLSAgICBpZiAo
IXJhbmdlKQotICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdobGln
aHRSYW5nZURhdGEudmFsdWUoKSk7Ci0gICAgZWxzZQotICAgICAgICBzdHJvbmdEb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZSgqcmFuZ2UpKTsKKyAgICBpZiAoIWF0dGVtcHRIaWdobGlnaHRSZXN0b3JlQW5kU2Nyb2xsKGFw
cEhpZ2hsaWdodFJhbmdlRGF0YS52YWx1ZSgpLCBzY3JvbGwpKSB7CisgICAgICAgIGlmIChzY3Jv
bGwgPT0gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcykKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlU2Ny
b2xsSGlnaGxpZ2h0ID0gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdobGlnaHRSYW5nZURh
dGEudmFsdWUoKSk7CisgICAgfQogICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0g
TW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVz
dG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCkKK2Jvb2wgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6
YXR0ZW1wdEhpZ2hsaWdodFJlc3RvcmVBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiBo
aWdobGlnaHQsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKLSAgICBWZWN0b3I8QXBwSGln
aGxpZ2h0UmFuZ2VEYXRhPiByZW1haW5pbmdSYW5nZXM7Ci0KICAgICBpZiAoIW1fZG9jdW1lbnQp
Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGF1dG8g
c3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIAorICAg
IGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoaGlnaGxpZ2h0LCAqc3Ryb25nRG9jdW1lbnQpOworICAg
IAorICAgIGlmICghcmFuZ2UpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBzdHJv
bmdEb2N1bWVudC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGlj
UmFuZ2U6OmNyZWF0ZSgqcmFuZ2UpKTsKKyAgICAKKyAgICBpZiAoc2Nyb2xsID09IFNjcm9sbFRv
SGlnaGxpZ2h0OjpZZXMpIHsKKyAgICAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9w
dGlvbj4gdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uczsKKyAgICAgICAgdGVtcG9yYXJ5U2VsZWN0
aW9uT3B0aW9ucy5hZGQoVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24p
OworICAgICAgICBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpzdHJv
bmdEb2N1bWVudCwgeyByYW5nZS52YWx1ZSgpIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMp
OworICAgIH0KKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdl
OjpyZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMoKQoreworICAgIFZlY3RvcjxBcHBIaWdo
bGlnaHRSYW5nZURhdGE+IHJlbWFpbmluZ1JhbmdlczsKKyAgICAKICAgICBmb3IgKGF1dG8mIGhp
Z2hsaWdodCA6IG1fdW5yZXN0b3JlZEhpZ2hsaWdodHMpIHsKLSAgICAgICAgYXV0byByYW5nZSA9
IGZpbmRSYW5nZShoaWdobGlnaHQsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIAotICAgICAg
ICBpZiAoIXJhbmdlKQorICAgICAgICBpZiAoIWF0dGVtcHRIaWdobGlnaHRSZXN0b3JlQW5kU2Ny
b2xsKGhpZ2hsaWdodCwgU2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKSkKICAgICAgICAgICAgIHJlbWFp
bmluZ1Jhbmdlcy5hcHBlbmQoaGlnaGxpZ2h0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAg
c3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0
YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7CiAgICAgfQorICAgIGlmIChtX3VucmVzdG9yZVNj
cm9sbEhpZ2hsaWdodCkgeworICAgICAgICBpZiAoYXR0ZW1wdEhpZ2hsaWdodFJlc3RvcmVBbmRT
Y3JvbGwobV91bnJlc3RvcmVTY3JvbGxIaWdobGlnaHQudmFsdWUoKSwgU2Nyb2xsVG9IaWdobGln
aHQ6OlllcykpCisgICAgICAgICAgICBtX3VucmVzdG9yZVNjcm9sbEhpZ2hsaWdodC5yZXNldCgp
OworICAgIH0KKyAgICAgICAgCiAgICAgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25vdG9u
aWNUaW1lOjpub3coKTsKICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzID0gV1RGTW92ZShyZW1h
aW5pbmdSYW5nZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IDAwNzVhMDc3OTUyZjVmMjhiNGNhZTRm
YzYwMTBjM2Q1NzIxM2MxNDAuLjViMzkyMTk4YmY0MDNiMmQwNjMzNzMzY2EzNTcxOTU4YmEwOGY0
YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBI
aWdobGlnaHRTdG9yYWdlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNp
bmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKwogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJk
Lmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9u
U2V0Lmg+CkBAIC0zNyw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJM
RShBUFBfSElHSExJR0hUUykKIAotY2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOwogY2xhc3Mg
RG9jdW1lbnQ7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKQEAgLTQ3
LDYgKzQ4LDggQEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7
CiAKIGVudW0gY2xhc3MgUmVzdG9yZVdpdGhUZXh0U2VhcmNoIDogYm9vbCB7IE5vLCBZZXMgfTsK
IAorZW51bSBjbGFzcyBTY3JvbGxUb0hpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNs
YXNzIEFwcEhpZ2hsaWdodFN0b3JhZ2UgZmluYWwgOiBSZWZDb3VudGVkPEFwcEhpZ2hsaWdodFN0
b3JhZ2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTU0LDE2
ICs1NywxOCBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsK
LSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBI
aWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZv
aWQgcmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBs
YXN0UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFy
Y2g7IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0
UmFuZ2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQogICAgIGJvb2wgaGFzVW5yZXN0
b3JlZEhpZ2hsaWdodHMoKSBjb25zdCB7IHJldHVybiBtX3VucmVzdG9yZWRIaWdobGlnaHRzLnNp
emUoKTsgfQogCiBwcml2YXRlOgorICAgIGJvb2wgYXR0ZW1wdEhpZ2hsaWdodFJlc3RvcmVBbmRT
Y3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIFdl
YWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExh
c3RSYW5nZVNlYXJjaDsKICAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVz
dG9yZWRIaWdobGlnaHRzOworICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV91
bnJlc3RvcmVTY3JvbGxIaWdobGlnaHQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBiY2M4ZDI0ZGE5NTNj
ODkwNWViYjgwODFmNTFhOTBiZDU4MmNmYjgzLi41YTU3MDdkMTRhNTA1NDcyNDVhNjFjM2IxMGZj
MjY1ZWVkZjZjYzgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC02NDQsMTAgKzY0NCw5IEBACiAJCTFDQUY1NkRCMjUzMDFBQzgw
MDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2RDgyNTMwMTQ1NzAwMTdCNDcy
IC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAyMjMxRjgzRTAwNjVGQzJCIC8q
IFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVEZWxlZ2F0ZS5tbSBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxNTI1NTE0MTZGRDIzNEYw
MDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVsZWdhdGUu
bW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAvKiBTVkdUb09URkZvbnRDb252
ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAx
Q0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250Q29udmVyc2lvbi5oICovOyB9
OwotCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMkMyNjE4
NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYg
LyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERp
c3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4ODY0MTI2MTA1QkYyMDAwQzgxNkMgLyogSW5N
ZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3Qu
aCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4
RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUy
NjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsg
c2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkxQ0U4RDEyRTI2
MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8q
IERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxp
YiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRkFF
MzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICovOyB9OwogCQkxRDAwMjZBNDIz
NzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBMjIzNzRENjIzMDBDQTZD
REYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07CiAJCTFEMDAyNkFBMjM3NEY5
RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2ZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAwMjZBODIzNzRGOUQ5MDBDQTZD
REYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICovOyB9OwpAQCAtMTI2Miw3ICsx
MjYxLDcgQEAKIAkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25z
ZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRB
MjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0QTI4QUFDMTJERkI4
QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRGQjhBQzAwQUU5MjNCIC8qIE1h
dGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFGMTJERkI4QkYwMEFFOTIzQiAv
KiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggKi87IH07Ci0J
CTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVBMjU3OUNG
RkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgfTsKKwkJNDRBRTA0NUMy
NTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1
IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxi
YXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggKi87IH07
CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxOUQwRjNEMjEwRTAwNTg2Njcw
IC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRFMTkwMDY4NDc5QyAvKiBMaWJX
ZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5o
ICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC02OTU5
LDkgKzY5NTgsOSBAQAogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNw
bGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9yeURpc3BsYXlMaXN0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8q
IEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSW5NZW1vcnlEaXNwbGF5TGlz
dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyNTI2MTg1QkQ4MDBGQzNB
RUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
aXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9y
Q2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEyQjI2MTg2MTY0MDBGQzNBRUYg
LyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEaXNwbGF5TGlz
dEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkMyNjE4
NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRGlz
cGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkxQ0VDQjNB
ODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVt
ZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMU3RhdGVtZW50
QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0Iz
QUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExTTFR5cGVOYW1lci5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMTE4MTAsOCArMTE4MDksOCBAQAogCQk5NDZEMzczRDFENkNFMzFBMDA3NzA4NEYgLyogQ1NT
UGFyc2VyVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUGFyc2Vy
VG9rZW4uaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4u
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gQ1NTUGFyc2VyVG9rZW4u
Y3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2Vy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFy
c2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0
eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0eVBh
cnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTk0NkQzNzQxMUQ2RDA2MzIwMDc3MDg0RiAvKiBDU1NQcm9wZXJ0eVBh
cnNlcldvcmtlclNhZmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0g
Q1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0
eVBhcnNlcldvcmtlclNhZmUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NDZE
Mzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9D
U1NQcm9wZXJ0eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0
MjFENkQwNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5o
OyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0MzFENkNGNzg4MDA3NzA4NEYgLyogQ1NTUGFyc2Vy
SWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1BhcnNlcklkaW9t
cy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYgLyogQ1NTTWFya3VwLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU01hcmt1cC5jcHA7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNWQzNGIy
M2E3NDZkOTFhYTYxN2RmMTEwOTA3NzAxYTZlYTc0ZDJhZi4uNGM1MWE2MDMyMzMzZGFjNTJhOTk1
NjU0MTI2YzQ5YzRkYWFmODI1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjYx
LDYgKzI2MSw4IEBAIHZvaWQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24o
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIGF1dG8gb3B0aW9ucyA9IEZy
YW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwogICAgIGlmIChtX29w
dGlvbnMgJiBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OkRvTm90U2V0Rm9jdXMpCiAgICAgICAg
IG9wdGlvbnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBpZiAobV9v
cHRpb25zICYgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24pCisgICAg
ICAgIG9wdGlvbnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpSZXZlYWxTZWxlY3Rpb24pOwogICAgIG1f
ZG9jdW1lbnQtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBiZDllNTM4MmJjOWRjY2JhZmZlYzZiMzk0MjIyNGM4
ZDVlYTY2YjlhLi5mZTQ1M2NiNjMyM2Y5YTgxMzk5ZjRmNTQ1M2Q1YjgxNDkxYjU3NTI2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUGFnZS5jcHAKQEAgLTMwMyw2ICszMDMsOSBAQCBQYWdlOjpQYWdlKFBhZ2VDb25maWd1
cmF0aW9uJiYgcGFnZUNvbmZpZ3VyYXRpb24pCiAjZW5kaWYKICNpZiBFTkFCTEUoREVWSUNFX09S
SUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgICwgbV9kZXZpY2VPcmllbnRh
dGlvblVwZGF0ZVByb3ZpZGVyKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uZGV2aWNlT3JpZW50
YXRpb25VcGRhdGVQcm92aWRlcikpCisjZW5kaWYKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CisgICAgLCBtX2FwcEhpZ2hsaWdodFJlc3RvcmVUaW1lcigqdGhpcywgJlBhZ2U6OmFwcEhpZ2hs
aWdodFJlc3RvcmVUaW1lckZpcmVkLCAxX3MpCiAjZW5kaWYKICAgICAsIG1fY29yc0Rpc2FibGlu
Z1BhdHRlcm5zKFdURk1vdmUocGFnZUNvbmZpZ3VyYXRpb24uY29yc0Rpc2FibGluZ1BhdHRlcm5z
KSkKICAgICAsIG1fbG9hZHNTdWJyZXNvdXJjZXMocGFnZUNvbmZpZ3VyYXRpb24ubG9hZHNTdWJy
ZXNvdXJjZXMpCkBAIC0xNTg4LDYgKzE1OTEsMjggQEAgdm9pZCBQYWdlOjppc29sYXRlZFVwZGF0
ZVJlbmRlcmluZygpCiAgICAgdXBkYXRlUmVuZGVyaW5nKCk7CiAgICAgcmVuZGVyaW5nVXBkYXRl
Q29tcGxldGVkKCk7CiB9CisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQordm9pZCBQYWdlOjph
cHBIaWdobGlnaHRSZXN0b3JlVGltZXJGaXJlZCgpCit7CisgICAgZm9yRWFjaERvY3VtZW50KFtd
IChEb2N1bWVudCYgZG9jdW1lbnQpIHsKKyAgICAgICAgYXV0byBhcHBIaWdobGlnaHRTdG9yYWdl
ID0gZG9jdW1lbnQuYXBwSGlnaGxpZ2h0U3RvcmFnZUlmRXhpc3RzKCk7CisgICAgICAgIGlmICgh
YXBwSGlnaGxpZ2h0U3RvcmFnZSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgCisgICAg
ICAgIGlmIChhcHBIaWdobGlnaHRTdG9yYWdlLT5oYXNVbnJlc3RvcmVkSGlnaGxpZ2h0cygpICYm
IE1vbm90b25pY1RpbWU6Om5vdygpIC0gYXBwSGlnaGxpZ2h0U3RvcmFnZS0+bGFzdFJhbmdlU2Vh
cmNoVGltZSgpID4gMV9zKSB7CisgICAgICAgICAgICBhcHBIaWdobGlnaHRTdG9yYWdlLT5yZXNl
dExhc3RSYW5nZVNlYXJjaFRpbWUoKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmV2ZW50TG9vcCgp
LnF1ZXVlVGFzayhUYXNrU291cmNlOjpJbnRlcm5hbEFzeW5jVGFzaywgW3dlYWtEb2N1bWVudCA9
IG1ha2VXZWFrUHRyKGRvY3VtZW50KV0geworICAgICAgICAgICAgICAgIGF1dG8gZG9jdW1lbnQg
PSBtYWtlUmVmUHRyKHdlYWtEb2N1bWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgaWYgKCFk
b2N1bWVudCkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgICAgICAgICAg
aWYgKGF1dG8qIGFwcEhpZ2hsaWdodFN0b3JhZ2UgPSBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3Rv
cmFnZUlmRXhpc3RzKCkpCisgICAgICAgICAgICAgICAgICAgIGFwcEhpZ2hsaWdodFN0b3JhZ2Ut
PnJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOworICAgICAgICAgICAgfSk7CisgICAg
ICAgIH0KKyAgICB9KTsKK30KKyNlbmRpZgogCiB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5k
ZXJpbmcoKQogewpAQCAtMTYzNSw3ICsxNjYwLDggQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRl
UmVuZGVyaW5nKCkKICAgICAgICAgICAgICAgICBpZiAoYXV0byogYXBwSGlnaGxpZ2h0U3RvcmFn
ZSA9IGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlSWZFeGlzdHMoKSkKICAgICAgICAgICAg
ICAgICAgICAgYXBwSGlnaGxpZ2h0U3RvcmFnZS0+cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGln
aHRzKCk7CiAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAg
ICAgICAgIG1fYXBwSGlnaGxpZ2h0UmVzdG9yZVRpbWVyLnJlc2V0KCk7CiAgICAgfSk7CiAjZW5k
aWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmggYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2UuaAppbmRleCA5MTAwMDMxNmU1MzQ0YmMzYWY3YmMzZTZmMmRiMjBkOGRm
ZWQyZDZlLi5iZTI5NTVmMWJlZGVhY2YxOTllNDg3OWI4OTUzNThmNDYzZTAzYTlmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2UuaApAQCAtODkwLDYgKzg5MCwxMCBAQCBwcml2YXRlOgogCiAgICAgV2hlZWxFdmVudFRl
c3RNb25pdG9yJiBlbnN1cmVXaGVlbEV2ZW50VGVzdE1vbml0b3IoKTsKIAorI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKKyAgICB2b2lkIGFwcEhpZ2hsaWdodFJlc3RvcmVUaW1lckZpcmVkKCk7
CisjZW5kaWYKKyAgICAKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8Q2hyb21lPiBtX2Nocm9t
ZTsKICAgICBjb25zdCBzdGQ6OnVuaXF1ZV9wdHI8RHJhZ0NhcmV0Q29udHJvbGxlcj4gbV9kcmFn
Q2FyZXRDb250cm9sbGVyOwogCkBAIC0xMTM4LDYgKzExNDIsMTAgQEAgcHJpdmF0ZToKICNpZiBF
TkFCTEUoREVWSUNFX09SSUVOVEFUSU9OKSAmJiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIFJl
ZlB0cjxEZXZpY2VPcmllbnRhdGlvblVwZGF0ZVByb3ZpZGVyPiBtX2RldmljZU9yaWVudGF0aW9u
VXBkYXRlUHJvdmlkZXI7CiAjZW5kaWYKKyAgICAKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CisgICAgRGVmZXJyYWJsZU9uZVNob3RUaW1lciBtX2FwcEhpZ2hsaWdodFJlc3RvcmVUaW1lcjsK
KyNlbmRpZgogCiAgICAgVmVjdG9yPFVzZXJDb250ZW50VVJMUGF0dGVybj4gbV9jb3JzRGlzYWJs
aW5nUGF0dGVybnM7CiAgICAgVmVjdG9yPFVzZXJTdHlsZVNoZWV0PiBtX3VzZXJTdHlsZVNoZWV0
c1BlbmRpbmdJbmplY3Rpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQppbmRleCA2ZGY4YTYwOTM3NWIyMjc1Yjg5ODIyMTQ5OTg5ZGJmYTk0YTky
ZWU4Li41MGFlNTA4MzVhMzUwMDAxMjViNjQzZmRjNjY4NzA3ZGJiMTk3MDNkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxNjUsNyAr
MjE2NSwyMyBAQCAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEg
Kj4gKiloaWdobGlnaHRzCiAgICAgICAgICAgICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5
KTsKICAgICAgICAgfQogICAgIH0KLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVm
ZmVycyk7CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChi
dWZmZXJzLCAtMSk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHRzKTsKKyNlbmRp
ZgorfQorCistICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAq
KWhpZ2hsaWdodAoreworI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKyAgICBWZWN0b3I8UmVm
PFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKKyAgICAKKyAgICBhdXRvIHNoYXJlZE1l
bW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShoaWdobGlnaHQubGVuZ3RoKTsK
KyAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAgICAgIFtoaWdobGlnaHQgZ2V0Qnl0ZXM6c2hh
cmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5ndGhdOworICAgICAgICBidWZm
ZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKKyAgICB9CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBI
aWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCAwKTsKICNlbHNlCiAgICAgVU5VU0VE
X1BBUkFNKGhpZ2hsaWdodHMpOwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAppbmRleCA3NDBlMDZjYjIzNTBkMDZm
OTFjMjEzY2VmZDY3OWFkNmYwN2Q1OWRjLi41NWQwMTlkZWFmYjJkMmJiYTQzNzRkNjM1MmZlNjcz
NTViYjFmNTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2Nv
YS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2Nyw3ICszNjcsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0
eS4KIC0gKHZvaWQpX2RpZERpc2FibGVCcm93c2VyRXh0ZW5zaW9uczooTlNTZXQ8TlNTdHJpbmcg
Kj4gKilleHRlbnNpb25JRHMgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0
QXBwSGlnaGxpZ2h0RGVsZWdhdGU6KSBpZCA8X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+IF9hcHBI
aWdobGlnaHREZWxlZ2F0ZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNE
YXRhICo+ICopZGF0YSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRh
ICo+ICopaGlnaGxpZ2h0cyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3Mo
V0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihO
U0RhdGEgKiloaWdobGlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9z
KFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2FkZEFwcEhpZ2hsaWdodCBXS19BUElfQVZBSUxBQkxF
KG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiAvLyBGSVhNRTogUmVtb3Zl
IG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29sb3JdYCBTUEkgPHJkYXI6Ly83NjY2MjY0ND4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29h
Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0K
aW5kZXggODNmOWQ2NWM5ZTA2YTZlZjU1YTNmNTQzYjEzOThiNjQwMWM0ZjdmYy4uZGIwOGIxZTk1
NzI1NjlkMGU4MGRkYmQyYTY0MTMxZTU3ZGUxMzE5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KQEAgLTU1OSw3ICs1NTksNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdl
YkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySAogICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNy
ZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShjcmVhdGVOZXdHcm91cCwgcmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHMoY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cykKK3ZvaWQg
V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3Qg
VmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cywgY29uc3QgaW50NjRfdCBpbmRl
eCkKIHsKICAgICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAg
LTU3Myw3ICs1NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMo
Y29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZwogICAgICAgICBtZW1vcnlI
YW5kbGVzLmFwcGVuZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwg
aGlnaGxpZ2h0LT5zaXplKCkgfSk7CiAgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFn
ZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHMoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSkpOworICAgIHNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRl
eChXVEZNb3ZlKG1lbW9yeUhhbmRsZXMpLCBpbmRleCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggNjhhM2VhYmVlNDE5M2RkYjkyZTY2YmQw
OGZlYWRhNzlkYjZlNjYyZi4uYjg1MjMwZWQ0YmJiYzFjNWU2NjEwZDNkZjQyOTU1NmMzYmZiYzAy
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4ODMsNyArMTg4
Myw3IEBAIHB1YmxpYzoKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgdm9pZCBjcmVh
dGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JI
aWdobGlnaHQsIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHApOwogICAg
IHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0Jik7Ci0g
ICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hh
cmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNB
bmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYg
aGlnaGxpZ2h0cywgY29uc3QgaW50NjRfdCBpbmRleCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShN
RURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCmluZGV4IDE0YjEwOWM5ZDA1ODQzZDY4NjRiZjNlMGM1NDlkYWQ2ZTI4NGIzOTMuLjBlZTBl
MzM2M2QzOTZjNzczYTU5ODNhMjY1MWUzMjRmOTIzYzE1MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDg1LDE1ICs3NDg1LDIwIEBAIGJv
b2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFn
ZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlPiYmIG1lbW9yeUhhbmRsZXMpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYg
bWVtb3J5SGFuZGxlcywgY29uc3QgaW50NjRfdCBpbmRleCkKIHsKICAgICBhdXRvIGRvY3VtZW50
ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFt
ZSgpLmRvY3VtZW50KCkpOwogCisgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yIChjb25zdCBh
dXRvJiBpcGNIYW5kbGUgOiBtZW1vcnlIYW5kbGVzKSB7CiAgICAgICAgIGF1dG8gc2hhcmVkTWVt
b3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQ
cm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQogICAgICAg
ICAgICAgY29udGludWU7Ci0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCku
cmVzdG9yZUFwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSkpOwor
ICAgICAgICBpZiAoaSA9PSBpbmRleCkKKyAgICAgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGln
aHRTdG9yYWdlKCkucmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6
Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNo
YXJlZE1lbW9yeS0+c2l6ZSgpKSwgU2Nyb2xsVG9IaWdobGlnaHQ6Olllcyk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwg
U2Nyb2xsVG9IaWdobGlnaHQ6Ok5vKTsKKyAgICAgICAgaSsrOwogICAgIH0KIH0KICNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IGFlYjI1ZGFi
ODQyMDY4NGE5NTAyMzg2YWJmODNhZTZiZTM4Y2U5ODYuLjQ3YzQ4OTY1YzMxMGFkMjE5MTVjOGQ3
YTc2NTk2MjkyYzJjN2U4ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKQEAgLTE0MTMsNyArMTQxMyw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpIaWdo
bGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIGhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAoKSBjb25zdCB7IHJldHVybiBtX2hpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7IH0K
IAogICAgIGJvb2wgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNy
ZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwKTsKLSAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxT
aGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJik7CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0
c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYm
LCBjb25zdCBpbnQ2NF90IGluZGV4KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVs
RXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDExNjQ4Yjk2YTU0YzE0ZjBiNzM3ZmNj
MWVhM2VlMDQ5MmQ1Y2NkNzQuLmQ4NWI1YWRmYzRiOGVjOWE4MDk5ZGRhYjM2ZTMwZmUzNzZiZjhi
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
bWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgpAQCAtNjI4LDcgKzYyOCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGlu
Z0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBl
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdo
dCBjcmVhdGVOZXdHcm91cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmln
aW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0
b3I8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKKyAgICBS
ZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVk
TWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIGludDY0X3QgaW5kZXgpCiAjZW5kaWYK
IAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVl
bEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426498</attachid>
            <date>2021-04-19 17:37:02 -0700</date>
            <delta_ts>2021-04-20 17:14:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210419173701.patch</filename>
            <type>text/plain</type>
            <size>29622</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY2OWU3YTAyYmRkMWFj
ZDU4MGE3YTRjY2Y3ZDQwNTVjYmY5Yjg1Ni4uMDk0NmYwODRhM2M4NDFjZGMzNjg3M2M2NDFjNDA4
NTQ3Y2RlYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEFwcEhpZ2hsaWdodHM6OkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwKKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVu
cmVzdG9yZWRBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMS0wNC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRmxvYXRRdWFkOjppc0VtcHR5KCkgdG8g
Ym91bmRpbmdCb3hJc0VtcHR5KCkgYW5kIHJlaW1wbGVtZW50IGlzRW1wdHkoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBiNWYxMjVmZWU5ZTgwMzRkNGYxYmFiOTA4ZTM5NDM4NzU0MzdjOTgyLi4wYWZiOTU5ZDlmNmI2
OTU3MzA3NGE0NTNiZjNhNzg2MTM5YWFmOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIxLTA0LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VwcG9ydCBzY3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChyZXN0b3JlSGlnaGxpZ2h0KToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW90aW9uTWFyaydzIENhbnZhcy1BcmNzIHN1YnRlc3QgaXMgYnJva2VuIGlmIHRoZSBH
UFVQcm9jZXNzIGlzIG5vdCB5ZXQgcnVubmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBmMGU0MGQy
MWY4NGYwYjkyNWNjYjBjMWY5MGZiYTIzMzg2YTdiMWNiLi5hYWY5NjEzODljZTE5MzZmY2U2YzVh
ZmQyNzc3OGJiY2Y1YTY2YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlnaGxpZ2h0UmVnaXN0ZXIuaCIKICNpbmNs
dWRlICJOb2RlLmgiCkBAIC0yMjksNDQgKzIzMCw1NyBAQCB2b2lkIEFwcEhpZ2hsaWdodFN0b3Jh
Z2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAgICBtX2Rv
Y3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxp
Z2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdo
dChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5nZXQoKSk7Ci0KICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBIaWdobGln
aHRSYW5nZURhdGEpCiAgICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFu
Z2UoKmFwcEhpZ2hsaWdodFJhbmdlRGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKICAgICAKLSAgICBp
ZiAoIXJhbmdlKQotICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdo
bGlnaHRSYW5nZURhdGEudmFsdWUoKSk7Ci0gICAgZWxzZQotICAgICAgICBzdHJvbmdEb2N1bWVu
dC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNy
ZWF0ZSgqcmFuZ2UpKTsKKyAgICBpZiAoIWF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3Jv
bGwoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCksIHNjcm9sbCkpIHsKKyAgICAgICAgaWYg
KHNjcm9sbCA9PSBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzKQorICAgICAgICAgICAgbV91bnJlc3Rv
cmVkU2Nyb2xsSGlnaGxpZ2h0ID0gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdobGlnaHRS
YW5nZURhdGEudmFsdWUoKSk7CisgICAgfQogICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2Vh
cmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCkKK2Jvb2wgQXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6YXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChBcHBIaWdobGlnaHRSYW5n
ZURhdGEmIGhpZ2hsaWdodCwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewotICAgIFZlY3Rv
cjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlbWFpbmluZ1JhbmdlczsKLQogICAgIGlmICghbV9k
b2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5nZXQoKSk7CiAg
ICAgCisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShoaWdobGlnaHQsICpzdHJvbmdEb2N1bWVu
dCk7CisgICAgCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdo
dChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOworICAgIAorICAgIGlmIChzY3JvbGwgPT0g
U2Nyb2xsVG9IaWdobGlnaHQ6OlllcykgeworICAgICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uPiB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zOworICAgICAgICB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OlJldmVhbFNl
bGVjdGlvbik7CisgICAgICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxlY3Rpb25DaGFu
Z2UoKnN0cm9uZ0RvY3VtZW50LCB7IHJhbmdlLnZhbHVlKCkgfSwgdGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9ucyk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpCit7CisgICAgVmVjdG9y
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gcmVtYWluaW5nUmFuZ2VzOworICAgIAogICAgIGZvciAo
YXV0byYgaGlnaGxpZ2h0IDogbV91bnJlc3RvcmVkSGlnaGxpZ2h0cykgewotICAgICAgICBhdXRv
IHJhbmdlID0gZmluZFJhbmdlKGhpZ2hsaWdodCwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICghcmFuZ2UpCisgICAgICAgIGlmICghYXR0ZW1wdFRvUmVzdG9yZUhpZ2hs
aWdodEFuZFNjcm9sbChoaWdobGlnaHQsIFNjcm9sbFRvSGlnaGxpZ2h0OjpObykpCiAgICAgICAg
ICAgICByZW1haW5pbmdSYW5nZXMuYXBwZW5kKGhpZ2hsaWdodCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhp
Z2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwogICAgIH0KKyAgICBpZiAobV91
bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0KSB7CisgICAgICAgIGlmIChhdHRlbXB0VG9SZXN0b3Jl
SGlnaGxpZ2h0QW5kU2Nyb2xsKG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodC52YWx1ZSgpLCBT
Y3JvbGxUb0hpZ2hsaWdodDo6WWVzKSkKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZFNjcm9sbEhp
Z2hsaWdodC5yZXNldCgpOworICAgIH0KKyAgICAgICAgCiAgICAgbV90aW1lQXRMYXN0UmFuZ2VT
ZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRz
ID0gV1RGTW92ZShyZW1haW5pbmdSYW5nZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IDAwNzVhMDc3
OTUyZjVmMjhiNGNhZTRmYzYwMTBjM2Q1NzIxM2MxNDAuLmY1OWE2MDAyYzZhNTg4ZTAyMTgxNzdj
YThlMzVhNTlkYjY5MDJkZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTI1LDYgKzI1LDggQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKKwogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01vbm90b25pY1RpbWUuaD4KICNpbmNs
dWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNyw3ICszOSw2IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAotY2xhc3MgQXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFyZWRCdWZmZXI7CiBjbGFzcyBTdGF0
aWNSYW5nZTsKQEAgLTQ3LDYgKzQ4LDggQEAgZW51bSBjbGFzcyBDcmVhdGVOZXdHcm91cEZvckhp
Z2hsaWdodCA6IGJvb2w7CiAKIGVudW0gY2xhc3MgUmVzdG9yZVdpdGhUZXh0U2VhcmNoIDogYm9v
bCB7IE5vLCBZZXMgfTsKIAorZW51bSBjbGFzcyBTY3JvbGxUb0hpZ2hsaWdodCA6IGJvb2wgeyBO
bywgWWVzIH07CisKIGNsYXNzIEFwcEhpZ2hsaWdodFN0b3JhZ2UgZmluYWwgOiBSZWZDb3VudGVk
PEFwcEhpZ2hsaWdodFN0b3JhZ2U+IHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1
YmxpYzoKQEAgLTU0LDE2ICs1NywxOCBAQCBwdWJsaWM6CiAgICAgfkFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0
YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBcHBIaWdobGln
aHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3Jl
QW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiwgU2Nyb2xsVG9IaWdo
bGlnaHQpOwogICAgIHZvaWQgcmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCk7CiAgICAg
TW9ub3RvbmljVGltZSBsYXN0UmFuZ2VTZWFyY2hUaW1lKCkgY29uc3QgeyByZXR1cm4gbV90aW1l
QXRMYXN0UmFuZ2VTZWFyY2g7IH0KICAgICB2b2lkIHJlc2V0TGFzdFJhbmdlU2VhcmNoVGltZSgp
IHsgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsgfQogICAg
IGJvb2wgaGFzVW5yZXN0b3JlZEhpZ2hsaWdodHMoKSBjb25zdCB7IHJldHVybiBtX3VucmVzdG9y
ZWRIaWdobGlnaHRzLnNpemUoKTsgfQogCiBwcml2YXRlOgorICAgIGJvb2wgYXR0ZW1wdFRvUmVz
dG9yZUhpZ2hsaWdodEFuZFNjcm9sbChBcHBIaWdobGlnaHRSYW5nZURhdGEmLCBTY3JvbGxUb0hp
Z2hsaWdodCk7CiAgICAgV2Vha1B0cjxEb2N1bWVudD4gbV9kb2N1bWVudDsKICAgICBNb25vdG9u
aWNUaW1lIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoOwogICAgIFZlY3RvcjxBcHBIaWdobGlnaHRS
YW5nZURhdGE+IG1fdW5yZXN0b3JlZEhpZ2hsaWdodHM7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQ7CiB9OwogCiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCBjMjkyNTRkZDYyNWQ1OTNhZjI1YzEyNGRmNWQ4MmU3OTFmZThiOTk4Li43MTQxYmEzN2Y3
M2M3N2M1NGY4OTMzZjUzMjNkYTI1ZTRlOWQxNDgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC02NDQsMTAgKzY0NCw5IEBACiAJ
CTFDQUY1NkRCMjUzMDFBQzgwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNBRjU2
RDgyNTMwMTQ1NzAwMTdCNDcyIC8qIERpc3BsYXlMaXN0RHJhd0dseXBoc1JlY29yZGVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNDRDgxNTAy
MjMxRjgzRTAwNjVGQzJCIC8qIFdlYkNvcmVSZXNvdXJjZUhhbmRsZUFzT3BlcmF0aW9uUXVldWVE
ZWxlZ2F0ZS5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IEUxNTI1NTE0MTZGRDIzNEYwMDNEN0FEQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJh
dGlvblF1ZXVlRGVsZWdhdGUubW0gKi87IH07CiAJCTFDQ0RGNUJFMTk5MDMzMjQwMEJDRUJBRCAv
KiBTVkdUb09URkZvbnRDb252ZXJzaW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0NERjVCQzE5OTAzMzI0MDBCQ0VCQUQgLyogU1ZHVG9PVEZGb250
Q29udmVyc2lvbi5oICovOyB9OwotCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxh
eUxpc3RJdGVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAq
Lzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkxQ0U4RDEy
NzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMjUyNjE4
NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0U4ODY0MTI2MTA1
QkYyMDAwQzgxNkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFODg2M0YyNjEwNUE1RjAwMEM4MTZDIC8qIElu
TWVtb3J5RGlzcGxheUxpc3QuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwogCQkxQ0U4RDEyNzI2MTg1QzBFMDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVt
QnVmZmVySWRlbnRpZmllci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMUNFOEQxMjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZl
cklkZW50aWZpZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQkxQ0U4RDEyRTI2MTg2MUM0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNFOEQxMkMy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkxQ0ZBRTMyMzBBNkQ2QTNGMDAzMjU5
M0QgLyogbGlib2JqYy5keWxpYiBpbiBGcmFtZXdvcmtzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDFDRkFFMzIyMEE2RDZBM0YwMDMyNTkzRCAvKiBsaWJvYmpjLmR5bGliICov
OyB9OwogCQkxRDAwMjZBNDIzNzRENjI0MDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2lu
ZG93LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAw
MjZBMjIzNzRENjIzMDBDQTZDREYgLyogSlNQaWN0dXJlSW5QaWN0dXJlV2luZG93LmggKi87IH07
CiAJCTFEMDAyNkFBMjM3NEY5RUEwMENBNkNERiAvKiBKU0VudGVyUGljdHVyZUluUGljdHVyZUV2
ZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAxRDAw
MjZBODIzNzRGOUQ5MDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVudC5oICov
OyB9OwpAQCAtMTI2Miw3ICsxMjYxLDcgQEAKIAkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8q
IFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNw
b25zZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRG
QjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFG
MTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhN
TE5hbWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGln
aHRSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAq
LzsgfTsKKwkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBRTA0
NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJh
clRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkx
OUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRF
MTkwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGli
V2ViUlRDRW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC02OTU5LDkgKzY5NTgsOSBAQAogCQkxQ0U4ODYzRTI2MTA1QTVGMDAwQzgx
NkMgLyogSW5NZW1vcnlEaXNwbGF5TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbk1lbW9y
eURpc3BsYXlMaXN0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFODg2M0Yy
NjEwNUE1RjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
SW5NZW1vcnlEaXNwbGF5TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4
RDEyNTI2MTg1QkQ4MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTFDRUNCM0E4MjFGMkI2NzMwMEY0NDU0MiAvKiBXSExT
TFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFN0YXRlbWVu
dEJlaGF2aW9yQ2hlY2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0U4RDEy
QjI2MTg2MTY0MDBGQzNBRUYgLyogRGlzcGxheUxpc3RJdGVyYXRvci5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBEaXNwbGF5TGlzdEl0ZXJhdG9yLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMUNFOEQxMkMyNjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xTdGF0ZW1lbnRCZWhh
dmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRCZWhhdmlvckNoZWNr
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFQ0IzQTkyMUYyQjY3MzAwRjQ0
NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJMUNFQ0IzQUYyMUYyQjk4NDAwRjQ0NTQyIC8qIFdITFNMRnVuY3Rpb25Xcml0
ZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV0hMU0xGdW5jdGlvbldyaXRlci5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0IwMjFGMkI5ODUwMEY0NDU0MiAvKiBXSExT
TFR5cGVOYW1lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXSExTTFR5cGVOYW1lci5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMTE4MTEsOCArMTE4MTAsOCBAQAogCQk5NDZEMzczRDFENkNF
MzFBMDA3NzA4NEYgLyogQ1NTUGFyc2VyVG9rZW4uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBuYW1lID0gQ1NTUGFyc2VyVG9rZW4uaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzczRTFENkNFMzFBMDA3NzA4NEYg
LyogQ1NTUGFyc2VyVG9rZW4uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1l
ID0gQ1NTUGFyc2VyVG9rZW4uY3BwOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlclRva2VuLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3NDExRDZDRjYzMjAwNzcwODRGIC8q
IENTU1Byb3BlcnR5UGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFt
ZSA9IENTU1Byb3BlcnR5UGFyc2VyLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNl
ci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTk0NkQzNzQyMUQ2Q0Y2MzIwMDc3
MDg0RiAvKiBDU1NQcm9wZXJ0eVBhcnNlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBDU1NQcm9wZXJ0eVBhcnNlci5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzQxMUQ2RDA2MzIwMDc3MDg0
RiAvKiBDU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDsgcGF0aCA9
IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNhZmUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJz
ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gQ1NTUHJvcGVydHlQYXJzZXIu
aDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk5NDZEMzc0MjFENkQwNjMyMDA3NzA4NEYgLyogQ1NTUHJvcGVydHlQYXJzZXJX
b3JrZXJTYWZlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5
UGFyc2VyV29ya2VyU2FmZS5oOyBwYXRoID0gcGFyc2VyL0NTU1Byb3BlcnR5UGFyc2VyV29ya2Vy
U2FmZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0MzFENkNGNzg4MDA3
NzA4NEYgLyogQ1NTUGFyc2VySWRpb21zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFt
ZSA9IENTU1BhcnNlcklkaW9tcy5oOyBwYXRoID0gcGFyc2VyL0NTU1BhcnNlcklkaW9tcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0NzFENkQwNjBDMDA3NzA4NEYgLyog
Q1NTTWFya3VwLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU01h
cmt1cC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRv
ci5jcHAKaW5kZXggNTBiY2NiMDhlMDAwMWYzMTc2M2E0ZDVmNzI3NGRmNWIwNTM4MWVlOS4uZjBi
NDUxZDlmYTY0NjE4OGU4YWJjMjYyMTRlN2RiYTY1OWQxZWMwYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RWRpdG9yLmNwcApAQCAtMjYzLDYgKzI2Myw4IEBAIHZvaWQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hh
bmdlOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAg
IGF1dG8gb3B0aW9ucyA9IEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9u
cygpOwogICAgIGlmIChtX29wdGlvbnMgJiBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OkRvTm90
U2V0Rm9jdXMpCiAgICAgICAgIG9wdGlvbnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZv
Y3VzKTsKKyAgICBpZiAobV9vcHRpb25zICYgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZl
YWxTZWxlY3Rpb24pCisgICAgICAgIG9wdGlvbnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpSZXZlYWxT
ZWxlY3Rpb24pOwogICAgIG1fZG9jdW1lbnQtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxl
Y3Rpb24sIG9wdGlvbnMpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAppbmRleCBjZGJmZmEwYzZhMDUy
YjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5Li43OWJhYTgzYjQ5NzdkMmE3ZDhmODk0YTI3YzJm
YjZhZDIzYjIwODRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKQEAgLTE2MjAsOSArMTYyMCwxMCBAQCB2
b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5kZXJpbmcoKQogICAgIGZvckVhY2hEb2N1bWVudChb
XSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAgICAgICAgIGRvY3VtZW50LnVwZGF0ZUhpZ2hsaWdo
dFBvc2l0aW9ucygpOwogICAgIH0pOwotI2lmIEVOQUJMRShBUFBfSElHSExJR0hUKQorI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBk
b2N1bWVudCkgewotICAgICAgICBpZiAoIWF1dG8gYXBwSGlnaGxpZ2h0U3RvcmFnZSA9IGRvY3Vt
ZW50LmFwcEhpZ2hsaWdodFN0b3JhZ2VJZkV4aXN0cygpKQorICAgICAgICBhdXRvIGFwcEhpZ2hs
aWdodFN0b3JhZ2UgPSBkb2N1bWVudC5hcHBIaWdobGlnaHRTdG9yYWdlSWZFeGlzdHMoKTsKKyAg
ICAgICAgaWYgKCFhcHBIaWdobGlnaHRTdG9yYWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
ICAgICAKICAgICAgICAgaWYgKGFwcEhpZ2hsaWdodFN0b3JhZ2UtPmhhc1VucmVzdG9yZWRIaWdo
bGlnaHRzKCkgJiYgTW9ub3RvbmljVGltZTo6bm93KCkgLSBhcHBIaWdobGlnaHRTdG9yYWdlLT5s
YXN0UmFuZ2VTZWFyY2hUaW1lKCkgPiAxX3MpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmluZGV4IDZkZjhhNjA5Mzc1YjIyNzViODk4MjIxNDk5
ODlkYmZhOTRhOTJlZTguLmYxNWViOGY4ZjFiYmI3NTA3OWM4MDQwZTU2YWQzNjlhYTAxZTcwODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcu
bW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpA
QCAtMjE1MywyNCArMjE1Myw0MyBAQCAtICh2b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAg
ICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5YmFja1N1c3BlbmRlZDpOTyBjb21wbGV0aW9uSGFuZGxl
cjpuaWxdOwogfQogCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQorc3RhdGljIHZvaWQgcmVz
dG9yZUhpZ2hsaWdodChWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gJmJ1ZmZlcnMs
IE5TRGF0YSogaGlnaGxpZ2h0KQoreworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpT
aGFyZWRNZW1vcnk6OmFsbG9jYXRlKGhpZ2hsaWdodC5sZW5ndGgpOworICAgIGlmIChzaGFyZWRN
ZW1vcnkpIHsKKyAgICAgICAgW2hpZ2hsaWdodCBnZXRCeXRlczpzaGFyZWRNZW1vcnktPmRhdGEo
KSBsZW5ndGg6aGlnaGxpZ2h0Lmxlbmd0aF07CisgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFy
ZWRNZW1vcnkpOworICAgIH0KK30KKyNlbmRpZgorCiAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxp
Z2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzCiB7CiAjaWYgRU5BQkxFKEFQUF9I
SUdITElHSFRTKQogICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJz
OwogCi0gICAgZm9yIChOU0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7Ci0gICAgICAg
IGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGhpZ2hs
aWdodC5sZW5ndGgpOwotICAgICAgICBpZiAoc2hhcmVkTWVtb3J5KSB7Ci0gICAgICAgICAgICBb
aGlnaGxpZ2h0IGdldEJ5dGVzOnNoYXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpoaWdobGlnaHQu
bGVuZ3RoXTsKLSAgICAgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOwotICAg
ICAgICB9Ci0gICAgfQotICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhidWZmZXJzKTsK
KyAgICBmb3IgKE5TRGF0YSAqaGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpCisgICAgICAgIHJlc3Rv
cmVIaWdobGlnaHQoYnVmZmVycywgaGlnaGxpZ2h0KTsKKyAgICAKKyAgICBfcGFnZS0+cmVzdG9y
ZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGJ1ZmZlcnMsIFdURjo6bnVsbG9wdCk7CiAj
ZWxzZQogICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgogfQogCistICh2b2lk
KV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAorewor
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKKyAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVk
TWVtb3J5Pj4gYnVmZmVyczsKKyAgICAKKyAgICByZXN0b3JlSGlnaGxpZ2h0KGJ1ZmZlcnMsIGhp
Z2hsaWdodCk7CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRl
eChidWZmZXJzLCAwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodCk7CisjZW5k
aWYKK30KKwogLSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0CiB7CiAjaWYgRU5BQkxFKEFQUF9ISUdI
TElHSFRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKaW5kZXggNzQwZTA2Y2IyMzUwZDA2ZjkxYzIxM2NlZmQ2NzlhZDZmMDdk
NTlkYy4uNTVkMDE5ZGVhZmIyZDJiYmE0Mzc0ZDYzNTJmZTY3MzU1YmIxZjU0OCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAor
KysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CkBAIC0zNjcsNyArMzY3LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9kaWREaXNh
YmxlQnJvd3NlckV4dGVuc2lvbnM6KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURzIFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEFwcEhpZ2hsaWdodERlbGVnYXRl
OikgaWQgPF9XS0FwcEhpZ2hsaWdodERlbGVnYXRlPiBfYXBwSGlnaGxpZ2h0RGVsZWdhdGUgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZv
aWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGEgV0tfQVBJ
X0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQp
X3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMgV0tf
QVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZv
aWQpX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0IFdL
X0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2
b2lkKV9hZGRBcHBIaWdobGlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF90
aGVtZUNvbG9yXWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDEwMDliOGY0MmZkN2Nh
MzMxOTk1N2EyZjRkM2MyZDIyNTc1OGJkOTguLjU3Y2JkYzQwMWJkMjQ5YTdmNWEyYTAyYWY4MDcx
NGJkNjYyYjdlNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dl
YlBhZ2VQcm94eUNvY29hLm1tCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6
OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91
cEZvckgKICAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoY3JlYXRlTmV3R3JvdXAsIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApKTsKIH0K
IAotdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxS
ZWY8U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9y
ZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVt
b3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90PiBpbmRleCkKIHsKICAg
ICBpZiAoIWhhc1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1
NzMsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVj
dG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZwogICAgICAgICBtZW1vcnlIYW5kbGVzLmFw
cGVuZChTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgaGlnaGxpZ2h0
LT5zaXplKCkgfSk7CiAgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9y
ZUFwcEhpZ2hsaWdodHMoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSkpOworICAgIHNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChXVEZNb3Zl
KG1lbW9yeUhhbmRsZXMpLCBpbmRleCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmgKaW5kZXggYjZhZjY3ODk5NjYwNjE4NmM1YzMyMTEwNzhkNjAwNmI0
NzRmNTE5MS4uMjQ0MDQ4OTIyZjEwMzZhM2IyYTYwN2U5YTc3M2NlOTIwZjMxYjg5OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4ODYsNyArMTg4Niw3IEBAIHB1
YmxpYzoKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgdm9pZCBjcmVhdGVBcHBIaWdo
bGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQs
IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHApOwogICAgIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0Jik7Ci0gICAgdm9pZCBy
ZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5
Pj4mIGhpZ2hsaWdodHMpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxU
b0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0
cywgY29uc3QgT3B0aW9uYWw8dWludDY0X3Q+IGluZGV4KTsKICNlbmRpZgogCiAjaWYgRU5BQkxF
KE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHAKaW5kZXggY2Q5YzJjMDg0MThlOGMwNmYxNGQxYTE3ZWY5YWVmMDllYzAyYjY0MS4uNmU2
OThmNjZmZjY1NGYxZGEzNTgyMDdkZmUwMWU5MWFmYThiOTJmOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc0ODUsMTUgKzc0ODUsMjEgQEAg
Ym9vbCBXZWJQYWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6
Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQ
YWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENI
YW5kbGU+JiYgbWVtb3J5SGFuZGxlcykKK3ZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdo
dHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4m
JiBtZW1vcnlIYW5kbGVzLCBjb25zdCBPcHRpb25hbDx1aW50NjRfdD4gaW5kZXgpCiB7CiAgICAg
YXV0byBkb2N1bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1
c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpKTsKIAorICAgIHVuc2lnbmVkIGkgPSAwOwogICAg
IGZvciAoY29uc3QgYXV0byYgaXBjSGFuZGxlIDogbWVtb3J5SGFuZGxlcykgewogICAgICAgICBh
dXRvIHNoYXJlZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNo
YXJlZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1l
bW9yeSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxp
Z2h0U3RvcmFnZSgpLnJlc3RvcmVBcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3Rh
dGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5
LT5zaXplKCkpKTsKKworICAgICAgICBpZiAoaW5kZXggJiYgaSA9PSBpbmRleC52YWx1ZSgpKQor
ICAgICAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3Qg
Y2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkpLCBTY3Jv
bGxUb0hpZ2hsaWdodDo6WWVzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZG9jdW1lbnQt
PmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hh
cmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+
ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkpLCBTY3JvbGxUb0hpZ2hsaWdodDo6Tm8pOwor
ICAgICAgICBpKys7CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggYzE5NmFkODEzNzkwMjYxNDZkZGI5OThiNGRmYmM2NWVi
NjNhNzQ5Mi4uMmU5MDVhOGI3MGNiYTI5Mzk4MGU3ZDE4NDVmMzRlMjM5NGQ2MDM5MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQxNyw3ICsxNDE3
LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAgaGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCgpIGNvbnN0IHsgcmV0dXJuIG1faGln
aGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsgfQogCiAgICAgYm9vbCBjcmVhdGVBcHBIaWdo
bGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQs
IFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHApOwotICAgIHZvaWQgcmVz
dG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYm
KTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBW
ZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYsIGNvbnN0IE9wdGlvbmFsPHVpbnQ2NF90
PiBpbmRleCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNj
cm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29s
KT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5tZXNzYWdlcy5pbgppbmRleCAxMTY0OGI5NmE1NGMxNGYwYjczN2ZjYzFlYTNlZTA0OTJkNWNj
ZDc0Li40YTk1MmIyYzljZDFkYmVhZjY3NjlhNWU5M2EyMmJlMjc3YmI0NDg4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4K
QEAgLTYyOCw3ICs2MjgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5kKGVudW06
dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQogICAgIENyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShl
bnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRlTmV3R3Jv
dXAsIGVudW06Ym9vbCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwIHJl
cXVlc3RPcmlnaW4pCi0gICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFdlYktpdDo6U2hh
cmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMpCisgICAgUmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KFZlY3RvcjxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlPiBtZW1vcnlIYW5kbGVzLCBPcHRpb25hbDx1aW50NjRfdD4gaW5kZXgpCiAjZW5kaWYKIAog
ICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJXaGVlbEV2
ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hh
bmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDEwYThjODhkZjIzYTNkYjQxM2Y0ZTAyZjc4
ZjJjODE3OGI3MjBkZDkuLjFjZWYxM2EyMWM1Yjg2ZDZkMmZjZTU3ZDI4MGM1YzkxM2JkODkyMjQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMyBAQAorMjAyMS0wNC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgc2Nyb2xsaW5nIHRvIGEgc2VsZWN0ZWQgQXBwSGln
aGxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQ3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDQtMTkgIFdlbnNvbiBIc2llaCAg
PHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgUmVuYW1lIEZsb2F0UXVhZDo6aXNF
bXB0eSgpIHRvIGJvdW5kaW5nQm94SXNFbXB0eSgpIGFuZCByZWltcGxlbWVudCBpc0VtcHR5KCkK
ZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBI
aWdobGlnaHRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0Fw
cEhpZ2hsaWdodHMubW0KaW5kZXggM2UzYjdkYjNlNjc3NWEzYzFlMjg3ZGFjNDAwMTY1YTM5MGE5
MTI0Mi4uMGUwNTMzNTNmZTE2YWRmYTdlZjYzZmFhZTE3MzllMmZhNmEyNzRjZiAxMDA2NDQKLS0t
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMu
bW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hs
aWdodHMubW0KQEAgLTg1LDYgKzg1LDM2IEBAIFRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxp
Z2h0Q3JlYXRlQW5kUmVzdG9yZSkKICAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlz
aGVkKTsKIH0KIAorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0
b3JlQW5kU2Nyb2xsKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRp
b24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQ
bHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFscyIgY29uZmlndXJl
SlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtbQXBwSGln
aGxpZ2h0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRvIHdlYlZpZXdDcmVhdGUgPSBh
ZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAs
IDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBhdXRvIHdl
YlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJh
bWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9u
XSk7CisgICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOmRlbGVnYXRl
LmdldCgpXTsKKyAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCI8YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJy
Pjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxi
cj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJy
Pjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxi
cj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJy
Pjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+
PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48
YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxi
cj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPjxicj48YnI+PGJyPlRlc3QiXTsKKyAg
ICBbd2ViVmlld0NyZWF0ZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQu
ZXhlY0NvbW1hbmQoJ1NlbGVjdEFsbCcpIl07CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0g
Tk87CisgICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZp
ZXcgKmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5O
ZXdHcm91cCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJWaWV3Q3Jl
YXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7CisgICAgICAg
IEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7CisgICAgICAgIEVYUEVD
VF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKKyAgICAgICAgCisgICAgICAgIFt3ZWJW
aWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CisgICAgICAg
IFt3ZWJWaWV3UmVzdG9yZSBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6QFsgaGlnaGxpZ2h0LmhpZ2hs
aWdodCBdXTsKKyAgICAgICAgCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JD
b25kaXRpb25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4g
W3dlYlZpZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMu
bnVtYmVyT2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgICAgICB9LCAyLCBA
IkV4cGVjdGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgICAgICBFWFBFQ1Rf
TkUoMCwgW1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFn
ZVlPZmZzZXQiXSBmbG9hdFZhbHVlXSk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hlZCA9IFlF
UzsKKyAgICB9XTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfYWRkQXBwSGlnaGxpZ2h0XTsKKyAgICBU
ZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKwogVEVTVChBcHBIaWdobGln
aHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRmFpbHVyZSkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29u
ZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJ
bnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426621</attachid>
            <date>2021-04-20 17:14:07 -0700</date>
            <delta_ts>2021-04-20 17:47:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210420171406.patch</filename>
            <type>text/plain</type>
            <size>28729</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2Mjc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDY2OWU3YTAyYmRkMWFj
ZDU4MGE3YTRjY2Y3ZDQwNTVjYmY5Yjg1Ni4uMDk0NmYwODRhM2M4NDFjZGMzNjg3M2M2NDFjNDA4
NTQ3Y2RlYjYzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEFwcEhpZ2hsaWdodHM6OkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwKKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVu
cmVzdG9yZWRBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMS0wNC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hz
aWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW5hbWUgRmxvYXRRdWFkOjppc0VtcHR5KCkgdG8g
Ym91bmRpbmdCb3hJc0VtcHR5KCkgYW5kIHJlaW1wbGVtZW50IGlzRW1wdHkoKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBiNWYxMjVmZWU5ZTgwMzRkNGYxYmFiOTA4ZTM5NDM4NzU0MzdjOTgyLi4wYWZiOTU5ZDlmNmI2
OTU3MzA3NGE0NTNiZjNhNzg2MTM5YWFmOGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDIxLTA0LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAg
ICAgICAgU3VwcG9ydCBzY3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgIChyZXN0b3JlSGlnaGxpZ2h0KToKKyAgICAg
ICAgKC1bV0tXZWJWaWV3IF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpdKToKKyAgICAgICAgKC1bV0tX
ZWJWaWV3IF9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMpOiBEZWxldGVkLgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnJlc3Rv
cmVBcHBIaWdobGlnaHRzKTogRGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluOgorCiAyMDIxLTA0LTE5ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW90aW9uTWFyaydzIENhbnZhcy1BcmNzIHN1YnRlc3QgaXMgYnJva2VuIGlmIHRoZSBH
UFVQcm9jZXNzIGlzIG5vdCB5ZXQgcnVubmluZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAppbmRleCBmMGU0MGQy
MWY4NGYwYjkyNWNjYjBjMWY5MGZiYTIzMzg2YTdiMWNiLi5hYWY5NjEzODljZTE5MzZmY2U2YzVh
ZmQyNzc3OGJiY2Y1YTY2YzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hp
Z2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmNwcApAQCAtMzIsNiArMzIsNyBAQAog
I2luY2x1ZGUgIkNocm9tZS5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCisjaW5jbHVkZSAiRWRpdG9yLmgiCiAjaW5jbHVkZSAi
SFRNTEJvZHlFbGVtZW50LmgiCiAjaW5jbHVkZSAiSGlnaGxpZ2h0UmVnaXN0ZXIuaCIKICNpbmNs
dWRlICJOb2RlLmgiCkBAIC0yMjksNDQgKzIzMCw1NyBAQCB2b2lkIEFwcEhpZ2hsaWdodFN0b3Jh
Z2U6OnN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0aWNSYW5nZT4mJiByYW5nZSkKICAgICBtX2Rv
Y3VtZW50LT5wYWdlKCktPmNocm9tZSgpLnN0b3JlQXBwSGlnaGxpZ2h0KFdURk1vdmUoaGlnaGxp
Z2h0KSk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdo
dChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlcikKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6
cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVy
LCBTY3JvbGxUb0hpZ2hsaWdodCBzY3JvbGwpCiB7Ci0gICAgaWYgKCFtX2RvY3VtZW50KQotICAg
ICAgICByZXR1cm47Ci0gICAgCi0gICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1ha2VSZWZQdHIo
bV9kb2N1bWVudC5nZXQoKSk7Ci0KICAgICBhdXRvIGFwcEhpZ2hsaWdodFJhbmdlRGF0YSA9IEFw
cEhpZ2hsaWdodFJhbmdlRGF0YTo6Y3JlYXRlKGJ1ZmZlcik7CiAgICAgaWYgKCFhcHBIaWdobGln
aHRSYW5nZURhdGEpCiAgICAgICAgIHJldHVybjsKLQotICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFu
Z2UoKmFwcEhpZ2hsaWdodFJhbmdlRGF0YSwgKnN0cm9uZ0RvY3VtZW50KTsKICAgICAKLSAgICBp
ZiAoIXJhbmdlKQotICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdo
bGlnaHRSYW5nZURhdGEudmFsdWUoKSk7Ci0gICAgZWxzZQotICAgICAgICBzdHJvbmdEb2N1bWVu
dC0+YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNy
ZWF0ZSgqcmFuZ2UpKTsKKyAgICBpZiAoIWF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3Jv
bGwoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCksIHNjcm9sbCkpIHsKKyAgICAgICAgaWYg
KHNjcm9sbCA9PSBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzKQorICAgICAgICAgICAgbV91bnJlc3Rv
cmVkU2Nyb2xsSGlnaGxpZ2h0ID0gYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRzLmFwcGVuZChhcHBIaWdobGlnaHRS
YW5nZURhdGEudmFsdWUoKSk7CisgICAgfQogICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2Vh
cmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7CiB9CiAKLXZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdobGlnaHRzKCkKK2Jvb2wgQXBwSGlnaGxpZ2h0U3Rv
cmFnZTo6YXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChBcHBIaWdobGlnaHRSYW5n
ZURhdGEmIGhpZ2hsaWdodCwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xsKQogewotICAgIFZlY3Rv
cjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJlbWFpbmluZ1JhbmdlczsKLQogICAgIGlmICghbV9k
b2N1bWVudCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgCiAg
ICAgYXV0byBzdHJvbmdEb2N1bWVudCA9IG1ha2VSZWZQdHIobV9kb2N1bWVudC5nZXQoKSk7CiAg
ICAgCisgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShoaWdobGlnaHQsICpzdHJvbmdEb2N1bWVu
dCk7CisgICAgCisgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAor
ICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhpZ2hsaWdo
dChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOworICAgIAorICAgIGlmIChzY3JvbGwgPT0g
U2Nyb2xsVG9IaWdobGlnaHQ6OlllcykgeworICAgICAgICBPcHRpb25TZXQ8VGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uPiB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zOworICAgICAgICB0ZW1wb3Jh
cnlTZWxlY3Rpb25PcHRpb25zLmFkZChUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OlJldmVhbFNl
bGVjdGlvbik7CisgICAgICAgIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZSBzZWxlY3Rpb25DaGFu
Z2UoKnN0cm9uZ0RvY3VtZW50LCB7IHJhbmdlLnZhbHVlKCkgfSwgdGVtcG9yYXJ5U2VsZWN0aW9u
T3B0aW9ucyk7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFwcEhpZ2hsaWdo
dFN0b3JhZ2U6OnJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpCit7CisgICAgVmVjdG9y
PEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gcmVtYWluaW5nUmFuZ2VzOworICAgIAogICAgIGZvciAo
YXV0byYgaGlnaGxpZ2h0IDogbV91bnJlc3RvcmVkSGlnaGxpZ2h0cykgewotICAgICAgICBhdXRv
IHJhbmdlID0gZmluZFJhbmdlKGhpZ2hsaWdodCwgKnN0cm9uZ0RvY3VtZW50KTsKLSAgICAgICAg
Ci0gICAgICAgIGlmICghcmFuZ2UpCisgICAgICAgIGlmICghYXR0ZW1wdFRvUmVzdG9yZUhpZ2hs
aWdodEFuZFNjcm9sbChoaWdobGlnaHQsIFNjcm9sbFRvSGlnaGxpZ2h0OjpObykpCiAgICAgICAg
ICAgICByZW1haW5pbmdSYW5nZXMuYXBwZW5kKGhpZ2hsaWdodCk7Ci0gICAgICAgIGVsc2UKLSAg
ICAgICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhp
Z2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOwogICAgIH0KKyAgICBpZiAobV91
bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0KSB7CisgICAgICAgIGlmIChhdHRlbXB0VG9SZXN0b3Jl
SGlnaGxpZ2h0QW5kU2Nyb2xsKG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodC52YWx1ZSgpLCBT
Y3JvbGxUb0hpZ2hsaWdodDo6WWVzKSkKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZFNjcm9sbEhp
Z2hsaWdodC5yZXNldCgpOworICAgIH0KKyAgICAgICAgCiAgICAgbV90aW1lQXRMYXN0UmFuZ2VT
ZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsKICAgICBtX3VucmVzdG9yZWRIaWdobGlnaHRz
ID0gV1RGTW92ZShyZW1haW5pbmdSYW5nZXMpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCmluZGV4IDAwNzVhMDc3
OTUyZjVmMjhiNGNhZTRmYzYwMTBjM2Q1NzIxM2MxNDAuLmZmM2JjNzBiMDEwMTAxYmNiMWZjZGFj
NGNjY2ViNzgyM2Q2N2U1Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGln
aGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdlLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3By
YWdtYSBvbmNlCiAKKyNpbmNsdWRlICJBcHBIaWdobGlnaHRSYW5nZURhdGEuaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVk
ZSA8d3RmL09wdGlvblNldC5oPgpAQCAtMzcsNyArMzgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAKLWNsYXNzIEFwcEhpZ2hsaWdodFJhbmdl
RGF0YTsKIGNsYXNzIERvY3VtZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyOwogY2xhc3MgU3RhdGlj
UmFuZ2U7CkBAIC00Nyw2ICs0Nyw4IEBAIGVudW0gY2xhc3MgQ3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQgOiBib29sOwogCiBlbnVtIGNsYXNzIFJlc3RvcmVXaXRoVGV4dFNlYXJjaCA6IGJvb2wg
eyBObywgWWVzIH07CiAKK2VudW0gY2xhc3MgU2Nyb2xsVG9IaWdobGlnaHQgOiBib29sIHsgTm8s
IFllcyB9OworCiBjbGFzcyBBcHBIaWdobGlnaHRTdG9yYWdlIGZpbmFsIDogUmVmQ291bnRlZDxB
cHBIaWdobGlnaHRTdG9yYWdlPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJs
aWM6CkBAIC01NCwxNiArNTYsMTggQEAgcHVibGljOgogICAgIH5BcHBIaWdobGlnaHRTdG9yYWdl
KCk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTdGF0
aWNSYW5nZT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0
KFJlZjxTaGFyZWRCdWZmZXI+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYsIFNjcm9sbFRvSGlnaGxp
Z2h0KTsKICAgICB2b2lkIHJlc3RvcmVVbnJlc3RvcmVkQXBwSGlnaGxpZ2h0cygpOwogICAgIE1v
bm90b25pY1RpbWUgbGFzdFJhbmdlU2VhcmNoVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZUF0
TGFzdFJhbmdlU2VhcmNoOyB9CiAgICAgdm9pZCByZXNldExhc3RSYW5nZVNlYXJjaFRpbWUoKSB7
IG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93KCk7IH0KICAgICBi
b29sIGhhc1VucmVzdG9yZWRIaWdobGlnaHRzKCkgY29uc3QgeyByZXR1cm4gbV91bnJlc3RvcmVk
SGlnaGxpZ2h0cy5zaXplKCk7IH0KIAogcHJpdmF0ZToKKyAgICBib29sIGF0dGVtcHRUb1Jlc3Rv
cmVIaWdobGlnaHRBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiwgU2Nyb2xsVG9IaWdo
bGlnaHQpOwogICAgIFdlYWtQdHI8RG9jdW1lbnQ+IG1fZG9jdW1lbnQ7CiAgICAgTW9ub3Rvbmlj
VGltZSBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsKICAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFu
Z2VEYXRhPiBtX3VucmVzdG9yZWRIaWdobGlnaHRzOworICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdo
dFJhbmdlRGF0YT4gbV91bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0OwogfTsKIAogI2VuZGlmCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggYzI5MjU0ZGQ2MjVkNTkzYWYyNWMxMjRkZjVkODJlNzkxZmU4Yjk5OC4uNzE0MWJhMzdmNzNj
NzdjNTRmODkzM2Y1MzIzZGEyNWU0ZTlkMTQ4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtNjQ0LDEwICs2NDQsOSBAQAogCQkx
Q0FGNTZEQjI1MzAxQUM4MDAxN0I0NzIgLyogRGlzcGxheUxpc3REcmF3R2x5cGhzUmVjb3JkZXIu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQUY1NkQ4
MjUzMDE0NTcwMDE3QjQ3MiAvKiBEaXNwbGF5TGlzdERyYXdHbHlwaHNSZWNvcmRlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTFDQ0Q4MTUwMjIz
MUY4M0UwMDY1RkMyQiAvKiBXZWJDb3JlUmVzb3VyY2VIYW5kbGVBc09wZXJhdGlvblF1ZXVlRGVs
ZWdhdGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MTUyNTUxNDE2RkQyMzRGMDAzRDdBREIgLyogV2ViQ29yZVJlc291cmNlSGFuZGxlQXNPcGVyYXRp
b25RdWV1ZURlbGVnYXRlLm1tICovOyB9OwogCQkxQ0NERjVCRTE5OTAzMzI0MDBCQ0VCQUQgLyog
U1ZHVG9PVEZGb250Q29udmVyc2lvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMUNDREY1QkMxOTkwMzMyNDAwQkNFQkFEIC8qIFNWR1RvT1RGRm9udENv
bnZlcnNpb24uaCAqLzsgfTsKLQkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlM
aXN0SXRlcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDFDRThEMTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMUNFOEQxMjcy
NjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRThEMTI1MjYxODVC
RDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJZGVudGlmaWVyLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNFODg2NDEyNjEwNUJG
MjAwMEM4MTZDIC8qIEluTWVtb3J5RGlzcGxheUxpc3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRTg4NjNGMjYxMDVBNUYwMDBDODE2QyAvKiBJbk1l
bW9yeURpc3BsYXlMaXN0LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwg
KTsgfTsgfTsKIAkJMUNFOEQxMjcyNjE4NUMwRTAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1
ZmZlcklkZW50aWZpZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDFDRThEMTI1MjYxODVCRDgwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZW1CdWZmZXJJ
ZGVudGlmaWVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKKwkJMUNFOEQxMkUyNjE4NjFDNDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDRThEMTJDMjYx
ODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMUNGQUUzMjMwQTZENkEzRjAwMzI1OTNE
IC8qIGxpYm9iamMuZHlsaWIgaW4gRnJhbWV3b3JrcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAxQ0ZBRTMyMjBBNkQ2QTNGMDAzMjU5M0QgLyogbGlib2JqYy5keWxpYiAqLzsg
fTsKIAkJMUQwMDI2QTQyMzc0RDYyNDAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRv
dy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2
QTIyMzc0RDYyMzAwQ0E2Q0RGIC8qIEpTUGljdHVyZUluUGljdHVyZVdpbmRvdy5oICovOyB9Owog
CQkxRDAwMjZBQTIzNzRGOUVBMDBDQTZDREYgLyogSlNFbnRlclBpY3R1cmVJblBpY3R1cmVFdmVu
dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUQwMDI2
QTgyMzc0RjlEOTAwQ0E2Q0RGIC8qIEpTRW50ZXJQaWN0dXJlSW5QaWN0dXJlRXZlbnQuaCAqLzsg
fTsKQEAgLTEyNjIsNyArMTI2MSw3IEBACiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAvKiBX
ZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVzcG9u
c2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owog
CQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJERkI4
QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFBRjEy
REZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxO
YW1lcy5oICovOyB9OwotCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87
IH07CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUwNDVB
MjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEM5OTE4NjBGM0QxRUJFMDA1
ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxiYXJU
aGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1Mu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTlE
MEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwogCQk0NEUzNDlGOTI0NkY0RTE5
MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5RjcyNDZGNERDNzAwNjg0NzlDIC8qIExpYldl
YlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwpAQCAtNjk1OSw5ICs2OTU4LDkgQEAKIAkJMUNFODg2M0UyNjEwNUE1RjAwMEM4MTZD
IC8qIEluTWVtb3J5RGlzcGxheUxpc3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5NZW1vcnlE
aXNwbGF5TGlzdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRTg4NjNGMjYx
MDVBNUYwMDBDODE2QyAvKiBJbk1lbW9yeURpc3BsYXlMaXN0LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IElu
TWVtb3J5RGlzcGxheUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQx
MjUyNjE4NUJEODAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlbUJ1ZmZlcklkZW50aWZpZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRGlzcGxheUxpc3RJdGVtQnVmZmVySWRlbnRpZmllci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwotCQkxQ0VDQjNBODIxRjJCNjczMDBGNDQ1NDIgLyogV0hMU0xT
dGF0ZW1lbnRCZWhhdmlvckNoZWNrZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xTdGF0ZW1lbnRC
ZWhhdmlvckNoZWNrZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMUNFOEQxMkIy
NjE4NjE2NDAwRkMzQUVGIC8qIERpc3BsYXlMaXN0SXRlcmF0b3IuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gRGlzcGxheUxpc3RJdGVyYXRvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTFDRThEMTJDMjYxODYxNjQwMEZDM0FFRiAvKiBEaXNwbGF5TGlzdEl0ZXJhdG9yLmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc3BsYXlMaXN0SXRlcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJMUNFQ0IzQTgyMUYyQjY3MzAwRjQ0NTQyIC8qIFdITFNMU3RhdGVtZW50QmVoYXZp
b3JDaGVja2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdITFNMU3RhdGVtZW50QmVoYXZpb3JDaGVja2Vy
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTFDRUNCM0E5MjFGMkI2NzMwMEY0NDU0
MiAvKiBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBXSExTTFN0YXRlbWVudEJlaGF2aW9yQ2hlY2tlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTFDRUNCM0FGMjFGMkI5ODQwMEY0NDU0MiAvKiBXSExTTEZ1bmN0aW9uV3JpdGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdITFNMRnVuY3Rpb25Xcml0ZXIuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQkxQ0VDQjNCMDIxRjJCOTg1MDBGNDQ1NDIgLyogV0hMU0xU
eXBlTmFtZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV0hMU0xUeXBlTmFtZXIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTExODExLDggKzExODEwLDggQEAKIAkJOTQ2RDM3M0QxRDZDRTMx
QTAwNzcwODRGIC8qIENTU1BhcnNlclRva2VuLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
bmFtZSA9IENTU1BhcnNlclRva2VuLmg7IHBhdGggPSBwYXJzZXIvQ1NTUGFyc2VyVG9rZW4uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3M0UxRDZDRTMxQTAwNzcwODRGIC8q
IENTU1BhcnNlclRva2VuLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9
IENTU1BhcnNlclRva2VuLmNwcDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJUb2tlbi5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk0NkQzNzQxMUQ2Q0Y2MzIwMDc3MDg0RiAvKiBD
U1NQcm9wZXJ0eVBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBDU1NQcm9wZXJ0eVBhcnNlci5jcHA7IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5NDZEMzc0MjFENkNGNjMyMDA3NzA4
NEYgLyogQ1NTUHJvcGVydHlQYXJzZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1l
ID0gQ1NTUHJvcGVydHlQYXJzZXIuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlci5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5NDZEMzc0MTFENkQwNjMyMDA3NzA4NEYg
LyogQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyV29ya2VyU2FmZS5jcHA7IHBhdGggPSBw
YXJzZXIvQ1NTUHJvcGVydHlQYXJzZXJXb3JrZXJTYWZlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJOTQ2RDM3NDIxRDZDRjYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2Vy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IENTU1Byb3BlcnR5UGFyc2VyLmg7
IHBhdGggPSBwYXJzZXIvQ1NTUHJvcGVydHlQYXJzZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJOTQ2RDM3NDIxRDZEMDYzMjAwNzcwODRGIC8qIENTU1Byb3BlcnR5UGFyc2VyV29y
a2VyU2FmZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBDU1NQcm9wZXJ0eVBh
cnNlcldvcmtlclNhZmUuaDsgcGF0aCA9IHBhcnNlci9DU1NQcm9wZXJ0eVBhcnNlcldvcmtlclNh
ZmUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3NDMxRDZDRjc4ODAwNzcw
ODRGIC8qIENTU1BhcnNlcklkaW9tcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUg
PSBDU1NQYXJzZXJJZGlvbXMuaDsgcGF0aCA9IHBhcnNlci9DU1NQYXJzZXJJZGlvbXMuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTQ2RDM3NDcxRDZEMDYwQzAwNzcwODRGIC8qIENT
U01hcmt1cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDU1NNYXJr
dXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3Iu
Y3BwCmluZGV4IDUwYmNjYjA4ZTAwMDFmMzE3NjNhNGQ1ZjcyNzRkZjViMDUzODFlZTkuLmYwYjQ1
MWQ5ZmE2NDYxODhlOGFiYzI2MjE0ZTdkYmE2NTlkMWVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAKQEAgLTI2Myw2ICsyNjMsOCBAQCB2b2lkIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5n
ZTo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICAgICBh
dXRvIG9wdGlvbnMgPSBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
KTsKICAgICBpZiAobV9vcHRpb25zICYgVGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpEb05vdFNl
dEZvY3VzKQogICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1
cyk7CisgICAgaWYgKG1fb3B0aW9ucyAmIFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6UmV2ZWFs
U2VsZWN0aW9uKQorICAgICAgICBvcHRpb25zLmFkZChGcmFtZVNlbGVjdGlvbjo6UmV2ZWFsU2Vs
ZWN0aW9uKTsKICAgICBtX2RvY3VtZW50LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0
aW9uLCBvcHRpb25zKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKaW5kZXggY2RiZmZhMGM2YTA1MmIw
ZTFmYTAxY2QxZmQ5MzFkYmNiZmRkZjU2OS4uNzliYWE4M2I0OTc3ZDJhN2Q4Zjg5NGEyN2MyZmI2
YWQyM2IyMDg0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0xNjIwLDkgKzE2MjAsMTAgQEAgdm9p
ZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVuZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10g
KERvY3VtZW50JiBkb2N1bWVudCkgewogICAgICAgICBkb2N1bWVudC51cGRhdGVIaWdobGlnaHRQ
b3NpdGlvbnMoKTsKICAgICB9KTsKLSNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVCkKKyNpZiBFTkFC
TEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9j
dW1lbnQpIHsKLSAgICAgICAgaWYgKCFhdXRvIGFwcEhpZ2hsaWdodFN0b3JhZ2UgPSBkb2N1bWVu
dC5hcHBIaWdobGlnaHRTdG9yYWdlSWZFeGlzdHMoKSkKKyAgICAgICAgYXV0byBhcHBIaWdobGln
aHRTdG9yYWdlID0gZG9jdW1lbnQuYXBwSGlnaGxpZ2h0U3RvcmFnZUlmRXhpc3RzKCk7CisgICAg
ICAgIGlmICghYXBwSGlnaGxpZ2h0U3RvcmFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAg
ICAgCiAgICAgICAgIGlmIChhcHBIaWdobGlnaHRTdG9yYWdlLT5oYXNVbnJlc3RvcmVkSGlnaGxp
Z2h0cygpICYmIE1vbm90b25pY1RpbWU6Om5vdygpIC0gYXBwSGlnaGxpZ2h0U3RvcmFnZS0+bGFz
dFJhbmdlU2VhcmNoVGltZSgpID4gMV9zKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCA2ZGY4YTYwOTM3NWIyMjc1Yjg5ODIyMTQ5OTg5
ZGJmYTk0YTkyZWU4Li42OGZlM2Q2NTQ4MTcxYjFmZmUwODBiZThiOWRjZTQzZWYwNjM4YjE3IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
CisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAg
LTIxNTMsMjQgKzIxNTMsNDMgQEAgLSAodm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogICAg
IFtzZWxmIHNldEFsbE1lZGlhUGxheWJhY2tTdXNwZW5kZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6
bmlsXTsKIH0KIAorI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKK3N0YXRpYyB2b2lkIGNvbnZl
cnRBbmRBZGRIaWdobGlnaHQoVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+ICZidWZm
ZXJzLCBOU0RhdGEqIGhpZ2hsaWdodCkKK3sKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktp
dDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShoaWdobGlnaHQubGVuZ3RoKTsKKyAgICBpZiAoc2hh
cmVkTWVtb3J5KSB7CisgICAgICAgIFtoaWdobGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5LT5k
YXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5ndGhdOworICAgICAgICBidWZmZXJzLmFwcGVuZCgq
c2hhcmVkTWVtb3J5KTsKKyAgICB9Cit9CisjZW5kaWYKKwogLSAodm9pZClfcmVzdG9yZUFwcEhp
Z2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKICAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVm
ZmVyczsKIAotICAgIGZvciAoTlNEYXRhICpoaWdobGlnaHQgaW4gaGlnaGxpZ2h0cykgewotICAg
ICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZSho
aWdobGlnaHQubGVuZ3RoKTsKLSAgICAgICAgaWYgKHNoYXJlZE1lbW9yeSkgewotICAgICAgICAg
ICAgW2hpZ2hsaWdodCBnZXRCeXRlczpzaGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6aGlnaGxp
Z2h0Lmxlbmd0aF07Ci0gICAgICAgICAgICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsK
LSAgICAgICAgfQotICAgIH0KLSAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVmZmVy
cyk7CisgICAgZm9yIChOU0RhdGEgKmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKQorICAgICAgICBj
b252ZXJ0QW5kQWRkSGlnaGxpZ2h0KGJ1ZmZlcnMsIGhpZ2hsaWdodCk7CisgICAgCisgICAgX3Bh
Z2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBXVEY6Om51
bGxvcHQpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIH0K
IAorLSAodm9pZClfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdo
bGlnaHQKK3sKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCisgICAgVmVjdG9yPFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CisgICAgCisgICAgY29udmVydEFuZEFkZEhpZ2hs
aWdodChidWZmZXJzLCBoaWdobGlnaHQpOworICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0
c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVycywgMCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTSho
aWdobGlnaHQpOworI2VuZGlmCit9CisKIC0gKHZvaWQpX2FkZEFwcEhpZ2hsaWdodAogewogI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCmluZGV4IDc0MGUwNmNiMjM1MGQwNmY5MWMy
MTNjZWZkNjc5YWQ2ZjA3ZDU5ZGMuLjU1ZDAxOWRlYWZiMmQyYmJhNDM3NGQ2MzUyZmU2NzM1NWJi
MWY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXdQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlld1ByaXZhdGUuaApAQCAtMzY3LDcgKzM2Nyw4IEBAIGZvciB0aGlzIHByb3BlcnR5Lgog
LSAodm9pZClfZGlkRGlzYWJsZUJyb3dzZXJFeHRlbnNpb25zOihOU1NldDxOU1N0cmluZyAqPiAq
KWV4dGVuc2lvbklEcyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBcHBI
aWdobGlnaHREZWxlZ2F0ZTopIGlkIDxfV0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4gX2FwcEhpZ2hs
aWdodERlbGVnYXRlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEg
Kj4gKilkYXRhIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1Nf
VEJBKSk7CistICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4g
KiloaWdobGlnaHRzIFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CistICh2b2lkKV9yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0
YSAqKWhpZ2hsaWdodCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0IFdLX0FQSV9BVkFJTEFCTEUobWFj
b3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIC8vIEZJWE1FOiBSZW1vdmUgb2xk
IGAtW1dLV2ViVmlldyBfdGhlbWVDb2xvcl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0g
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRl
eCAxMDA5YjhmNDJmZDdjYTMzMTk5NTdhMmY0ZDNjMmQyMjU3NThiZDk4Li5lMzdhZGY4ZTQ3YTUz
MzExZTQzYTI0ZjBkNTEyNDY1ODhlNTg4MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29y
ZTo6Q3JlYXRlTmV3R3JvdXBGb3JICiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGNyZWF0ZU5ld0dyb3VwLCByZXF1ZXN0T3JpZ2lu
YXRlZEluQXBwKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0
cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzKQordm9pZCBXZWJQ
YWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0
b3I8UmVmPFNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25l
ZD4gaW5kZXgpCiB7CiAgICAgaWYgKCFoYXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1
cm47CkBAIC01NzMsNyArNTczLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWcKICAgICAgICAg
bWVtb3J5SGFuZGxlcy5hcHBlbmQoU2hhcmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhh
bmRsZSksIGhpZ2hsaWdodC0+c2l6ZSgpIH0pOwogICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzKFdURk1vdmUobWVtb3J5SGFuZGxlcykpKTsK
KyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9s
bFRvSW5kZXgoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSwgaW5kZXgpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IGI2YWY2Nzg5OTY2MDYxODZj
NWMzMjExMDc4ZDYwMDZiNDc0ZjUxOTEuLjQwODM0Y2NiNmI0NjljOTczNzFkZTEzMzM4NjZhM2Q2
NzQzODJjZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODg2
LDcgKzE4ODYsNyBAQCBwdWJsaWM6CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIHZv
aWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dy
b3VwRm9ySGlnaGxpZ2h0LCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBw
KTsKICAgICB2b2lkIHN0b3JlQXBwSGlnaGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdo
dCYpOwotICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxXZWJL
aXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzKTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVt
b3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAjZW5k
aWYKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmluZGV4IGNkOWMyYzA4NDE4ZThjMDZmMTRkMWExN2VmOWFl
ZjA5ZWMwMmI2NDEuLjUzNzA1N2UwNGMyNTBkYWI3NmZiMWY4ZGRiNWIxNzk3YTA3NzU2NjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDg1
LDE1ICs3NDg1LDE4IEBAIGJvb2wgV2ViUGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3Rl
ZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpCiAgICAgcmV0dXJuIHRydWU7
CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYmIG1lbW9yeUhhbmRsZXMpCit2b2lkIFdlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVt
b3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5SGFuZGxlcywgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+
IGluZGV4KQogewogICAgIGF1dG8gZG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKKyAgICB1bnNp
Z25lZCBpID0gMDsKICAgICBmb3IgKGNvbnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRs
ZXMpIHsKICAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNI
YW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAg
ICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZG9j
dW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1
ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEo
KSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSk7CisKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVy
OjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwg
c2hhcmVkTWVtb3J5LT5zaXplKCkpLCBpID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6Olll
cyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpObyk7CisgICAgICAgIGkrKzsKICAgICB9CiB9CiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
aCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCBjMTk2
YWQ4MTM3OTAyNjE0NmRkYjk5OGI0ZGZiYzY1ZWI2M2E3NDkyLi5mNDljMGY1OTc1ZjNiYWU1YTZj
Yjg2NTRhNmE0OGVkZWExM2M5ZDAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJQYWdlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5oCkBAIC0xNDE3LDcgKzE0MTcsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6
SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwKCkgY29uc3QgeyByZXR1cm4gbV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBw
OyB9CiAKICAgICBib29sIGNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3Jl
OjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0
b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJiwgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICNlbmRpZgogCiAgICAgdm9p
ZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDExNjQ4Yjk2
YTU0YzE0ZjBiNzM3ZmNjMWVhM2VlMDQ5MmQ1Y2NkNzQuLjQwNDA4ODllZmIyOTMzY2Q0N2FiMmM0
NmNmODVhNGQwMmM1NjBiMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgpAQCAtNjI4LDcgKzYyOCw3IEBAIEdlbmVyYXRl
U3ludGhldGljRWRpdGluZ0NvbW1hbmQoZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRp
dGluZ0NvbW1hbmRUeXBlCiAKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdH
cm91cEZvckhpZ2hsaWdodCBjcmVhdGVOZXdHcm91cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hs
aWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAgcmVxdWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBw
SGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5
SGFuZGxlcykKKyAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9y
PFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlvbmFs
PHVuc2lnbmVkPiBpbmRleCkKICNlbmRpZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91
dFNjcm9sbGluZyhXZWJLaXQ6OldlYldoZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQp
IEFzeW5jCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggMTBhOGM4OGRmMjNhM2RiNDEzZjRlMDJmNzhmMmM4MTc4YjcyMGRkOS4uMWNlZjEzYTIxYzVi
ODZkNmQyZmNlNTdkMjgwYzVjOTEzYmQ4OTIyNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRD
b2NvYS9XS0FwcEhpZ2hsaWdodHMubW06CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToK
KwogMjAyMS0wNC0xOSAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBSZW5hbWUgRmxvYXRRdWFkOjppc0VtcHR5KCkgdG8gYm91bmRpbmdCb3hJc0VtcHR5
KCkgYW5kIHJlaW1wbGVtZW50IGlzRW1wdHkoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0gYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbQppbmRleCAzZTNiN2Ri
M2U2Nzc1YTNjMWUyODdkYWM0MDAxNjVhMzkwYTkxMjQyLi4zYWY3NjliNWJhMzg4YzVkMjc3OWZm
MjNhMTliZGFkODI0OGQ3OGI0IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbQorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJ
L1Rlc3RzL1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbQpAQCAtODUsNiArODUsMzYgQEAg
VEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlKQogICAgIFRl
c3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwogfQogCitURVNUKEFwcEhpZ2hsaWdo
dHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwpCit7CisgICAgV0tXZWJW
aWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25maWd1cmF0aW9u
IF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldlYlByb2Nlc3NQ
bHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107CisgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0ZSBhbGxvY10gaW5pdF0p
OworICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9j
XSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246
Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUgPSBhZG9wdE5TKFtbVGVz
dFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAw
KSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfc2V0
QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3Q3JlYXRl
IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9J2hlaWdodDogMTAwMHB4
Jz5UZXN0PC9kaXY+Il07CisgICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2
YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJdOworICAgIF9fYmxv
Y2sgYm9vbCBmaW5pc2hlZCA9IE5POworICAgIFtkZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdo
dENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAq
aGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXApIHsKKyAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRl
V2ViVmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7CisgICAgICAgIEVYUEVDVF9OT1RfTlVMTCho
aWdobGlnaHQpOworICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVz
dCIpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0LmhpZ2hsaWdodCk7CisgICAg
ICAgIAorICAgICAgICBbd2ViVmlld1Jlc3RvcmUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5n
OkAiVGVzdCJdOworICAgICAgICBbd2ViVmlld1Jlc3RvcmUgX3Jlc3RvcmVBcHBIaWdobGlnaHRz
OkBbIGhpZ2hsaWdodC5oaWdobGlnaHQgXV07CisgICAgICAgIAorICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjp3YWl0Rm9yQ29uZGl0aW9uV2l0aExvZ2dpbmcoWyZdICgpIC0+IGJvb2wgewor
ICAgICAgICAgICAgcmV0dXJuIFt3ZWJWaWV3UmVzdG9yZSBzdHJpbmdCeUV2YWx1YXRpbmdKYXZh
U2NyaXB0OkAiaW50ZXJuYWxzLm51bWJlck9mQXBwSGlnaGxpZ2h0cygpIl0uaW50VmFsdWUgPT0g
MTsKKyAgICAgICAgfSwgMiwgQCJFeHBlY3RlZCBIaWdobGlnaHRzIHRvIGJlIHBvcHVsYXRlZC4i
KTsKKyAgICAgICAgRVhQRUNUX05FKDAsIFtbd2ViVmlld1Jlc3RvcmUgb2JqZWN0QnlFdmFsdWF0
aW5nSmF2YVNjcmlwdDpAInBhZ2VZT2Zmc2V0Il0gZmxvYXRWYWx1ZV0pOworICAgICAgICAKKyAg
ICAgICAgZmluaXNoZWQgPSBZRVM7CisgICAgfV07CisgICAgW3dlYlZpZXdDcmVhdGUgX2FkZEFw
cEhpZ2hsaWdodF07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7Cit9
CisKIFRFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCiB7CiAg
ICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZpZXdDb25m
aWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFtZTpAIldl
YlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5nOllFU107
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426625</attachid>
            <date>2021-04-20 17:47:23 -0700</date>
            <delta_ts>2021-04-20 21:23:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210420174722.patch</filename>
            <type>text/plain</type>
            <size>22676</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhYTk0NmNiYmEyM2Zk
ZTFmZmJiM2RkYWI0ZjE2MDNkZGFkMGJkNy4uYTIyMTZiYTYwZjU0NzAwMjM3YTYyYjk3NWFkZjU0
ZDY0Njk0MTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEFwcEhpZ2hsaWdodHM6OkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwKKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVu
cmVzdG9yZWRBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYmJiNjNkMzFkM2MyY2EyOGJmMDFiZmEyYWZhZTg0M2QyNzAyNTIyMS4u
NjdkN2U0YTQ4MDA4MWRkODZlYjI0MjU1YWMzMmM4YWI5ZjIzN2U1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wNC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgc2Nyb2xsaW5nIHRvIGEgc2VsZWN0ZWQgQXBwSGln
aGxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQ3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAocmVzdG9yZUhpZ2hs
aWdodCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZjBlNDBkMjFmODRmMGI5MjVjY2IwYzFmOTBmYmEyMzM4
NmE3YjFjYi4uYWFmOTYxMzg5Y2UxOTM2ZmNlNmM1YWZkMjc3NzhiYmNmNWE2NmMzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpZ2hsaWdodFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMjI5LDQ0ICsy
MzAsNTcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hs
aWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xs
KQogewotICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1
dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwotCiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKCphcHBIaWdobGlnaHRSYW5nZURhdGEs
ICpzdHJvbmdEb2N1bWVudCk7CiAgICAgCi0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgbV91bnJl
c3RvcmVkSGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCku
YWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7CisgICAgaWYgKCFh
dHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKGFwcEhpZ2hsaWdodFJhbmdlRGF0YS52
YWx1ZSgpLCBzY3JvbGwpKSB7CisgICAgICAgIGlmIChzY3JvbGwgPT0gU2Nyb2xsVG9IaWdobGln
aHQ6OlllcykKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCA9IGFwcEhp
Z2hsaWdodFJhbmdlRGF0YTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV91bnJlc3RvcmVk
SGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOworICAgIH0K
ICAgICAKICAgICBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVVbnJlc3RvcmVkQXBwSGln
aGxpZ2h0cygpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdo
bGlnaHRBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiBoaWdobGlnaHQsIFNjcm9sbFRv
SGlnaGxpZ2h0IHNjcm9sbCkKIHsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBy
ZW1haW5pbmdSYW5nZXM7Ci0KICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBt
YWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIAorICAgIGF1dG8gcmFuZ2UgPSBmaW5k
UmFuZ2UoaGlnaGxpZ2h0LCAqc3Ryb25nRG9jdW1lbnQpOworICAgIAorICAgIGlmICghcmFuZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGln
aGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFu
Z2UpKTsKKyAgICAKKyAgICBpZiAoc2Nyb2xsID09IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMpIHsK
KyAgICAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uczsKKyAgICAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVt
cG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24pOworICAgICAgICBUZW1wb3Jh
cnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpzdHJvbmdEb2N1bWVudCwgeyByYW5n
ZS52YWx1ZSgpIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlVW5yZXN0b3Jl
ZEFwcEhpZ2hsaWdodHMoKQoreworICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJl
bWFpbmluZ1JhbmdlczsKKyAgICAKICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IG1fdW5yZXN0
b3JlZEhpZ2hsaWdodHMpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShoaWdobGln
aHQsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXJhbmdlKQorICAg
ICAgICBpZiAoIWF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3JvbGwoaGlnaGxpZ2h0LCBT
Y3JvbGxUb0hpZ2hsaWdodDo6Tm8pKQogICAgICAgICAgICAgcmVtYWluaW5nUmFuZ2VzLmFwcGVu
ZChoaWdobGlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJvbmdEb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZSgqcmFuZ2UpKTsKICAgICB9CisgICAgaWYgKG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCkg
eworICAgICAgICBpZiAoYXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChtX3VucmVz
dG9yZWRTY3JvbGxIaWdobGlnaHQudmFsdWUoKSwgU2Nyb2xsVG9IaWdobGlnaHQ6OlllcykpCisg
ICAgICAgICAgICBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQucmVzZXQoKTsKKyAgICB9Cisg
ICAgICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgbV91bnJlc3RvcmVkSGlnaGxpZ2h0cyA9IFdURk1vdmUocmVtYWluaW5nUmFuZ2Vz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaAppbmRleCAwMDc1YTA3Nzk1MmY1ZjI4YjRjYWU0ZmM2MDEwYzNkNTcy
MTNjMTQwLi5mZjNiYzcwYjAxMDEwMWJjYjFmY2RhYzRjY2NlYjc4MjNkNjdlNWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTM3
LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwpAQCAtNDcsNiArNDcsOCBAQCBl
bnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogZW51bSBjbGFz
cyBSZXN0b3JlV2l0aFRleHRTZWFyY2ggOiBib29sIHsgTm8sIFllcyB9OwogCitlbnVtIGNsYXNz
IFNjcm9sbFRvSGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgQXBwSGlnaGxp
Z2h0U3RvcmFnZSBmaW5hbCA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTQsMTYgKzU2LDE4IEBAIHB1
YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5y
ZXN0b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJj
aFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZv
aWQgcmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOyB9CiAgICAgYm9vbCBoYXNVbnJlc3RvcmVkSGlnaGxpZ2h0
cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZXN0b3JlZEhpZ2hsaWdodHMuc2l6ZSgpOyB9CiAKIHBy
aXZhdGU6CisgICAgYm9vbCBhdHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKEFwcEhp
Z2hsaWdodFJhbmdlRGF0YSYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICBXZWFrUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lQXRMYXN0UmFuZ2VTZWFy
Y2g7CiAgICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV91bnJlc3RvcmVkSGlnaGxp
Z2h0czsKKyAgICBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IG1fdW5yZXN0b3JlZFNj
cm9sbEhpZ2hsaWdodDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4OGFiYmJkZjEzMjExYTQ2ZDcyZWMz
YTU2ZjI0NmQ2NDU1ZDI3MDkuLjRjYTU4OTI3YzdlYjQxMjc1ZWU3NTJkMjQyYTAxMjRjMDYxYjIw
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNjEsNyArMTI2MSw3IEBACiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJE
RkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFB
RjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRo
TUxOYW1lcy5oICovOyB9OwotCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Ki87IH07CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUw
NDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEM5OTE4NjBGM0QxRUJF
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxi
YXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwogCQk0NEUzNDlGOTI0NkY0
RTE5MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5RjcyNDZGNERDNzAwNjg0NzlDIC8qIExp
YldlYlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDUwYmNjYjA4ZTAwMDFm
MzE3NjNhNGQ1ZjcyNzRkZjViMDUzODFlZTkuLmYwYjQ1MWQ5ZmE2NDYxODhlOGFiYzI2MjE0ZTdk
YmE2NTlkMWVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2Myw2ICsyNjMs
OCBAQCB2b2lkIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6c2V0U2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICAgICBhdXRvIG9wdGlvbnMgPSBGcmFtZVNlbGVj
dGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKICAgICBpZiAobV9vcHRpb25zICYg
VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpEb05vdFNldEZvY3VzKQogICAgICAgICBvcHRpb25z
LmFkZChGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgaWYgKG1fb3B0aW9ucyAm
IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6UmV2ZWFsU2VsZWN0aW9uKQorICAgICAgICBvcHRp
b25zLmFkZChGcmFtZVNlbGVjdGlvbjo6UmV2ZWFsU2VsZWN0aW9uKTsKICAgICBtX2RvY3VtZW50
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBvcHRpb25zKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggY2RiZmZhMGM2YTA1MmIwZTFmYTAxY2QxZmQ5MzFkYmNiZmRkZjU2
OS4uNzliYWE4M2I0OTc3ZDJhN2Q4Zjg5NGEyN2MyZmI2YWQyM2IyMDg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xNjIwLDkgKzE2MjAsMTAgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewog
ICAgICAgICBkb2N1bWVudC51cGRhdGVIaWdobGlnaHRQb3NpdGlvbnMoKTsKICAgICB9KTsKLSNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVCkKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAg
Zm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKCFh
dXRvIGFwcEhpZ2hsaWdodFN0b3JhZ2UgPSBkb2N1bWVudC5hcHBIaWdobGlnaHRTdG9yYWdlSWZF
eGlzdHMoKSkKKyAgICAgICAgYXV0byBhcHBIaWdobGlnaHRTdG9yYWdlID0gZG9jdW1lbnQuYXBw
SGlnaGxpZ2h0U3RvcmFnZUlmRXhpc3RzKCk7CisgICAgICAgIGlmICghYXBwSGlnaGxpZ2h0U3Rv
cmFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGlmIChhcHBIaWdo
bGlnaHRTdG9yYWdlLT5oYXNVbnJlc3RvcmVkSGlnaGxpZ2h0cygpICYmIE1vbm90b25pY1RpbWU6
Om5vdygpIC0gYXBwSGlnaGxpZ2h0U3RvcmFnZS0+bGFzdFJhbmdlU2VhcmNoVGltZSgpID4gMV9z
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCA2ZGY4YTYwOTM3NWIyMjc1Yjg5ODIyMTQ5OTg5ZGJmYTk0YTkyZWU4Li42OGZlM2Q2NTQ4
MTcxYjFmZmUwODBiZThiOWRjZTQzZWYwNjM4YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxNTMsMjQgKzIxNTMsNDMgQEAgLSAo
dm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJh
Y2tTdXNwZW5kZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAorI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKK3N0YXRpYyB2b2lkIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9y
PFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+ICZidWZmZXJzLCBOU0RhdGEqIGhpZ2hsaWdodCkK
K3sKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZShoaWdobGlnaHQubGVuZ3RoKTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAgICAgIFto
aWdobGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5s
ZW5ndGhdOworICAgICAgICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKKyAgICB9Cit9
CisjZW5kaWYKKwogLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRh
ICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBWZWN0
b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKIAotICAgIGZvciAoTlNEYXRh
ICpoaWdobGlnaHQgaW4gaGlnaGxpZ2h0cykgewotICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShoaWdobGlnaHQubGVuZ3RoKTsKLSAgICAg
ICAgaWYgKHNoYXJlZE1lbW9yeSkgewotICAgICAgICAgICAgW2hpZ2hsaWdodCBnZXRCeXRlczpz
aGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6aGlnaGxpZ2h0Lmxlbmd0aF07Ci0gICAgICAgICAg
ICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBf
cGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVmZmVycyk7CisgICAgZm9yIChOU0RhdGEgKmhp
Z2hsaWdodCBpbiBoaWdobGlnaHRzKQorICAgICAgICBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KGJ1
ZmZlcnMsIGhpZ2hsaWdodCk7CisgICAgCisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBXVEY6Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIH0KIAorLSAodm9pZClfcmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQKK3sKKyNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCisgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZl
cnM7CisgICAgCisgICAgY29udmVydEFuZEFkZEhpZ2hsaWdodChidWZmZXJzLCBoaWdobGlnaHQp
OworICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVy
cywgMCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHQpOworI2VuZGlmCit9CisK
IC0gKHZvaWQpX2FkZEFwcEhpZ2hsaWdodAogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDc0MGUwNmNiMjM1MGQwNmY5MWMyMTNjZWZkNjc5YWQ2ZjA3ZDU5ZGMuLjU1
ZDAxOWRlYWZiMmQyYmJhNDM3NGQ2MzUyZmU2NzM1NWJiMWY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzY3
LDcgKzM2Nyw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlkRGlzYWJsZUJyb3dz
ZXJFeHRlbnNpb25zOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxf
V0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0
b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKilkYXRhIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0b3Jl
QXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0
b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfYWRk
QXBwSGlnaGxpZ2h0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfdGhlbWVDb2xv
cl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAxMDA5YjhmNDJmZDdjYTMzMTk5NTdh
MmY0ZDNjMmQyMjU3NThiZDk4Li5lMzdhZGY4ZTQ3YTUzMzExZTQzYTI0ZjBkNTEyNDY1ODhlNTg4
MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JICiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKGNyZWF0ZU5ld0dyb3VwLCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+JiBoaWdobGlnaHRzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+JiBo
aWdobGlnaHRzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC01NzMsNyArNTczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8
U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWcKICAgICAgICAgbWVtb3J5SGFuZGxlcy5hcHBlbmQoU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGhpZ2hsaWdodC0+c2l6ZSgp
IH0pOwogICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdo
bGlnaHRzKFdURk1vdmUobWVtb3J5SGFuZGxlcykpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoV1RGTW92ZShtZW1vcnlI
YW5kbGVzKSwgaW5kZXgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGI3ZDRhMDU4NTE4ZDg1NGE3YTFlZjQ2ZTE1MzM2NjQwODE3YTI0Yzgu
LjhmNDAzMThmOTk5YWY5NjAxNzE5NzU0ZDc4NWQ4OGE2NGFmODlkOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LCBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKTsKICAgICB2b2lkIHN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpOwotICAgIHZvaWQgcmVzdG9yZUFw
cEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdo
bGlnaHRzKTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChj
b25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0
IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGNkOWMyYzA4NDE4ZThjMDZmMTRkMWExN2VmOWFlZjA5ZWMwMmI2NDEuLjUzNzA1N2UwNGMy
NTBkYWI3NmZiMWY4ZGRiNWIxNzk3YTA3NzU2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDg1LDE1ICs3NDg1LDE4IEBAIGJvb2wgV2Vi
UGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYm
IG1lbW9yeUhhbmRsZXMpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Ny
b2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5
SGFuZGxlcywgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewogICAgIGF1dG8gZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKKyAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKICAgICAgICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgp
KSk7CisKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkpLCBp
ID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpO
byk7CisgICAgICAgIGkrKzsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1MTQ2NDlhYjQ0ZjRiYTU2MmUzZjFhNmE1OWE3
NGMwYzQwMjllNmZlLi4yOGZkNDZjNzViYzc3ZmEwZDMwZGJiODJiNTE2N2Y5NjZkMDNkOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDE3LDcg
KzE0MTcsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKCkgY29uc3QgeyByZXR1cm4g
bV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOyB9CiAKICAgICBib29sIGNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9p
ZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGU+JiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNv
bnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiwgY29uc3QgT3B0aW9uYWw8dW5z
aWduZWQ+IGluZGV4KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRo
b3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE3NmM0ZTU1ODkxMGJjYzY1YzIxY2RjZWFkYWVkY2Mz
NGUyZTFhYjUuLjMxYTZkN2JiYWIzNjA4NGUxN2JjMDQxOTAxZDc1OWRiNmI1MjI3YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtNjI4LDcgKzYyOCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVO
ZXdHcm91cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAgcmVxdWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKKyAgICBSZXN0b3JlQXBw
SGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKICNlbmRp
ZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldo
ZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTAxYTk0OTUxODg2NjZjNTVlYzZm
YzYxMWVhOTg1NDJlZjQ4MmNlYy4uNDJjNDM3ZTE4M2Y0MGMwZTAzMDg5NTQ2ZmUwNjkxNGQyYmI2
YzIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5l
ckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBzY3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBB
cHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBp
biB3ZWIgYXBwbGljYXRpb24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2Vi
VmlldyB0aGVtZUNvbG9yXWAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggM2UzYjdkYjNlNjc3NWEzYzFl
Mjg3ZGFjNDAwMTY1YTM5MGE5MTI0Mi4uM2FmNzY5YjViYTM4OGM1ZDI3NzlmZjIzYTE5YmRhZDgy
NDhkNzhiNCAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0FwcEhpZ2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KQEAgLTg1LDYgKzg1LDM2IEBAIFRFU1QoQXBwSGln
aGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKICAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKIH0KIAorVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdo
bGlnaHRDcmVhdGVBbmRSZXN0b3JlQW5kU2Nyb2xsKQoreworICAgIFdLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25m
aWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aElu
dGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOworICAgIGF1dG8gZGVsZWdhdGUg
PSBhZG9wdE5TKFtbQXBwSGlnaGxpZ2h0RGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBhdXRv
IHdlYlZpZXdDcmVhdGUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhG
cmFtZTpDR1JlY3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRp
b25dKTsKKyAgICBhdXRvIHdlYlZpZXdSZXN0b3JlID0gYWRvcHROUyhbW1Rlc3RXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAsIDUwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgW3dlYlZpZXdDcmVhdGUgX3NldEFwcEhpZ2hsaWdo
dERlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxlPSdoZWlnaHQ6IDEwMDBweCc+VGVzdDwvZGl2
PiJdOworICAgIFt3ZWJWaWV3Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJk
b2N1bWVudC5leGVjQ29tbWFuZCgnU2VsZWN0QWxsJykiXTsKKyAgICBfX2Jsb2NrIGJvb2wgZmlu
aXNoZWQgPSBOTzsKKyAgICBbZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpe
KFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwg
Qk9PTCBpbk5ld0dyb3VwKSB7CisgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcsIHdl
YlZpZXdDcmVhdGUuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0KTsK
KyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKKyAgICAg
ICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodC5oaWdobGlnaHQpOworICAgICAgICAKKyAgICAg
ICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsK
KyAgICAgICAgW3dlYlZpZXdSZXN0b3JlIF9yZXN0b3JlQXBwSGlnaGxpZ2h0czpAWyBoaWdobGln
aHQuaGlnaGxpZ2h0IF1dOworICAgICAgICAKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6
d2FpdEZvckNvbmRpdGlvbldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAg
IHJldHVybiBbd2ViVmlld1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImlu
dGVybmFscy5udW1iZXJPZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgICAg
IH0sIDIsIEAiRXhwZWN0ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CisgICAgICAg
IEVYUEVDVF9ORSgwLCBbW3dlYlZpZXdSZXN0b3JlIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3Jp
cHQ6QCJwYWdlWU9mZnNldCJdIGZsb2F0VmFsdWVdKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlz
aGVkID0gWUVTOworICAgIH1dOworICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRd
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQorCiBURVNUKEFw
cEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodFJlc3RvcmVGYWlsdXJlKQogewogICAgIFdLV2ViVmll
d0NvbmZpZ3VyYXRpb24gKmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBf
dGVzdF9jb25maWd1cmF0aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1
Z0luV2l0aEludGVybmFscyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426640</attachid>
            <date>2021-04-20 21:23:38 -0700</date>
            <delta_ts>2021-04-20 22:09:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210420212337.patch</filename>
            <type>text/plain</type>
            <size>24920</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhYTk0NmNiYmEyM2Zk
ZTFmZmJiM2RkYWI0ZjE2MDNkZGFkMGJkNy4uYTIyMTZiYTYwZjU0NzAwMjM3YTYyYjk3NWFkZjU0
ZDY0Njk0MTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEFwcEhpZ2hsaWdodHM6OkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwKKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVu
cmVzdG9yZWRBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYmJiNjNkMzFkM2MyY2EyOGJmMDFiZmEyYWZhZTg0M2QyNzAyNTIyMS4u
NjdkN2U0YTQ4MDA4MWRkODZlYjI0MjU1YWMzMmM4YWI5ZjIzN2U1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wNC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgc2Nyb2xsaW5nIHRvIGEgc2VsZWN0ZWQgQXBwSGln
aGxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQ3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAocmVzdG9yZUhpZ2hs
aWdodCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZjBlNDBkMjFmODRmMGI5MjVjY2IwYzFmOTBmYmEyMzM4
NmE3YjFjYi4uYWFmOTYxMzg5Y2UxOTM2ZmNlNmM1YWZkMjc3NzhiYmNmNWE2NmMzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpZ2hsaWdodFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMjI5LDQ0ICsy
MzAsNTcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hs
aWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xs
KQogewotICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1
dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwotCiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKCphcHBIaWdobGlnaHRSYW5nZURhdGEs
ICpzdHJvbmdEb2N1bWVudCk7CiAgICAgCi0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgbV91bnJl
c3RvcmVkSGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCku
YWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7CisgICAgaWYgKCFh
dHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKGFwcEhpZ2hsaWdodFJhbmdlRGF0YS52
YWx1ZSgpLCBzY3JvbGwpKSB7CisgICAgICAgIGlmIChzY3JvbGwgPT0gU2Nyb2xsVG9IaWdobGln
aHQ6OlllcykKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCA9IGFwcEhp
Z2hsaWdodFJhbmdlRGF0YTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV91bnJlc3RvcmVk
SGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOworICAgIH0K
ICAgICAKICAgICBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVVbnJlc3RvcmVkQXBwSGln
aGxpZ2h0cygpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdo
bGlnaHRBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiBoaWdobGlnaHQsIFNjcm9sbFRv
SGlnaGxpZ2h0IHNjcm9sbCkKIHsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBy
ZW1haW5pbmdSYW5nZXM7Ci0KICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBt
YWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIAorICAgIGF1dG8gcmFuZ2UgPSBmaW5k
UmFuZ2UoaGlnaGxpZ2h0LCAqc3Ryb25nRG9jdW1lbnQpOworICAgIAorICAgIGlmICghcmFuZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGln
aGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFu
Z2UpKTsKKyAgICAKKyAgICBpZiAoc2Nyb2xsID09IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMpIHsK
KyAgICAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uczsKKyAgICAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVt
cG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24pOworICAgICAgICBUZW1wb3Jh
cnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpzdHJvbmdEb2N1bWVudCwgeyByYW5n
ZS52YWx1ZSgpIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlVW5yZXN0b3Jl
ZEFwcEhpZ2hsaWdodHMoKQoreworICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJl
bWFpbmluZ1JhbmdlczsKKyAgICAKICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IG1fdW5yZXN0
b3JlZEhpZ2hsaWdodHMpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShoaWdobGln
aHQsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXJhbmdlKQorICAg
ICAgICBpZiAoIWF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3JvbGwoaGlnaGxpZ2h0LCBT
Y3JvbGxUb0hpZ2hsaWdodDo6Tm8pKQogICAgICAgICAgICAgcmVtYWluaW5nUmFuZ2VzLmFwcGVu
ZChoaWdobGlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJvbmdEb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZSgqcmFuZ2UpKTsKICAgICB9CisgICAgaWYgKG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCkg
eworICAgICAgICBpZiAoYXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChtX3VucmVz
dG9yZWRTY3JvbGxIaWdobGlnaHQudmFsdWUoKSwgU2Nyb2xsVG9IaWdobGlnaHQ6OlllcykpCisg
ICAgICAgICAgICBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQucmVzZXQoKTsKKyAgICB9Cisg
ICAgICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgbV91bnJlc3RvcmVkSGlnaGxpZ2h0cyA9IFdURk1vdmUocmVtYWluaW5nUmFuZ2Vz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaAppbmRleCAwMDc1YTA3Nzk1MmY1ZjI4YjRjYWU0ZmM2MDEwYzNkNTcy
MTNjMTQwLi5mZjNiYzcwYjAxMDEwMWJjYjFmY2RhYzRjY2NlYjc4MjNkNjdlNWNlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTM3
LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwpAQCAtNDcsNiArNDcsOCBAQCBl
bnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogZW51bSBjbGFz
cyBSZXN0b3JlV2l0aFRleHRTZWFyY2ggOiBib29sIHsgTm8sIFllcyB9OwogCitlbnVtIGNsYXNz
IFNjcm9sbFRvSGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgQXBwSGlnaGxp
Z2h0U3RvcmFnZSBmaW5hbCA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTQsMTYgKzU2LDE4IEBAIHB1
YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5y
ZXN0b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJj
aFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZv
aWQgcmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOyB9CiAgICAgYm9vbCBoYXNVbnJlc3RvcmVkSGlnaGxpZ2h0
cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZXN0b3JlZEhpZ2hsaWdodHMuc2l6ZSgpOyB9CiAKIHBy
aXZhdGU6CisgICAgYm9vbCBhdHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKEFwcEhp
Z2hsaWdodFJhbmdlRGF0YSYsIFNjcm9sbFRvSGlnaGxpZ2h0KTsKICAgICBXZWFrUHRyPERvY3Vt
ZW50PiBtX2RvY3VtZW50OwogICAgIE1vbm90b25pY1RpbWUgbV90aW1lQXRMYXN0UmFuZ2VTZWFy
Y2g7CiAgICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV91bnJlc3RvcmVkSGlnaGxp
Z2h0czsKKyAgICBPcHRpb25hbDxBcHBIaWdobGlnaHRSYW5nZURhdGE+IG1fdW5yZXN0b3JlZFNj
cm9sbEhpZ2hsaWdodDsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDY4OGFiYmJkZjEzMjExYTQ2ZDcyZWMz
YTU2ZjI0NmQ2NDU1ZDI3MDkuLjRjYTU4OTI3YzdlYjQxMjc1ZWU3NTJkMjQyYTAxMjRjMDYxYjIw
MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKQEAgLTEyNjEsNyArMTI2MSw3IEBACiAJCTQ0QTIwREI5MEY4NDE2NkMwMEIzRTFGRSAv
KiBXZWJDb3JlVVJMUmVzcG9uc2VJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQ0QTIwREI4MEY4NDE2NkMwMEIzRTFGRSAvKiBXZWJDb3JlVVJMUmVz
cG9uc2VJT1MuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9
OwogCQk0NEEyOEFBQzEyREZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFCMTJE
RkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oICovOyB9OwogCQk0NEEyOEFB
RjEyREZCOEJGMDBBRTkyM0IgLyogTWF0aE1MTmFtZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QTI4QUFFMTJERkI4QkYwMEFFOTIzQiAvKiBNYXRo
TUxOYW1lcy5oICovOyB9OwotCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxp
Z2h0UmFuZ2VEYXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA0NEFFMDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmgg
Ki87IH07CisJCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURh
dGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0QUUw
NDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk0NEM5OTE4NjBGM0QxRUJF
MDA1ODY2NzAgLyogU2Nyb2xsYmFyVGhlbWVJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5MTg1MEYzRDFFQkUwMDU4NjY3MCAvKiBTY3JvbGxi
YXJUaGVtZUlPUy5oICovOyB9OwogCQk0NEM5OTE5RjBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJ
T1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0Qzk5
MTlEMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlPUy5oICovOyB9OwogCQk0NEUzNDlGOTI0NkY0
RTE5MDA2ODQ3OUMgLyogTGliV2ViUlRDRW51bVRyYWl0cy5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRFMzQ5RjcyNDZGNERDNzAwNjg0NzlDIC8qIExp
YldlYlJUQ0VudW1UcmFpdHMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCmluZGV4IDUwYmNjYjA4ZTAwMDFm
MzE3NjNhNGQ1ZjcyNzRkZjViMDUzODFlZTkuLmYwYjQ1MWQ5ZmE2NDYxODhlOGFiYzI2MjE0ZTdk
YmE2NTlkMWVjMGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKQEAgLTI2Myw2ICsyNjMs
OCBAQCB2b2lkIFRlbXBvcmFyeVNlbGVjdGlvbkNoYW5nZTo6c2V0U2VsZWN0aW9uKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKICAgICBhdXRvIG9wdGlvbnMgPSBGcmFtZVNlbGVj
dGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKTsKICAgICBpZiAobV9vcHRpb25zICYg
VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpEb05vdFNldEZvY3VzKQogICAgICAgICBvcHRpb25z
LmFkZChGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgaWYgKG1fb3B0aW9ucyAm
IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6UmV2ZWFsU2VsZWN0aW9uKQorICAgICAgICBvcHRp
b25zLmFkZChGcmFtZVNlbGVjdGlvbjo6UmV2ZWFsU2VsZWN0aW9uKTsKICAgICBtX2RvY3VtZW50
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oc2VsZWN0aW9uLCBvcHRpb25zKTsKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUGFnZS5jcHAKaW5kZXggY2RiZmZhMGM2YTA1MmIwZTFmYTAxY2QxZmQ5MzFkYmNiZmRkZjU2
OS4uNzliYWE4M2I0OTc3ZDJhN2Q4Zjg5NGEyN2MyZmI2YWQyM2IyMDg0YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1Bh
Z2UuY3BwCkBAIC0xNjIwLDkgKzE2MjAsMTAgQEAgdm9pZCBQYWdlOjpkb0FmdGVyVXBkYXRlUmVu
ZGVyaW5nKCkKICAgICBmb3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewog
ICAgICAgICBkb2N1bWVudC51cGRhdGVIaWdobGlnaHRQb3NpdGlvbnMoKTsKICAgICB9KTsKLSNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVCkKKyNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAg
Zm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsKLSAgICAgICAgaWYgKCFh
dXRvIGFwcEhpZ2hsaWdodFN0b3JhZ2UgPSBkb2N1bWVudC5hcHBIaWdobGlnaHRTdG9yYWdlSWZF
eGlzdHMoKSkKKyAgICAgICAgYXV0byBhcHBIaWdobGlnaHRTdG9yYWdlID0gZG9jdW1lbnQuYXBw
SGlnaGxpZ2h0U3RvcmFnZUlmRXhpc3RzKCk7CisgICAgICAgIGlmICghYXBwSGlnaGxpZ2h0U3Rv
cmFnZSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCiAgICAgICAgIGlmIChhcHBIaWdo
bGlnaHRTdG9yYWdlLT5oYXNVbnJlc3RvcmVkSGlnaGxpZ2h0cygpICYmIE1vbm90b25pY1RpbWU6
Om5vdygpIC0gYXBwSGlnaGxpZ2h0U3RvcmFnZS0+bGFzdFJhbmdlU2VhcmNoVGltZSgpID4gMV9z
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJW
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpp
bmRleCA2ZGY4YTYwOTM3NWIyMjc1Yjg5ODIyMTQ5OTg5ZGJmYTk0YTkyZWU4Li42OGZlM2Q2NTQ4
MTcxYjFmZmUwODBiZThiOWRjZTQzZWYwNjM4YjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTIxNTMsMjQgKzIxNTMsNDMgQEAgLSAo
dm9pZClfcmVzdW1lQWxsTWVkaWFQbGF5YmFjawogICAgIFtzZWxmIHNldEFsbE1lZGlhUGxheWJh
Y2tTdXNwZW5kZWQ6Tk8gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKIH0KIAorI2lmIEVOQUJMRShB
UFBfSElHSExJR0hUUykKK3N0YXRpYyB2b2lkIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoVmVjdG9y
PFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+ICZidWZmZXJzLCBOU0RhdGEqIGhpZ2hsaWdodCkK
K3sKKyAgICBhdXRvIHNoYXJlZE1lbW9yeSA9IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0
ZShoaWdobGlnaHQubGVuZ3RoKTsKKyAgICBpZiAoc2hhcmVkTWVtb3J5KSB7CisgICAgICAgIFto
aWdobGlnaHQgZ2V0Qnl0ZXM6c2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5s
ZW5ndGhdOworICAgICAgICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKKyAgICB9Cit9
CisjZW5kaWYKKwogLSAodm9pZClfcmVzdG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRh
ICo+ICopaGlnaGxpZ2h0cwogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBWZWN0
b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVyczsKIAotICAgIGZvciAoTlNEYXRh
ICpoaWdobGlnaHQgaW4gaGlnaGxpZ2h0cykgewotICAgICAgICBhdXRvIHNoYXJlZE1lbW9yeSA9
IFdlYktpdDo6U2hhcmVkTWVtb3J5OjphbGxvY2F0ZShoaWdobGlnaHQubGVuZ3RoKTsKLSAgICAg
ICAgaWYgKHNoYXJlZE1lbW9yeSkgewotICAgICAgICAgICAgW2hpZ2hsaWdodCBnZXRCeXRlczpz
aGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6aGlnaGxpZ2h0Lmxlbmd0aF07Ci0gICAgICAgICAg
ICBidWZmZXJzLmFwcGVuZCgqc2hhcmVkTWVtb3J5KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBf
cGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHMoYnVmZmVycyk7CisgICAgZm9yIChOU0RhdGEgKmhp
Z2hsaWdodCBpbiBoaWdobGlnaHRzKQorICAgICAgICBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KGJ1
ZmZlcnMsIGhpZ2hsaWdodCk7CisgICAgCisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRz
QW5kU2Nyb2xsVG9JbmRleChidWZmZXJzLCBXVEY6Om51bGxvcHQpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oaGlnaGxpZ2h0cyk7CiAjZW5kaWYKIH0KIAorLSAodm9pZClfcmVzdG9yZUFuZFNj
cm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQKK3sKKyNpZiBFTkFCTEUoQVBQ
X0hJR0hMSUdIVFMpCisgICAgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZl
cnM7CisgICAgCisgICAgY29udmVydEFuZEFkZEhpZ2hsaWdodChidWZmZXJzLCBoaWdobGlnaHQp
OworICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVy
cywgMCk7CisjZWxzZQorICAgIFVOVVNFRF9QQVJBTShoaWdobGlnaHQpOworI2VuZGlmCit9CisK
IC0gKHZvaWQpX2FkZEFwcEhpZ2hsaWdodAogewogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJp
dmF0ZS5oCmluZGV4IDc0MGUwNmNiMjM1MGQwNmY5MWMyMTNjZWZkNjc5YWQ2ZjA3ZDU5ZGMuLjU1
ZDAxOWRlYWZiMmQyYmJhNDM3NGQ2MzUyZmU2NzM1NWJiMWY1NDggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaApAQCAtMzY3
LDcgKzM2Nyw4IEBAIGZvciB0aGlzIHByb3BlcnR5LgogLSAodm9pZClfZGlkRGlzYWJsZUJyb3dz
ZXJFeHRlbnNpb25zOihOU1NldDxOU1N0cmluZyAqPiAqKWV4dGVuc2lvbklEcyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkg
KG5vbmF0b21pYywgd2Vhaywgc2V0dGVyPV9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTopIGlkIDxf
V0tBcHBIaWdobGlnaHREZWxlZ2F0ZT4gX2FwcEhpZ2hsaWdodERlbGVnYXRlIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7Ci0tICh2b2lkKV9yZXN0
b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKilkYXRhIFdLX0FQSV9BVkFJTEFC
TEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0b3Jl
QXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEgKj4gKiloaWdobGlnaHRzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9yZXN0
b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodCBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAodm9pZClfYWRk
QXBwSGlnaGxpZ2h0IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19J
T1NfVEJBKSk7CiAKIC8vIEZJWE1FOiBSZW1vdmUgb2xkIGAtW1dLV2ViVmlldyBfdGhlbWVDb2xv
cl1gIFNQSSA8cmRhcjovLzc2NjYyNjQ0PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbQppbmRleCAxMDA5YjhmNDJmZDdjYTMzMTk5NTdh
MmY0ZDNjMmQyMjU3NThiZDk4Li5lMzdhZGY4ZTQ3YTUzMzExZTQzYTI0ZjBkNTEyNDY1ODhlNTg4
MmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJv
eHlDb2NvYS5tbQpAQCAtNTU5LDcgKzU1OSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpjcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JICiAg
ICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKGNyZWF0ZU5ld0dyb3VwLCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFNoYXJl
ZE1lbW9yeT4+JiBoaWdobGlnaHRzKQordm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdo
bGlnaHRzQW5kU2Nyb2xsVG9JbmRleChjb25zdCBWZWN0b3I8UmVmPFNoYXJlZE1lbW9yeT4+JiBo
aWdobGlnaHRzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgaWYgKCFo
YXNSdW5uaW5nUHJvY2VzcygpKQogICAgICAgICByZXR1cm47CkBAIC01NzMsNyArNTczLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8
U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWcKICAgICAgICAgbWVtb3J5SGFuZGxlcy5hcHBlbmQoU2hh
cmVkTWVtb3J5OjpJUENIYW5kbGUgeyBXVEZNb3ZlKGhhbmRsZSksIGhpZ2hsaWdodC0+c2l6ZSgp
IH0pOwogICAgIH0KIAotICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlc3RvcmVBcHBIaWdo
bGlnaHRzKFdURk1vdmUobWVtb3J5SGFuZGxlcykpKTsKKyAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlOjpSZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoV1RGTW92ZShtZW1vcnlI
YW5kbGVzKSwgaW5kZXgpKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5oCmluZGV4IGI3ZDRhMDU4NTE4ZDg1NGE3YTFlZjQ2ZTE1MzM2NjQwODE3YTI0Yzgu
LjhmNDAzMThmOTk5YWY5NjAxNzE5NzU0ZDc4NWQ4OGE2NGFmODlkOTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCkBAIC0xODg2LDcgKzE4ODYsNyBAQCBwdWJsaWM6CiAj
aWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIHZvaWQgY3JlYXRlQXBwSGlnaGxpZ2h0SW5T
ZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0LCBXZWJDb3Jl
OjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKTsKICAgICB2b2lkIHN0b3JlQXBwSGln
aGxpZ2h0KGNvbnN0IFdlYkNvcmU6OkFwcEhpZ2hsaWdodCYpOwotICAgIHZvaWQgcmVzdG9yZUFw
cEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdo
bGlnaHRzKTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChj
b25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGhpZ2hsaWdodHMsIGNvbnN0
IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCk7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShNRURJQV9T
VFJFQU0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCmlu
ZGV4IGNkOWMyYzA4NDE4ZThjMDZmMTRkMWExN2VmOWFlZjA5ZWMwMmI2NDEuLjUzNzA1N2UwNGMy
NTBkYWI3NmZiMWY4ZGRiNWIxNzk3YTA3NzU2NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCkBAIC03NDg1LDE1ICs3NDg1LDE4IEBAIGJvb2wgV2Vi
UGFnZTo6Y3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5l
d0dyb3VwRm9ySGlnaGxpCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgV2ViUGFnZTo6cmVz
dG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYm
IG1lbW9yeUhhbmRsZXMpCit2b2lkIFdlYlBhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Ny
b2xsVG9JbmRleChjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYgbWVtb3J5
SGFuZGxlcywgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewogICAgIGF1dG8gZG9j
dW1lbnQgPSBtYWtlUmVmUHRyKG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKKyAgICB1bnNpZ25lZCBpID0gMDsKICAgICBmb3IgKGNv
bnN0IGF1dG8mIGlwY0hhbmRsZSA6IG1lbW9yeUhhbmRsZXMpIHsKICAgICAgICAgYXV0byBzaGFy
ZWRNZW1vcnkgPSBTaGFyZWRNZW1vcnk6Om1hcChpcGNIYW5kbGUuaGFuZGxlLCBTaGFyZWRNZW1v
cnk6OlByb3RlY3Rpb246OlJlYWRPbmx5KTsKICAgICAgICAgaWYgKCFzaGFyZWRNZW1vcnkpCiAg
ICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3Jh
Z2UoKS5yZXN0b3JlQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0
PGNvbnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgp
KSk7CisKKyAgICAgICAgZG9jdW1lbnQtPmFwcEhpZ2hsaWdodFN0b3JhZ2UoKS5yZXN0b3JlQW5k
U2Nyb2xsVG9BcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8Y29u
c3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkpLCBp
ID09IGluZGV4ID8gU2Nyb2xsVG9IaWdobGlnaHQ6OlllcyA6IFNjcm9sbFRvSGlnaGxpZ2h0OjpO
byk7CisgICAgICAgIGkrKzsKICAgICB9CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAppbmRleCA1MTQ2NDlhYjQ0ZjRiYTU2MmUzZjFhNmE1OWE3
NGMwYzQwMjllNmZlLi4yOGZkNDZjNzViYzc3ZmEwZDMwZGJiODJiNTE2N2Y5NjZkMDNkOTMwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKKysr
IGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCkBAIC0xNDE3LDcg
KzE0MTcsNyBAQCBwdWJsaWM6CiAgICAgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCBoaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKCkgY29uc3QgeyByZXR1cm4g
bV9oaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwOyB9CiAKICAgICBib29sIGNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hs
aWdodCwgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7Ci0gICAgdm9p
ZCByZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5k
bGU+JiYpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNv
bnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiwgY29uc3QgT3B0aW9uYWw8dW5z
aWduZWQ+IGluZGV4KTsKICNlbmRpZgogCiAgICAgdm9pZCBkaXNwYXRjaFdoZWVsRXZlbnRXaXRo
b3V0U2Nyb2xsaW5nKGNvbnN0IFdlYldoZWVsRXZlbnQmLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KGJvb2wpPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLm1lc3NhZ2VzLmluCmluZGV4IDE3NmM0ZTU1ODkxMGJjYzY1YzIxY2RjZWFkYWVkY2Mz
NGUyZTFhYjUuLjMxYTZkN2JiYWIzNjA4NGUxN2JjMDQxOTAxZDc1OWRiNmI1MjI3YmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMu
aW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdl
cy5pbgpAQCAtNjI4LDcgKzYyOCw3IEBAIEdlbmVyYXRlU3ludGhldGljRWRpdGluZ0NvbW1hbmQo
ZW51bTp1aW50OF90IFdlYktpdDo6U3ludGhldGljRWRpdGluZ0NvbW1hbmRUeXBlCiAKICNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgQ3JlYXRlQXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJh
bmdlKGVudW06Ym9vbCBXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCBjcmVhdGVO
ZXdHcm91cCwgZW51bTpib29sIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5B
cHAgcmVxdWVzdE9yaWdpbikKLSAgICBSZXN0b3JlQXBwSGlnaGxpZ2h0cyhWZWN0b3I8V2ViS2l0
OjpTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4gbWVtb3J5SGFuZGxlcykKKyAgICBSZXN0b3JlQXBw
SGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoVmVjdG9yPFdlYktpdDo6U2hhcmVkTWVtb3J5OjpJ
UENIYW5kbGU+IG1lbW9yeUhhbmRsZXMsIE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKICNlbmRp
ZgogCiAgICAgRGlzcGF0Y2hXaGVlbEV2ZW50V2l0aG91dFNjcm9sbGluZyhXZWJLaXQ6OldlYldo
ZWVsRXZlbnQgZXZlbnQpIC0+IChib29sIGhhbmRsZWQpIEFzeW5jCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZTAxYTk0OTUxODg2NjZjNTVlYzZm
YzYxMWVhOTg1NDJlZjQ4MmNlYy4uNDJjNDM3ZTE4M2Y0MGMwZTAzMDg5NTQ2ZmUwNjkxNGQyYmI2
YzIyMSAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5l
ckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBzY3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBB
cHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW06
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpURVNUKToKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91
c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBp
biB3ZWIgYXBwbGljYXRpb24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2Vi
VmlldyB0aGVtZUNvbG9yXWAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMv
V2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KaW5kZXggM2UzYjdkYjNlNjc3NWEzYzFl
Mjg3ZGFjNDAwMTY1YTM5MGE5MTI0Mi4uY2ZlNzlkMmZlNzVhZjVjNzhhOTViZjk5OTMxMmQ5Mzdj
YTIzZDQxMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9XS0FwcEhpZ2hsaWdodHMubW0KKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9XS0FwcEhpZ2hsaWdodHMubW0KQEAgLTQzLDE0ICs0MywxNCBAQAogI2VuZGlmCiAK
IEBpbnRlcmZhY2UgQXBwSGlnaGxpZ2h0RGVsZWdhdGUgOiBOU09iamVjdCA8X1dLQXBwSGlnaGxp
Z2h0RGVsZWdhdGU+Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnN0b3JlQXBw
SGlnaGxpZ2h0Q2FsbGJhY2spKFdLV2ViVmlldyAqLCBfV0tBcHBIaWdobGlnaHQgKiwgQk9PTCk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXnN0b3JlQXBwSGlnaGxpZ2h0Q2Fs
bGJhY2spKFdLV2ViVmlldyAqLCBfV0tBcHBIaWdobGlnaHQgKiwgQk9PTCwgQk9PTCk7CiBAZW5k
CiAKIEBpbXBsZW1lbnRhdGlvbiBBcHBIaWdobGlnaHREZWxlZ2F0ZQotLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9yZUFwcEhpZ2hsaWdodDooX1dLQXBwSGlnaGxpZ2h0
ICopaGlnaGxpZ2h0IGluTmV3R3JvdXA6KEJPT0wpaW5OZXdHcm91cAorLSAodm9pZClfd2ViVmll
dzooV0tXZWJWaWV3ICopd2ViVmlldyBzdG9yZUFwcEhpZ2hsaWdodDooX1dLQXBwSGlnaGxpZ2h0
ICopaGlnaGxpZ2h0IGluTmV3R3JvdXA6KEJPT0wpaW5OZXdHcm91cCByZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwOihCT09MKXJlcXVlc3RPcmlnaW5hdGVkSW5BcHAKIHsKICAgICBpZiAoX3N0b3JlQXBw
SGlnaGxpZ2h0Q2FsbGJhY2spCi0gICAgICAgIF9zdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrKHdl
YlZpZXcsIGhpZ2hsaWdodCwgaW5OZXdHcm91cCk7CisgICAgICAgIF9zdG9yZUFwcEhpZ2hsaWdo
dENhbGxiYWNrKHdlYlZpZXcsIGhpZ2hsaWdodCwgaW5OZXdHcm91cCwgcmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcCk7CiB9CiBAZW5kCiAKQEAgLTY2LDcgKzY2LDcgQEAgVEVTVChBcHBIaWdobGlnaHRz
LCBBcHBIaWdobGlnaHRDcmVhdGVBbmRSZXN0b3JlKQogICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNo
cm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIlRlc3QiXTsKICAgICBbd2ViVmlld0NyZWF0ZSBzdHJp
bmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVjdEFs
bCcpIl07CiAgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87Ci0gICAgW2RlbGVnYXRlIHNl
dFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmlldywg
X1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCkgeworICAgIFtkZWxl
Z2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdl
YlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wg
cmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkgewogICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJW
aWV3LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKICAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hs
aWdodCk7CiAgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7
CkBAIC04NSw2ICs4NSwzNiBAQCBURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0
ZUFuZFJlc3RvcmUpCiAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CiB9
CiAKK1RFU1QoQXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZUFuZFNj
cm9sbCkKK3sKKyAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1dL
V2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldpdGhUZXN0UGx1Z0luQ2xh
c3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNvbmZpZ3VyZUpTQ0ZvclRl
c3Rpbmc6WUVTXTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbW0FwcEhpZ2hsaWdodERl
bGVnYXRlIGFsbG9jXSBpbml0XSk7CisgICAgYXV0byB3ZWJWaWV3Q3JlYXRlID0gYWRvcHROUyhb
W1Rlc3RXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6Q0dSZWN0TWFrZSgwLCAwLCAzMjAs
IDUwMCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgYXV0byB3ZWJWaWV3UmVz
dG9yZSA9IGFkb3B0TlMoW1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVj
dE1ha2UoMCwgMCwgMzIwLCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAg
IFt3ZWJWaWV3Q3JlYXRlIF9zZXRBcHBIaWdobGlnaHREZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07
CisgICAgW3dlYlZpZXdDcmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiPGRpdiBz
dHlsZT0naGVpZ2h0OiAxMDAwcHgnPjwvZGl2PlRlc3QiXTsKKyAgICBbd2ViVmlld0NyZWF0ZSBz
dHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAiZG9jdW1lbnQuZXhlY0NvbW1hbmQoJ1NlbGVj
dEFsbCcpIl07CisgICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gTk87CisgICAgW2RlbGVnYXRl
IHNldFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVnYXRlV2ViVmll
dywgX1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwgQk9PTCByZXF1
ZXN0T3JpZ2luYXRlZEluQXBwKSB7CisgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0ZVdlYlZpZXcs
IHdlYlZpZXdDcmVhdGUuZ2V0KCkpOworICAgICAgICBFWFBFQ1RfTk9UX05VTEwoaGlnaGxpZ2h0
KTsKKyAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRlc3QiKTsKKyAg
ICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodC5oaWdobGlnaHQpOworICAgICAgICAKKyAg
ICAgICAgW3dlYlZpZXdSZXN0b3JlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYg
c3R5bGU9J2hlaWdodDogMTAwMHB4Jz48L2Rpdj5UZXN0Il07CisgICAgICAgIFt3ZWJWaWV3UmVz
dG9yZSBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OmhpZ2hsaWdodC5oaWdobGlnaHRd
OworICAgICAgICAKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6d2FpdEZvckNvbmRpdGlv
bldpdGhMb2dnaW5nKFsmXSAoKSAtPiBib29sIHsKKyAgICAgICAgICAgIHJldHVybiBbd2ViVmll
d1Jlc3RvcmUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImludGVybmFscy5udW1iZXJP
ZkFwcEhpZ2hsaWdodHMoKSJdLmludFZhbHVlID09IDE7CisgICAgICAgIH0sIDIsIEAiRXhwZWN0
ZWQgSGlnaGxpZ2h0cyB0byBiZSBwb3B1bGF0ZWQuIik7CisgICAgICAgIEVYUEVDVF9ORSgwLCBb
W3dlYlZpZXdSZXN0b3JlIG9iamVjdEJ5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJwYWdlWU9mZnNl
dCJdIGZsb2F0VmFsdWVdKTsKKyAgICAgICAgCisgICAgICAgIGZpbmlzaGVkID0gWUVTOworICAg
IH1dOworICAgIFt3ZWJWaWV3Q3JlYXRlIF9hZGRBcHBIaWdobGlnaHRdOworICAgIFRlc3RXZWJL
aXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworfQorCiBURVNUKEFwcEhpZ2hsaWdodHMsIEFw
cEhpZ2hsaWdodFJlc3RvcmVGYWlsdXJlKQogewogICAgIFdLV2ViVmlld0NvbmZpZ3VyYXRpb24g
KmNvbmZpZ3VyYXRpb24gPSBbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBfdGVzdF9jb25maWd1cmF0
aW9uV2l0aFRlc3RQbHVnSW5DbGFzc05hbWU6QCJXZWJQcm9jZXNzUGx1Z0luV2l0aEludGVybmFs
cyIgY29uZmlndXJlSlNDRm9yVGVzdGluZzpZRVNdOwpAQCAtOTUsNyArMTI1LDcgQEAgVEVTVChB
cHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRSZXN0b3JlRmFpbHVyZSkKICAgICBbd2ViVmlld0Ny
ZWF0ZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CiAgICAgW3dlYlZpZXdD
cmVhdGUgc3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5k
KCdTZWxlY3RBbGwnKSJdOwogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtk
ZWxlZ2F0ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0
ZVdlYlZpZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXApIHsK
KyAgICBbZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAq
ZGVsZWdhdGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dy
b3VwLCBCT09MIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKICAgICAgICAgRVhQRUNUX0VRKGRl
bGVnYXRlV2ViVmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9OT1Rf
TlVMTChoaWdobGlnaHQpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQs
IEAiVGVzdCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426647</attachid>
            <date>2021-04-20 22:09:13 -0700</date>
            <delta_ts>2021-04-20 23:14:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224773-20210420220912.patch</filename>
            <type>text/plain</type>
            <size>25035</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhYTk0NmNiYmEyM2Zk
ZTFmZmJiM2RkYWI0ZjE2MDNkZGFkMGJkNy4uYTIyMTZiYTYwZjU0NzAwMjM3YTYyYjk3NWFkZjU0
ZDY0Njk0MTRiYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRlc3Q6IEFwcEhpZ2hsaWdodHM6OkFwcEhpZ2hs
aWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwKKworICAgICAgICAqIE1vZHVsZXMvaGlnaGxp
Z2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxp
Z2h0U3RvcmFnZTo6cmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRT
Y3JvbGwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVu
cmVzdG9yZWRBcHBIaWdobGlnaHRzKToKKyAgICAgICAgKFdlYkNvcmU6OkFwcEhpZ2hsaWdodFN0
b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQpOiBEZWxldGVkLgorICAgICAgICAqIE1vZHVsZXMv
aGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaDoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogZWRpdGluZy9FZGl0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6VGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24pOgor
ICAgICAgICAqIHBhZ2UvUGFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpkb0FmdGVy
VXBkYXRlUmVuZGVyaW5nKToKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggYmJiNjNkMzFkM2MyY2EyOGJmMDFiZmEyYWZhZTg0M2QyNzAyNTIyMS4u
NjdkN2U0YTQ4MDA4MWRkODZlYjI0MjU1YWMzMmM4YWI5ZjIzN2U1YSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAyMS0wNC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRuZXJAYXBw
bGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgc2Nyb2xsaW5nIHRvIGEgc2VsZWN0ZWQgQXBwSGln
aGxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MjQ3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tOgorICAgICAgICAocmVzdG9yZUhpZ2hs
aWdodCk6CisgICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFwcEhpZ2hsaWdodHM6XSk6Cisg
ICAgICAgICgtW1dLV2ViVmlldyBfcmVzdG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0Ol0pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpy
ZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5tZXNzYWdlcy5pbjoKKwogMjAyMS0wNC0yMCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0Bh
cHBsZS5jb20+CiAKICAgICAgICAgUGFyc2UgYHRoZW1lX2NvbG9yYCBpbiB3ZWIgYXBwbGljYXRp
b24gbWFuaWZlc3RzIGFuZCBwYXNzIGl0IGFsb25nIHRvIGAtW1dLV2ViVmlldyB0aGVtZUNvbG9y
XWAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hs
aWdodFN0b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGln
aGxpZ2h0U3RvcmFnZS5jcHAKaW5kZXggZjBlNDBkMjFmODRmMGI5MjVjY2IwYzFmOTBmYmEyMzM4
NmE3YjFjYi4uYWFmOTYxMzg5Y2UxOTM2ZmNlNmM1YWZkMjc3NzhiYmNmNWE2NmMzZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFn
ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0
U3RvcmFnZS5jcHAKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlICJDaHJvbWUuaCIKICNpbmNs
dWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyQ29udHJvbGxlci5oIgor
I2luY2x1ZGUgIkVkaXRvci5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxlbWVudC5oIgogI2luY2x1
ZGUgIkhpZ2hsaWdodFJlZ2lzdGVyLmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMjI5LDQ0ICsy
MzAsNTcgQEAgdm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpzdG9yZUFwcEhpZ2hsaWdodChSZWY8
U3RhdGljUmFuZ2U+JiYgcmFuZ2UpCiAgICAgbV9kb2N1bWVudC0+cGFnZSgpLT5jaHJvbWUoKS5z
dG9yZUFwcEhpZ2hsaWdodChXVEZNb3ZlKGhpZ2hsaWdodCkpOwogfQogCi12b2lkIEFwcEhpZ2hs
aWdodFN0b3JhZ2U6OnJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJiBidWZm
ZXIpCit2b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hs
aWdodChSZWY8U2hhcmVkQnVmZmVyPiYmIGJ1ZmZlciwgU2Nyb2xsVG9IaWdobGlnaHQgc2Nyb2xs
KQogewotICAgIGlmICghbV9kb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAgIGF1
dG8gc3Ryb25nRG9jdW1lbnQgPSBtYWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwotCiAgICAg
YXV0byBhcHBIaWdobGlnaHRSYW5nZURhdGEgPSBBcHBIaWdobGlnaHRSYW5nZURhdGE6OmNyZWF0
ZShidWZmZXIpOwogICAgIGlmICghYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhKQogICAgICAgICByZXR1
cm47Ci0KLSAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKCphcHBIaWdobGlnaHRSYW5nZURhdGEs
ICpzdHJvbmdEb2N1bWVudCk7CiAgICAgCi0gICAgaWYgKCFyYW5nZSkKLSAgICAgICAgbV91bnJl
c3RvcmVkSGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOwot
ICAgIGVsc2UKLSAgICAgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJlZ2lzdGVyKCku
YWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7CisgICAgaWYgKCFh
dHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKGFwcEhpZ2hsaWdodFJhbmdlRGF0YS52
YWx1ZSgpLCBzY3JvbGwpKSB7CisgICAgICAgIGlmIChzY3JvbGwgPT0gU2Nyb2xsVG9IaWdobGln
aHQ6OlllcykKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCA9IGFwcEhp
Z2hsaWdodFJhbmdlRGF0YTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgbV91bnJlc3RvcmVk
SGlnaGxpZ2h0cy5hcHBlbmQoYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLnZhbHVlKCkpOworICAgIH0K
ICAgICAKICAgICBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygp
OwogfQogCi12b2lkIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OnJlc3RvcmVVbnJlc3RvcmVkQXBwSGln
aGxpZ2h0cygpCitib29sIEFwcEhpZ2hsaWdodFN0b3JhZ2U6OmF0dGVtcHRUb1Jlc3RvcmVIaWdo
bGlnaHRBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhJiBoaWdobGlnaHQsIFNjcm9sbFRv
SGlnaGxpZ2h0IHNjcm9sbCkKIHsKLSAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBy
ZW1haW5pbmdSYW5nZXM7Ci0KICAgICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsK
KyAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIGF1dG8gc3Ryb25nRG9jdW1lbnQgPSBt
YWtlUmVmUHRyKG1fZG9jdW1lbnQuZ2V0KCkpOwogICAgIAorICAgIGF1dG8gcmFuZ2UgPSBmaW5k
UmFuZ2UoaGlnaGxpZ2h0LCAqc3Ryb25nRG9jdW1lbnQpOworICAgIAorICAgIGlmICghcmFuZ2Up
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAKKyAgICBzdHJvbmdEb2N1bWVudC0+YXBwSGln
aGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0ZSgqcmFu
Z2UpKTsKKyAgICAKKyAgICBpZiAoc2Nyb2xsID09IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMpIHsK
KyAgICAgICAgT3B0aW9uU2V0PFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbj4gdGVtcG9yYXJ5U2Vs
ZWN0aW9uT3B0aW9uczsKKyAgICAgICAgdGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9ucy5hZGQoVGVt
cG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24pOworICAgICAgICBUZW1wb3Jh
cnlTZWxlY3Rpb25DaGFuZ2Ugc2VsZWN0aW9uQ2hhbmdlKCpzdHJvbmdEb2N1bWVudCwgeyByYW5n
ZS52YWx1ZSgpIH0sIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMpOworICAgIH0KKyAgICByZXR1
cm4gdHJ1ZTsKK30KKwordm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlVW5yZXN0b3Jl
ZEFwcEhpZ2hsaWdodHMoKQoreworICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IHJl
bWFpbmluZ1JhbmdlczsKKyAgICAKICAgICBmb3IgKGF1dG8mIGhpZ2hsaWdodCA6IG1fdW5yZXN0
b3JlZEhpZ2hsaWdodHMpIHsKLSAgICAgICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZShoaWdobGln
aHQsICpzdHJvbmdEb2N1bWVudCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIXJhbmdlKQorICAg
ICAgICBpZiAoIWF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3JvbGwoaGlnaGxpZ2h0LCBT
Y3JvbGxUb0hpZ2hsaWdodDo6Tm8pKQogICAgICAgICAgICAgcmVtYWluaW5nUmFuZ2VzLmFwcGVu
ZChoaWdobGlnaHQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBzdHJvbmdEb2N1bWVudC0+
YXBwSGlnaGxpZ2h0UmVnaXN0ZXIoKS5hZGRBcHBIaWdobGlnaHQoU3RhdGljUmFuZ2U6OmNyZWF0
ZSgqcmFuZ2UpKTsKICAgICB9CisgICAgaWYgKG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodCkg
eworICAgICAgICBpZiAoYXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChtX3VucmVz
dG9yZWRTY3JvbGxIaWdobGlnaHQudmFsdWUoKSwgU2Nyb2xsVG9IaWdobGlnaHQ6OlllcykpCisg
ICAgICAgICAgICBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQucmVzZXQoKTsKKyAgICB9Cisg
ICAgICAgIAogICAgIG1fdGltZUF0TGFzdFJhbmdlU2VhcmNoID0gTW9ub3RvbmljVGltZTo6bm93
KCk7CiAgICAgbV91bnJlc3RvcmVkSGlnaGxpZ2h0cyA9IFdURk1vdmUocmVtYWluaW5nUmFuZ2Vz
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhp
Z2hsaWdodFN0b3JhZ2UuaAppbmRleCAwMDc1YTA3Nzk1MmY1ZjI4YjRjYWU0ZmM2MDEwYzNkNTcy
MTNjMTQwLi5iYWNjM2ZlNGFjZGJlMTBiYjdmNzUxZDhjZGIxYjJmNjc0Zjc0ODZhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9yYWdl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3Rv
cmFnZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiQXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhLmgiCiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRl
IDx3dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25TZXQuaD4KQEAgLTM3
LDcgKzM4LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKEFQUF9ISUdITElH
SFRTKQogCi1jbGFzcyBBcHBIaWdobGlnaHRSYW5nZURhdGE7CiBjbGFzcyBEb2N1bWVudDsKIGNs
YXNzIFNoYXJlZEJ1ZmZlcjsKIGNsYXNzIFN0YXRpY1JhbmdlOwpAQCAtNDcsNiArNDcsOCBAQCBl
bnVtIGNsYXNzIENyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IDogYm9vbDsKIAogZW51bSBjbGFz
cyBSZXN0b3JlV2l0aFRleHRTZWFyY2ggOiBib29sIHsgTm8sIFllcyB9OwogCitlbnVtIGNsYXNz
IFNjcm9sbFRvSGlnaGxpZ2h0IDogYm9vbCB7IE5vLCBZZXMgfTsKKwogY2xhc3MgQXBwSGlnaGxp
Z2h0U3RvcmFnZSBmaW5hbCA6IFJlZkNvdW50ZWQ8QXBwSGlnaGxpZ2h0U3RvcmFnZT4gewogICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgpAQCAtNTQsMTYgKzU2LDE4IEBAIHB1
YmxpYzoKICAgICB+QXBwSGlnaGxpZ2h0U3RvcmFnZSgpOwogCiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBzdG9yZUFwcEhpZ2hsaWdodChSZWY8U3RhdGljUmFuZ2U+JiYpOwotICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodChSZWY8U2hhcmVkQnVmZmVyPiYmKTsKKyAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodChSZWY8
U2hhcmVkQnVmZmVyPiYmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgdm9pZCByZXN0b3JlVW5y
ZXN0b3JlZEFwcEhpZ2hsaWdodHMoKTsKICAgICBNb25vdG9uaWNUaW1lIGxhc3RSYW5nZVNlYXJj
aFRpbWUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaDsgfQogICAgIHZv
aWQgcmVzZXRMYXN0UmFuZ2VTZWFyY2hUaW1lKCkgeyBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9
IE1vbm90b25pY1RpbWU6Om5vdygpOyB9Ci0gICAgYm9vbCBoYXNVbnJlc3RvcmVkSGlnaGxpZ2h0
cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZXN0b3JlZEhpZ2hsaWdodHMuc2l6ZSgpOyB9CisgICAg
Ym9vbCBoYXNVbnJlc3RvcmVkSGlnaGxpZ2h0cygpIGNvbnN0IHsgcmV0dXJuIG1fdW5yZXN0b3Jl
ZEhpZ2hsaWdodHMuc2l6ZSgpIHx8IG1fdW5yZXN0b3JlZFNjcm9sbEhpZ2hsaWdodDsgfQogCiBw
cml2YXRlOgorICAgIGJvb2wgYXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChBcHBI
aWdobGlnaHRSYW5nZURhdGEmLCBTY3JvbGxUb0hpZ2hsaWdodCk7CiAgICAgV2Vha1B0cjxEb2N1
bWVudD4gbV9kb2N1bWVudDsKICAgICBNb25vdG9uaWNUaW1lIG1fdGltZUF0TGFzdFJhbmdlU2Vh
cmNoOwogICAgIFZlY3RvcjxBcHBIaWdobGlnaHRSYW5nZURhdGE+IG1fdW5yZXN0b3JlZEhpZ2hs
aWdodHM7CisgICAgT3B0aW9uYWw8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRT
Y3JvbGxIaWdobGlnaHQ7CiB9OwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2ODhhYmJiZGYxMzIxMWE0NmQ3MmVj
M2E1NmYyNDZkNjQ1NWQyNzA5Li40Y2E1ODkyN2M3ZWI0MTI3NWVlNzUyZDI0MmEwMTI0YzA2MWIy
MDJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xMjYxLDcgKzEyNjEsNyBAQAogCQk0NEEyMERCOTBGODQxNjZDMDBCM0UxRkUg
LyogV2ViQ29yZVVSTFJlc3BvbnNlSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA0NEEyMERCODBGODQxNjZDMDBCM0UxRkUgLyogV2ViQ29yZVVSTFJl
c3BvbnNlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKIAkJNDRBMjhBQUMxMkRGQjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBQjEy
REZCOEFDMDBBRTkyM0IgLyogTWF0aE1MRWxlbWVudEZhY3RvcnkuaCAqLzsgfTsKIAkJNDRBMjhB
QUYxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhNTE5hbWVzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEEyOEFBRTEyREZCOEJGMDBBRTkyM0IgLyogTWF0
aE1MTmFtZXMuaCAqLzsgfTsKLQkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hs
aWdodFJhbmdlRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNDRBRTA0NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5o
ICovOyB9OworCQk0NEFFMDQ1QzI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VE
YXRhLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEFF
MDQ1QTI1NzlDRkZCMDBDNDJFNjUgLyogQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLmggKi87IHNldHRp
bmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNDRDOTkxODYwRjNEMUVC
RTAwNTg2NjcwIC8qIFNjcm9sbGJhclRoZW1lSU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5OTE4NTBGM0QxRUJFMDA1ODY2NzAgLyogU2Nyb2xs
YmFyVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRDOTkxOUYwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1l
SU9TLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEM5
OTE5RDBGM0QyMTBFMDA1ODY2NzAgLyogVGhlbWVJT1MuaCAqLzsgfTsKIAkJNDRFMzQ5RjkyNDZG
NEUxOTAwNjg0NzlDIC8qIExpYldlYlJUQ0VudW1UcmFpdHMuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQ0RTM0OUY3MjQ2RjREQzcwMDY4NDc5QyAvKiBM
aWJXZWJSVENFbnVtVHJhaXRzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAppbmRleCA1MGJjY2IwOGUwMDAx
ZjMxNzYzYTRkNWY3Mjc0ZGY1YjA1MzgxZWU5Li5mMGI0NTFkOWZhNjQ2MTg4ZThhYmMyNjIxNGU3
ZGJhNjU5ZDFlYzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCkBAIC0yNjMsNiArMjYz
LDggQEAgdm9pZCBUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OnNldFNlbGVjdGlvbihjb25zdCBW
aXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24pCiAgICAgYXV0byBvcHRpb25zID0gRnJhbWVTZWxl
Y3Rpb246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCk7CiAgICAgaWYgKG1fb3B0aW9ucyAm
IFRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbjo6RG9Ob3RTZXRGb2N1cykKICAgICAgICAgb3B0aW9u
cy5hZGQoRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOworICAgIGlmIChtX29wdGlvbnMg
JiBUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OlJldmVhbFNlbGVjdGlvbikKKyAgICAgICAgb3B0
aW9ucy5hZGQoRnJhbWVTZWxlY3Rpb246OlJldmVhbFNlbGVjdGlvbik7CiAgICAgbV9kb2N1bWVu
dC0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbiwgb3B0aW9ucyk7CiB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL1BhZ2UuY3BwCmluZGV4IGNkYmZmYTBjNmEwNTJiMGUxZmEwMWNkMWZkOTMxZGJjYmZkZGY1
NjkuLjc5YmFhODNiNDk3N2QyYTdkOGY4OTRhMjdjMmZiNmFkMjNiMjA4NGEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlLmNwcApAQCAtMTYyMCw5ICsxNjIwLDEwIEBAIHZvaWQgUGFnZTo6ZG9BZnRlclVwZGF0ZVJl
bmRlcmluZygpCiAgICAgZm9yRWFjaERvY3VtZW50KFtdIChEb2N1bWVudCYgZG9jdW1lbnQpIHsK
ICAgICAgICAgZG9jdW1lbnQudXBkYXRlSGlnaGxpZ2h0UG9zaXRpb25zKCk7CiAgICAgfSk7Ci0j
aWYgRU5BQkxFKEFQUF9ISUdITElHSFQpCisjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAg
IGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7Ci0gICAgICAgIGlmICgh
YXV0byBhcHBIaWdobGlnaHRTdG9yYWdlID0gZG9jdW1lbnQuYXBwSGlnaGxpZ2h0U3RvcmFnZUlm
RXhpc3RzKCkpCisgICAgICAgIGF1dG8gYXBwSGlnaGxpZ2h0U3RvcmFnZSA9IGRvY3VtZW50LmFw
cEhpZ2hsaWdodFN0b3JhZ2VJZkV4aXN0cygpOworICAgICAgICBpZiAoIWFwcEhpZ2hsaWdodFN0
b3JhZ2UpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIAogICAgICAgICBpZiAoYXBwSGln
aGxpZ2h0U3RvcmFnZS0+aGFzVW5yZXN0b3JlZEhpZ2hsaWdodHMoKSAmJiBNb25vdG9uaWNUaW1l
Ojpub3coKSAtIGFwcEhpZ2hsaWdodFN0b3JhZ2UtPmxhc3RSYW5nZVNlYXJjaFRpbWUoKSA+IDFf
cykgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
aW5kZXggNmRmOGE2MDkzNzViMjI3NWI4OTgyMjE0OTk4OWRiZmE5NGE5MmVlOC4uYThkNjc0Nzhj
MWU1YzdjNmIzNjRmZjQzYmFmM2NmNTBkYmY2NTYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCkBAIC0yMTUzLDI0ICsyMTUzLDQzIEBAIC0g
KHZvaWQpX3Jlc3VtZUFsbE1lZGlhUGxheWJhY2sKICAgICBbc2VsZiBzZXRBbGxNZWRpYVBsYXli
YWNrU3VzcGVuZGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOm5pbF07CiB9CiAKKyNpZiBFTkFCTEUo
QVBQX0hJR0hMSUdIVFMpCitzdGF0aWMgdm9pZCBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KFZlY3Rv
cjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgYnVmZmVycywgTlNEYXRhICpoaWdobGlnaHQp
Cit7CisgICAgYXV0byBzaGFyZWRNZW1vcnkgPSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2Nh
dGUoaGlnaGxpZ2h0Lmxlbmd0aCk7CisgICAgaWYgKHNoYXJlZE1lbW9yeSkgeworICAgICAgICBb
aGlnaGxpZ2h0IGdldEJ5dGVzOnNoYXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpoaWdobGlnaHQu
bGVuZ3RoXTsKKyAgICAgICAgYnVmZmVycy5hcHBlbmQoKnNoYXJlZE1lbW9yeSk7CisgICAgfQor
fQorI2VuZGlmCisKIC0gKHZvaWQpX3Jlc3RvcmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0
YSAqPiAqKWhpZ2hsaWdodHMKIHsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgVmVj
dG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+IGJ1ZmZlcnM7CiAKLSAgICBmb3IgKE5TRGF0
YSAqaGlnaGxpZ2h0IGluIGhpZ2hsaWdodHMpIHsKLSAgICAgICAgYXV0byBzaGFyZWRNZW1vcnkg
PSBXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6YWxsb2NhdGUoaGlnaGxpZ2h0Lmxlbmd0aCk7Ci0gICAg
ICAgIGlmIChzaGFyZWRNZW1vcnkpIHsKLSAgICAgICAgICAgIFtoaWdobGlnaHQgZ2V0Qnl0ZXM6
c2hhcmVkTWVtb3J5LT5kYXRhKCkgbGVuZ3RoOmhpZ2hsaWdodC5sZW5ndGhdOwotICAgICAgICAg
ICAgYnVmZmVycy5hcHBlbmQoKnNoYXJlZE1lbW9yeSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
X3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzKGJ1ZmZlcnMpOworICAgIGZvciAoTlNEYXRhICpo
aWdobGlnaHQgaW4gaGlnaGxpZ2h0cykKKyAgICAgICAgY29udmVydEFuZEFkZEhpZ2hsaWdodChi
dWZmZXJzLCBoaWdobGlnaHQpOworICAgIAorICAgIF9wYWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0
c0FuZFNjcm9sbFRvSW5kZXgoYnVmZmVycywgV1RGOjpudWxsb3B0KTsKICNlbHNlCiAgICAgVU5V
U0VEX1BBUkFNKGhpZ2hsaWdodHMpOwogI2VuZGlmCiB9CiAKKy0gKHZvaWQpX3Jlc3RvcmVBbmRT
Y3JvbGxUb0FwcEhpZ2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0Cit7CisjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQorICAgIFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZm
ZXJzOworICAgIAorICAgIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoYnVmZmVycywgaGlnaGxpZ2h0
KTsKKyAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGJ1ZmZl
cnMsIDApOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oaGlnaGxpZ2h0KTsKKyNlbmRpZgorfQor
CiAtICh2b2lkKV9hZGRBcHBIaWdobGlnaHQKIHsKICNpZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3
UHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaAppbmRleCA3NDBlMDZjYjIzNTBkMDZmOTFjMjEzY2VmZDY3OWFkNmYwN2Q1OWRjLi41
NWQwMTlkZWFmYjJkMmJiYTQzNzRkNjM1MmZlNjczNTViYjFmNTQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKQEAgLTM2
Nyw3ICszNjcsOCBAQCBmb3IgdGhpcyBwcm9wZXJ0eS4KIC0gKHZvaWQpX2RpZERpc2FibGVCcm93
c2VyRXh0ZW5zaW9uczooTlNTZXQ8TlNTdHJpbmcgKj4gKilleHRlbnNpb25JRHMgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5
IChub25hdG9taWMsIHdlYWssIHNldHRlcj1fc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6KSBpZCA8
X1dLQXBwSGlnaGxpZ2h0RGVsZWdhdGU+IF9hcHBIaWdobGlnaHREZWxlZ2F0ZSBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwotLSAodm9pZClfcmVz
dG9yZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopZGF0YSBXS19BUElfQVZBSUxB
QkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVzdG9y
ZUFwcEhpZ2hsaWdodHM6KE5TQXJyYXk8TlNEYXRhICo+ICopaGlnaGxpZ2h0cyBXS19BUElfQVZB
SUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfcmVz
dG9yZUFuZFNjcm9sbFRvQXBwSGlnaGxpZ2h0OihOU0RhdGEgKiloaWdobGlnaHQgV0tfQVBJX0FW
QUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX2Fk
ZEFwcEhpZ2hsaWdodCBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogCiAvLyBGSVhNRTogUmVtb3ZlIG9sZCBgLVtXS1dlYlZpZXcgX3RoZW1lQ29s
b3JdYCBTUEkgPHJkYXI6Ly83NjY2MjY0ND4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW0KaW5kZXggMTAwOWI4ZjQyZmQ3Y2EzMzE5OTU3
YTJmNGQzYzJkMjI1NzU4YmQ5OC4uZTM3YWRmOGU0N2E1MzMxMWU0M2EyNGYwZDUxMjQ2NTg4ZTU4
ODJjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUGFnZVBy
b3h5Q29jb2EubW0KQEAgLTU1OSw3ICs1NTksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y3JlYXRl
QXBwSGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySAog
ICAgIHNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShjcmVhdGVOZXdHcm91cCwgcmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCkpOwogfQogCi12b2lk
IFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxTaGFy
ZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGln
aGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFJlZjxTaGFyZWRNZW1vcnk+PiYg
aGlnaGxpZ2h0cywgY29uc3QgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogewogICAgIGlmICgh
aGFzUnVubmluZ1Byb2Nlc3MoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTczLDcgKzU3Myw3IEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVm
PFNoYXJlZE1lbW9yeT4+JiBoaWdobGlnCiAgICAgICAgIG1lbW9yeUhhbmRsZXMuYXBwZW5kKFNo
YXJlZE1lbW9yeTo6SVBDSGFuZGxlIHsgV1RGTW92ZShoYW5kbGUpLCBoaWdobGlnaHQtPnNpemUo
KSB9KTsKICAgICB9CiAKLSAgICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZXN0b3JlQXBwSGln
aGxpZ2h0cyhXVEZNb3ZlKG1lbW9yeUhhbmRsZXMpKSk7CisgICAgc2VuZChNZXNzYWdlczo6V2Vi
UGFnZTo6UmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KFdURk1vdmUobWVtb3J5
SGFuZGxlcyksIGluZGV4KSk7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAppbmRleCBiN2Q0YTA1ODUxOGQ4NTRhN2ExZWY0NmUxNTMzNjY0MDgxN2EyNGM4
Li44ZjQwMzE4Zjk5OWFmOTYwMTcxOTc1NGQ3ODVkODhhNjRhZjg5ZDkwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtMTg4Niw3ICsxODg2LDcgQEAgcHVibGljOgog
I2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICB2b2lkIGNyZWF0ZUFwcEhpZ2hsaWdodElu
U2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCwgV2ViQ29y
ZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCk7CiAgICAgdm9pZCBzdG9yZUFwcEhp
Z2hsaWdodChjb25zdCBXZWJDb3JlOjpBcHBIaWdobGlnaHQmKTsKLSAgICB2b2lkIHJlc3RvcmVB
cHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgaGln
aGxpZ2h0cyk7CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgo
Y29uc3QgVmVjdG9yPFJlZjxXZWJLaXQ6OlNoYXJlZE1lbW9yeT4+JiBoaWdobGlnaHRzLCBjb25z
dCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoTUVESUFf
U1RSRUFNKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
UGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApp
bmRleCBjZDljMmMwODQxOGU4YzA2ZjE0ZDFhMTdlZjlhZWYwOWVjMDJiNjQxLi41MzcwNTdlMDRj
MjUwZGFiNzZmYjFmOGRkYjViMTc5N2EwNzc1NjYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcApAQCAtNzQ4NSwxNSArNzQ4NSwxOCBAQCBib29sIFdl
YlBhZ2U6OmNyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVO
ZXdHcm91cEZvckhpZ2hsaQogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIFdlYlBhZ2U6OnJl
c3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4m
JiBtZW1vcnlIYW5kbGVzKQordm9pZCBXZWJQYWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNj
cm9sbFRvSW5kZXgoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYmIG1lbW9y
eUhhbmRsZXMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBhdXRvIGRv
Y3VtZW50ID0gbWFrZVJlZlB0cihtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1h
aW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCisgICAgdW5zaWduZWQgaSA9IDA7CiAgICAgZm9yIChj
b25zdCBhdXRvJiBpcGNIYW5kbGUgOiBtZW1vcnlIYW5kbGVzKSB7CiAgICAgICAgIGF1dG8gc2hh
cmVkTWVtb3J5ID0gU2hhcmVkTWVtb3J5OjptYXAoaXBjSGFuZGxlLmhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGlmICghc2hhcmVkTWVtb3J5KQog
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9y
YWdlKCkucmVzdG9yZUFwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2Fz
dDxjb25zdCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUo
KSkpOworCisgICAgICAgIGRvY3VtZW50LT5hcHBIaWdobGlnaHRTdG9yYWdlKCkucmVzdG9yZUFu
ZFNjcm9sbFRvQXBwSGlnaGxpZ2h0KFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PGNv
bnN0IGNoYXIqPihzaGFyZWRNZW1vcnktPmRhdGEoKSksIHNoYXJlZE1lbW9yeS0+c2l6ZSgpKSwg
aSA9PSBpbmRleCA/IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMgOiBTY3JvbGxUb0hpZ2hsaWdodDo6
Tm8pOworICAgICAgICBpKys7CiAgICAgfQogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKaW5kZXggNTE0NjQ5YWI0NGY0YmE1NjJlM2YxYTZhNTlh
NzRjMGM0MDI5ZTZmZS4uMjhmZDQ2Yzc1YmM3N2ZhMGQzMGRiYjgyYjUxNjdmOTY2ZDAzZDkzMCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaApAQCAtMTQxNyw3
ICsxNDE3LDcgQEAgcHVibGljOgogICAgIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5h
dGVkSW5BcHAgaGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcCgpIGNvbnN0IHsgcmV0dXJu
IG1faGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFwcDsgfQogCiAgICAgYm9vbCBjcmVhdGVB
cHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdo
bGlnaHQsIFdlYkNvcmU6OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHApOwotICAgIHZv
aWQgcmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFu
ZGxlPiYmKTsKKyAgICB2b2lkIHJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChj
b25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYsIGNvbnN0IE9wdGlvbmFsPHVu
c2lnbmVkPiBpbmRleCk7CiAjZW5kaWYKIAogICAgIHZvaWQgZGlzcGF0Y2hXaGVlbEV2ZW50V2l0
aG91dFNjcm9sbGluZyhjb25zdCBXZWJXaGVlbEV2ZW50JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbgppbmRleCAxNzZjNGU1NTg5MTBiY2M2NWMyMWNkY2VhZGFlZGNj
MzRlMmUxYWI1Li4zMWE2ZDdiYmFiMzYwODRlMTdiYzA0MTkwMWQ3NTlkYjZiNTIyN2JiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2Fn
ZXMuaW4KQEAgLTYyOCw3ICs2MjgsNyBAQCBHZW5lcmF0ZVN5bnRoZXRpY0VkaXRpbmdDb21tYW5k
KGVudW06dWludDhfdCBXZWJLaXQ6OlN5bnRoZXRpY0VkaXRpbmdDb21tYW5kVHlwZQogCiAjaWYg
RU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIENyZWF0ZUFwcEhpZ2hsaWdodEluU2VsZWN0ZWRS
YW5nZShlbnVtOmJvb2wgV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQgY3JlYXRl
TmV3R3JvdXAsIGVudW06Ym9vbCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZElu
QXBwIHJlcXVlc3RPcmlnaW4pCi0gICAgUmVzdG9yZUFwcEhpZ2hsaWdodHMoVmVjdG9yPFdlYktp
dDo6U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+IG1lbW9yeUhhbmRsZXMpCisgICAgUmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KFZlY3RvcjxXZWJLaXQ6OlNoYXJlZE1lbW9yeTo6
SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzLCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiAjZW5k
aWYKIAogICAgIERpc3BhdGNoV2hlZWxFdmVudFdpdGhvdXRTY3JvbGxpbmcoV2ViS2l0OjpXZWJX
aGVlbEV2ZW50IGV2ZW50KSAtPiAoYm9vbCBoYW5kbGVkKSBBc3luYwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGUwMWE5NDk1MTg4NjY2YzU1ZWM2
ZmM2MTFlYTk4NTQyZWY0ODJjZWMuLjQyYzQzN2UxODNmNDBjMGUwMzA4OTU0NmZlMDY5MTRkMmJi
NmMyMjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNC0xOSAgTWVnYW4gR2FyZG5lciAgPG1lZ2FuX2dhcmRu
ZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN1cHBvcnQgc2Nyb2xsaW5nIHRvIGEgc2VsZWN0ZWQg
QXBwSGlnaGxpZ2h0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMjQ3NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1t
OgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDQtMjAgIERldmluIFJv
dXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFBhcnNlIGB0aGVtZV9jb2xvcmAg
aW4gd2ViIGFwcGxpY2F0aW9uIG1hbmlmZXN0cyBhbmQgcGFzcyBpdCBhbG9uZyB0byBgLVtXS1dl
YlZpZXcgdGhlbWVDb2xvcl1gCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCmluZGV4IDNlM2I3ZGIzZTY3NzVhM2Mx
ZTI4N2RhYzQwMDE2NWEzOTBhOTEyNDIuLmNmZTc5ZDJmZTc1YWY1Yzc4YTk1YmY5OTkzMTJkOTM3
Y2EyM2Q0MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBcHBIaWdobGlnaHRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCkBAIC00MywxNCArNDMsMTQgQEAKICNlbmRpZgog
CiBAaW50ZXJmYWNlIEFwcEhpZ2hsaWdodERlbGVnYXRlIDogTlNPYmplY3QgPF9XS0FwcEhpZ2hs
aWdodERlbGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zdG9yZUFw
cEhpZ2hsaWdodENhbGxiYWNrKShXS1dlYlZpZXcgKiwgX1dLQXBwSGlnaGxpZ2h0ICosIEJPT0wp
OworQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zdG9yZUFwcEhpZ2hsaWdodENh
bGxiYWNrKShXS1dlYlZpZXcgKiwgX1dLQXBwSGlnaGxpZ2h0ICosIEJPT0wsIEJPT0wpOwogQGVu
ZAogCiBAaW1wbGVtZW50YXRpb24gQXBwSGlnaGxpZ2h0RGVsZWdhdGUKLS0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcmVBcHBIaWdobGlnaHQ6KF9XS0FwcEhpZ2hsaWdo
dCAqKWhpZ2hsaWdodCBpbk5ld0dyb3VwOihCT09MKWluTmV3R3JvdXAKKy0gKHZvaWQpX3dlYlZp
ZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgc3RvcmVBcHBIaWdobGlnaHQ6KF9XS0FwcEhpZ2hsaWdo
dCAqKWhpZ2hsaWdodCBpbk5ld0dyb3VwOihCT09MKWluTmV3R3JvdXAgcmVxdWVzdE9yaWdpbmF0
ZWRJbkFwcDooQk9PTClyZXF1ZXN0T3JpZ2luYXRlZEluQXBwCiB7CiAgICAgaWYgKF9zdG9yZUFw
cEhpZ2hsaWdodENhbGxiYWNrKQotICAgICAgICBfc3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjayh3
ZWJWaWV3LCBoaWdobGlnaHQsIGluTmV3R3JvdXApOworICAgICAgICBfc3RvcmVBcHBIaWdobGln
aHRDYWxsYmFjayh3ZWJWaWV3LCBoaWdobGlnaHQsIGluTmV3R3JvdXAsIHJlcXVlc3RPcmlnaW5h
dGVkSW5BcHApOwogfQogQGVuZAogCkBAIC02Niw3ICs2Niw3IEBAIFRFU1QoQXBwSGlnaGxpZ2h0
cywgQXBwSGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKICAgICBbd2ViVmlld0NyZWF0ZSBzeW5j
aHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CiAgICAgW3dlYlZpZXdDcmVhdGUgc3Ry
aW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RB
bGwnKSJdOwogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBz
ZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcs
IF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXApIHsKKyAgICBbZGVs
ZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVX
ZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09M
IHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApIHsKICAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2Vi
Vmlldywgd2ViVmlld0NyZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdo
bGlnaHQpOwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIp
OwpAQCAtODUsNiArODUsMzYgQEAgVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVh
dGVBbmRSZXN0b3JlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwog
fQogCitURVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVBbmRT
Y3JvbGwpCit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtX
S1dlYlZpZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNs
YXNzTmFtZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JU
ZXN0aW5nOllFU107CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHRE
ZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMo
W1tUZXN0V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIw
LCA1MDApIGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlld1Jl
c3RvcmUgPSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1Jl
Y3RNYWtlKDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAg
ICBbd2ViVmlld0NyZWF0ZSBfc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCld
OworICAgIFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYg
c3R5bGU9J2hlaWdodDogMTAwMHB4Jz48L2Rpdj5UZXN0Il07CisgICAgW3dlYlZpZXdDcmVhdGUg
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxl
Y3RBbGwnKSJdOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POworICAgIFtkZWxlZ2F0
ZSBzZXRTdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZp
ZXcsIF9XS0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wgcmVx
dWVzdE9yaWdpbmF0ZWRJbkFwcCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3
LCB3ZWJWaWV3Q3JlYXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdo
dCk7CisgICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7Cisg
ICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKKyAgICAgICAgCisg
ICAgICAgIFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2
IHN0eWxlPSdoZWlnaHQ6IDEwMDBweCc+PC9kaXY+VGVzdCJdOworICAgICAgICBbd2ViVmlld1Jl
c3RvcmUgX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0
XTsKKyAgICAgICAgCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRp
b25XaXRoTG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gW3dlYlZp
ZXdSZXN0b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVy
T2ZBcHBIaWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgICAgICB9LCAyLCBAIkV4cGVj
dGVkIEhpZ2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgICAgICBFWFBFQ1RfTkUoMCwg
W1t3ZWJWaWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFnZVlPZmZz
ZXQiXSBmbG9hdFZhbHVlXSk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hlZCA9IFlFUzsKKyAg
ICB9XTsKKyAgICBbd2ViVmlld0NyZWF0ZSBfYWRkQXBwSGlnaGxpZ2h0XTsKKyAgICBUZXN0V2Vi
S2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKwogVEVTVChBcHBIaWdobGlnaHRzLCBB
cHBIaWdobGlnaHRSZXN0b3JlRmFpbHVyZSkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9u
ICpjb25maWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJh
dGlvbldpdGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5h
bHMiIGNvbmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTk1LDcgKzEyNSw3IEBAIFRFU1Qo
QXBwSGlnaGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCiAgICAgW3dlYlZpZXdD
cmVhdGUgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwogICAgIFt3ZWJWaWV3
Q3JlYXRlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFu
ZCgnU2VsZWN0QWxsJykiXTsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBOTzsKLSAgICBb
ZGVsZWdhdGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdh
dGVXZWJWaWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwKSB7
CisgICAgW2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcg
KmRlbGVnYXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdH
cm91cCwgQk9PTCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSB7CiAgICAgICAgIEVYUEVDVF9FUShk
ZWxlZ2F0ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfTk9U
X05VTEwoaGlnaGxpZ2h0KTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0
LCBAIlRlc3QiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>426649</attachid>
            <date>2021-04-20 23:14:03 -0700</date>
            <delta_ts>2021-04-21 00:18:24 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-224773-20210420231402.patch</filename>
            <type>text/plain</type>
            <size>25029</size>
            <attacher name="Megan Gardner">megan_gardner</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc2MzM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjVhYTk0NmNiYmEyM2Zk
ZTFmZmJiM2RkYWI0ZjE2MDNkZGFkMGJkNy4uMTRkZTEyNmQyY2IwZmU3ODc4NDY4ZGEzZDRkMWU3
MWMzMTdlMmZkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIxLTA0LTE5ICBNZWdh
biBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5jb20+CisKKyAgICAgICAgU3VwcG9ydCBz
Y3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGlnaHQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3MworCisgICAgICAgIFJldmlld2VkIGJ5
IFRpbSBIb3J0b24uCisKKyAgICAgICAgVGVzdDogQXBwSGlnaGxpZ2h0czo6QXBwSGlnaGxpZ2h0
Q3JlYXRlQW5kUmVzdG9yZUFuZFNjcm9sbAorCisgICAgICAgICogTW9kdWxlcy9oaWdobGlnaHQv
QXBwSGlnaGxpZ2h0U3RvcmFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRT
dG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQpOgorICAgICAgICAoV2ViQ29y
ZTo6QXBwSGlnaGxpZ2h0U3RvcmFnZTo6YXR0ZW1wdFRvUmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9s
bCk6CisgICAgICAgIChXZWJDb3JlOjpBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlVW5yZXN0
b3JlZEFwcEhpZ2hsaWdodHMpOgorICAgICAgICAoV2ViQ29yZTo6QXBwSGlnaGxpZ2h0U3RvcmFn
ZTo6cmVzdG9yZUFwcEhpZ2hsaWdodCk6IERlbGV0ZWQuCisgICAgICAgICogTW9kdWxlcy9oaWdo
bGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oOgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBlZGl0aW5nL0VkaXRvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpUZW1wb3JhcnlTZWxlY3Rpb25DaGFuZ2U6OnNldFNlbGVjdGlvbik6CisgICAg
ICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OmRvQWZ0ZXJVcGRh
dGVSZW5kZXJpbmcpOgorCiAyMDIxLTA0LTIwICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBQYXJzZSBgdGhlbWVfY29sb3JgIGluIHdlYiBhcHBsaWNhdGlvbiBt
YW5pZmVzdHMgYW5kIHBhc3MgaXQgYWxvbmcgdG8gYC1bV0tXZWJWaWV3IHRoZW1lQ29sb3JdYApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBiYmI2M2QzMWQzYzJjYTI4YmYwMWJmYTJhZmFlODQzZDI3MDI1MjIxLi5lZDMz
NGZhNTE1OTc1ZTllMjhmMTU5M2E1ZTc5ODY1ZmE5MmYwZGZmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDIxLTA0LTE5ICBNZWdhbiBHYXJkbmVyICA8bWVnYW5fZ2FyZG5lckBhcHBsZS5j
b20+CisKKyAgICAgICAgU3VwcG9ydCBzY3JvbGxpbmcgdG8gYSBzZWxlY3RlZCBBcHBIaWdobGln
aHQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyNDc3
MworCisgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIb3J0b24uCisKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToKKyAgICAgICAgKHJlc3RvcmVIaWdobGlnaHQpOgor
ICAgICAgICAoLVtXS1dlYlZpZXcgX3Jlc3RvcmVBcHBIaWdobGlnaHRzOl0pOgorICAgICAgICAo
LVtXS1dlYlZpZXcgX3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDpdKToKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUGFnZVByb3h5Q29jb2EubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBh
Z2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKyAgICAgICAg
KFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZXN0b3JlQXBwSGlnaGxpZ2h0cyk6IERlbGV0ZWQuCisg
ICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVzdG9yZUFw
cEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6
cmVzdG9yZUFwcEhpZ2hsaWdodHMpOiBEZWxldGVkLgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UGFnZS9XZWJQYWdlLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVz
c2FnZXMuaW46CisKIDIwMjEtMDQtMjAgIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29t
PgogCiAgICAgICAgIFBhcnNlIGB0aGVtZV9jb2xvcmAgaW4gd2ViIGFwcGxpY2F0aW9uIG1hbmlm
ZXN0cyBhbmQgcGFzcyBpdCBhbG9uZyB0byBgLVtXS1dlYlZpZXcgdGhlbWVDb2xvcl1gCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRTdG9y
YWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0
b3JhZ2UuY3BwCmluZGV4IGYwZTQwZDIxZjg0ZjBiOTI1Y2NiMGMxZjkwZmJhMjMzODZhN2IxY2Iu
LmFhZjk2MTM4OWNlMTkzNmZjZTZjNWFmZDI3Nzc4YmJjZjVhNjZjM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2Uu
Y3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiQ2hyb21lLmgiCiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJEb2N1bWVudE1hcmtlckNvbnRyb2xsZXIuaCIKKyNpbmNsdWRl
ICJFZGl0b3IuaCIKICNpbmNsdWRlICJIVE1MQm9keUVsZW1lbnQuaCIKICNpbmNsdWRlICJIaWdo
bGlnaHRSZWdpc3Rlci5oIgogI2luY2x1ZGUgIk5vZGUuaCIKQEAgLTIyOSw0NCArMjMwLDU3IEBA
IHZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6c3RvcmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1Jh
bmdlPiYmIHJhbmdlKQogICAgIG1fZG9jdW1lbnQtPnBhZ2UoKS0+Y2hyb21lKCkuc3RvcmVBcHBI
aWdobGlnaHQoV1RGTW92ZShoaWdobGlnaHQpKTsKIH0KIAotdm9pZCBBcHBIaWdobGlnaHRTdG9y
YWdlOjpyZXN0b3JlQXBwSGlnaGxpZ2h0KFJlZjxTaGFyZWRCdWZmZXI+JiYgYnVmZmVyKQordm9p
ZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVm
PFNoYXJlZEJ1ZmZlcj4mJiBidWZmZXIsIFNjcm9sbFRvSGlnaGxpZ2h0IHNjcm9sbCkKIHsKLSAg
ICBpZiAoIW1fZG9jdW1lbnQpCi0gICAgICAgIHJldHVybjsKLSAgICAKLSAgICBhdXRvIHN0cm9u
Z0RvY3VtZW50ID0gbWFrZVJlZlB0cihtX2RvY3VtZW50LmdldCgpKTsKLQogICAgIGF1dG8gYXBw
SGlnaGxpZ2h0UmFuZ2VEYXRhID0gQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOjpjcmVhdGUoYnVmZmVy
KTsKICAgICBpZiAoIWFwcEhpZ2hsaWdodFJhbmdlRGF0YSkKICAgICAgICAgcmV0dXJuOwotCi0g
ICAgYXV0byByYW5nZSA9IGZpbmRSYW5nZSgqYXBwSGlnaGxpZ2h0UmFuZ2VEYXRhLCAqc3Ryb25n
RG9jdW1lbnQpOwogICAgIAotICAgIGlmICghcmFuZ2UpCi0gICAgICAgIG1fdW5yZXN0b3JlZEhp
Z2hsaWdodHMuYXBwZW5kKGFwcEhpZ2hsaWdodFJhbmdlRGF0YS52YWx1ZSgpKTsKLSAgICBlbHNl
Ci0gICAgICAgIHN0cm9uZ0RvY3VtZW50LT5hcHBIaWdobGlnaHRSZWdpc3RlcigpLmFkZEFwcEhp
Z2hsaWdodChTdGF0aWNSYW5nZTo6Y3JlYXRlKCpyYW5nZSkpOworICAgIGlmICghYXR0ZW1wdFRv
UmVzdG9yZUhpZ2hsaWdodEFuZFNjcm9sbChhcHBIaWdobGlnaHRSYW5nZURhdGEudmFsdWUoKSwg
c2Nyb2xsKSkgeworICAgICAgICBpZiAoc2Nyb2xsID09IFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMp
CisgICAgICAgICAgICBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQgPSBhcHBIaWdobGlnaHRS
YW5nZURhdGE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fdW5yZXN0b3JlZEhpZ2hsaWdo
dHMuYXBwZW5kKGFwcEhpZ2hsaWdodFJhbmdlRGF0YS52YWx1ZSgpKTsKKyAgICB9CiAgICAgCiAg
ICAgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25vdG9uaWNUaW1lOjpub3coKTsKIH0KIAot
dm9pZCBBcHBIaWdobGlnaHRTdG9yYWdlOjpyZXN0b3JlVW5yZXN0b3JlZEFwcEhpZ2hsaWdodHMo
KQorYm9vbCBBcHBIaWdobGlnaHRTdG9yYWdlOjphdHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5k
U2Nyb2xsKEFwcEhpZ2hsaWdodFJhbmdlRGF0YSYgaGlnaGxpZ2h0LCBTY3JvbGxUb0hpZ2hsaWdo
dCBzY3JvbGwpCiB7Ci0gICAgVmVjdG9yPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gcmVtYWluaW5n
UmFuZ2VzOwotCiAgICAgaWYgKCFtX2RvY3VtZW50KQotICAgICAgICByZXR1cm47CisgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAKICAgICBhdXRvIHN0cm9uZ0RvY3VtZW50ID0gbWFrZVJlZlB0
cihtX2RvY3VtZW50LmdldCgpKTsKICAgICAKKyAgICBhdXRvIHJhbmdlID0gZmluZFJhbmdlKGhp
Z2hsaWdodCwgKnN0cm9uZ0RvY3VtZW50KTsKKyAgICAKKyAgICBpZiAoIXJhbmdlKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hsaWdodFJl
Z2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdlKSk7Cisg
ICAgCisgICAgaWYgKHNjcm9sbCA9PSBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzKSB7CisgICAgICAg
IE9wdGlvblNldDxUZW1wb3JhcnlTZWxlY3Rpb25PcHRpb24+IHRlbXBvcmFyeVNlbGVjdGlvbk9w
dGlvbnM7CisgICAgICAgIHRlbXBvcmFyeVNlbGVjdGlvbk9wdGlvbnMuYWRkKFRlbXBvcmFyeVNl
bGVjdGlvbk9wdGlvbjo6UmV2ZWFsU2VsZWN0aW9uKTsKKyAgICAgICAgVGVtcG9yYXJ5U2VsZWN0
aW9uQ2hhbmdlIHNlbGVjdGlvbkNoYW5nZSgqc3Ryb25nRG9jdW1lbnQsIHsgcmFuZ2UudmFsdWUo
KSB9LCB0ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb25zKTsKKyAgICB9CisgICAgcmV0dXJuIHRydWU7
Cit9CisKK3ZvaWQgQXBwSGlnaGxpZ2h0U3RvcmFnZTo6cmVzdG9yZVVucmVzdG9yZWRBcHBIaWdo
bGlnaHRzKCkKK3sKKyAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiByZW1haW5pbmdS
YW5nZXM7CisgICAgCiAgICAgZm9yIChhdXRvJiBoaWdobGlnaHQgOiBtX3VucmVzdG9yZWRIaWdo
bGlnaHRzKSB7Ci0gICAgICAgIGF1dG8gcmFuZ2UgPSBmaW5kUmFuZ2UoaGlnaGxpZ2h0LCAqc3Ry
b25nRG9jdW1lbnQpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFyYW5nZSkKKyAgICAgICAgaWYg
KCFhdHRlbXB0VG9SZXN0b3JlSGlnaGxpZ2h0QW5kU2Nyb2xsKGhpZ2hsaWdodCwgU2Nyb2xsVG9I
aWdobGlnaHQ6Ok5vKSkKICAgICAgICAgICAgIHJlbWFpbmluZ1Jhbmdlcy5hcHBlbmQoaGlnaGxp
Z2h0KTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgc3Ryb25nRG9jdW1lbnQtPmFwcEhpZ2hs
aWdodFJlZ2lzdGVyKCkuYWRkQXBwSGlnaGxpZ2h0KFN0YXRpY1JhbmdlOjpjcmVhdGUoKnJhbmdl
KSk7CiAgICAgfQorICAgIGlmIChtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQpIHsKKyAgICAg
ICAgaWYgKGF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3JvbGwobV91bnJlc3RvcmVkU2Ny
b2xsSGlnaGxpZ2h0LnZhbHVlKCksIFNjcm9sbFRvSGlnaGxpZ2h0OjpZZXMpKQorICAgICAgICAg
ICAgbV91bnJlc3RvcmVkU2Nyb2xsSGlnaGxpZ2h0LnJlc2V0KCk7CisgICAgfQorICAgICAgICAK
ICAgICBtX3RpbWVBdExhc3RSYW5nZVNlYXJjaCA9IE1vbm90b25pY1RpbWU6Om5vdygpOwogICAg
IG1fdW5yZXN0b3JlZEhpZ2hsaWdodHMgPSBXVEZNb3ZlKHJlbWFpbmluZ1Jhbmdlcyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2hpZ2hsaWdodC9BcHBIaWdobGlnaHRT
dG9yYWdlLmgKaW5kZXggMDA3NWEwNzc5NTJmNWYyOGI0Y2FlNGZjNjAxMGMzZDU3MjEzYzE0MC4u
N2ZiZmNhOTkxMGVkZDdhYjgzM2Q1N2RkODRjMGQyZjk0ZDhjNGM3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9oaWdobGlnaHQvQXBwSGlnaGxpZ2h0U3RvcmFnZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvaGlnaGxpZ2h0L0FwcEhpZ2hsaWdodFN0b3JhZ2UuaApA
QCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkFwcEhpZ2hsaWdo
dFJhbmdlRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01v
bm90b25pY1RpbWUuaD4KICNpbmNsdWRlIDx3dGYvT3B0aW9uU2V0Lmg+CkBAIC0zNyw3ICszOCw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKIAot
Y2xhc3MgQXBwSGlnaGxpZ2h0UmFuZ2VEYXRhOwogY2xhc3MgRG9jdW1lbnQ7CiBjbGFzcyBTaGFy
ZWRCdWZmZXI7CiBjbGFzcyBTdGF0aWNSYW5nZTsKQEAgLTQ3LDYgKzQ3LDggQEAgZW51bSBjbGFz
cyBDcmVhdGVOZXdHcm91cEZvckhpZ2hsaWdodCA6IGJvb2w7CiAKIGVudW0gY2xhc3MgUmVzdG9y
ZVdpdGhUZXh0U2VhcmNoIDogYm9vbCB7IE5vLCBZZXMgfTsKIAorZW51bSBjbGFzcyBTY3JvbGxU
b0hpZ2hsaWdodCA6IGJvb2wgeyBObywgWWVzIH07CisKIGNsYXNzIEFwcEhpZ2hsaWdodFN0b3Jh
Z2UgZmluYWwgOiBSZWZDb3VudGVkPEFwcEhpZ2hsaWdodFN0b3JhZ2U+IHsKICAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKQEAgLTU0LDE2ICs1NiwxOSBAQCBwdWJsaWM6CiAg
ICAgfkFwcEhpZ2hsaWdodFN0b3JhZ2UoKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3Rv
cmVBcHBIaWdobGlnaHQoUmVmPFN0YXRpY1JhbmdlPiYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHJlc3RvcmVBcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1ZmZlcj4mJik7CisgICAgV0VCQ09S
RV9FWFBPUlQgdm9pZCByZXN0b3JlQW5kU2Nyb2xsVG9BcHBIaWdobGlnaHQoUmVmPFNoYXJlZEJ1
ZmZlcj4mJiwgU2Nyb2xsVG9IaWdobGlnaHQpOwogICAgIHZvaWQgcmVzdG9yZVVucmVzdG9yZWRB
cHBIaWdobGlnaHRzKCk7CiAgICAgTW9ub3RvbmljVGltZSBsYXN0UmFuZ2VTZWFyY2hUaW1lKCkg
Y29uc3QgeyByZXR1cm4gbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2g7IH0KICAgICB2b2lkIHJlc2V0
TGFzdFJhbmdlU2VhcmNoVGltZSgpIHsgbV90aW1lQXRMYXN0UmFuZ2VTZWFyY2ggPSBNb25vdG9u
aWNUaW1lOjpub3coKTsgfQotICAgIGJvb2wgaGFzVW5yZXN0b3JlZEhpZ2hsaWdodHMoKSBjb25z
dCB7IHJldHVybiBtX3VucmVzdG9yZWRIaWdobGlnaHRzLnNpemUoKTsgfQorICAgIGJvb2wgaGFz
VW5yZXN0b3JlZEhpZ2hsaWdodHMoKSBjb25zdCB7IHJldHVybiBtX3VucmVzdG9yZWRIaWdobGln
aHRzLnNpemUoKSB8fCBtX3VucmVzdG9yZWRTY3JvbGxIaWdobGlnaHQ7IH0KIAogcHJpdmF0ZToK
KyAgICBib29sIGF0dGVtcHRUb1Jlc3RvcmVIaWdobGlnaHRBbmRTY3JvbGwoQXBwSGlnaGxpZ2h0
UmFuZ2VEYXRhJiwgU2Nyb2xsVG9IaWdobGlnaHQpOworICAgIAogICAgIFdlYWtQdHI8RG9jdW1l
bnQ+IG1fZG9jdW1lbnQ7CiAgICAgTW9ub3RvbmljVGltZSBtX3RpbWVBdExhc3RSYW5nZVNlYXJj
aDsKICAgICBWZWN0b3I8QXBwSGlnaGxpZ2h0UmFuZ2VEYXRhPiBtX3VucmVzdG9yZWRIaWdobGln
aHRzOworICAgIE9wdGlvbmFsPEFwcEhpZ2hsaWdodFJhbmdlRGF0YT4gbV91bnJlc3RvcmVkU2Ny
b2xsSGlnaGxpZ2h0OwogfTsKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNjg4YWJiYmRmMTMyMTFhNDZkNzJlYzNh
NTZmMjQ2ZDY0NTVkMjcwOS4uNGNhNTg5MjdjN2ViNDEyNzVlZTc1MmQyNDJhMDEyNGMwNjFiMjAy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagpAQCAtMTI2MSw3ICsxMjYxLDcgQEAKIAkJNDRBMjBEQjkwRjg0MTY2QzAwQjNFMUZFIC8q
IFdlYkNvcmVVUkxSZXNwb25zZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNDRBMjBEQjgwRjg0MTY2QzAwQjNFMUZFIC8qIFdlYkNvcmVVUkxSZXNw
b25zZUlPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTQ0QTI4QUFDMTJERkI4QUMwMEFFOTIzQiAvKiBNYXRoTUxFbGVtZW50RmFjdG9yeS5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUIxMkRG
QjhBQzAwQUU5MjNCIC8qIE1hdGhNTEVsZW1lbnRGYWN0b3J5LmggKi87IH07CiAJCTQ0QTI4QUFG
MTJERkI4QkYwMEFFOTIzQiAvKiBNYXRoTUxOYW1lcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBMjhBQUUxMkRGQjhCRjAwQUU5MjNCIC8qIE1hdGhN
TE5hbWVzLmggKi87IH07Ci0JCTQ0QUUwNDVDMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGln
aHRSYW5nZURhdGEuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDQ0QUUwNDVBMjU3OUNGRkIwMEM0MkU2NSAvKiBBcHBIaWdobGlnaHRSYW5nZURhdGEuaCAq
LzsgfTsKKwkJNDRBRTA0NUMyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0
YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRBRTA0
NUEyNTc5Q0ZGQjAwQzQyRTY1IC8qIEFwcEhpZ2hsaWdodFJhbmdlRGF0YS5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTQ0Qzk5MTg2MEYzRDFFQkUw
MDU4NjY3MCAvKiBTY3JvbGxiYXJUaGVtZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkxODUwRjNEMUVCRTAwNTg2NjcwIC8qIFNjcm9sbGJh
clRoZW1lSU9TLmggKi87IH07CiAJCTQ0Qzk5MTlGMEYzRDIxMEUwMDU4NjY3MCAvKiBUaGVtZUlP
Uy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDRDOTkx
OUQwRjNEMjEwRTAwNTg2NjcwIC8qIFRoZW1lSU9TLmggKi87IH07CiAJCTQ0RTM0OUY5MjQ2RjRF
MTkwMDY4NDc5QyAvKiBMaWJXZWJSVENFbnVtVHJhaXRzLmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0NEUzNDlGNzI0NkY0REM3MDA2ODQ3OUMgLyogTGli
V2ViUlRDRW51bVRyYWl0cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggNTBiY2NiMDhlMDAwMWYz
MTc2M2E0ZDVmNzI3NGRmNWIwNTM4MWVlOS4uZjBiNDUxZDlmYTY0NjE4OGU4YWJjMjYyMTRlN2Ri
YTY1OWQxZWMwYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMjYzLDYgKzI2Myw4
IEBAIHZvaWQgVGVtcG9yYXJ5U2VsZWN0aW9uQ2hhbmdlOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQogICAgIGF1dG8gb3B0aW9ucyA9IEZyYW1lU2VsZWN0
aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpOwogICAgIGlmIChtX29wdGlvbnMgJiBU
ZW1wb3JhcnlTZWxlY3Rpb25PcHRpb246OkRvTm90U2V0Rm9jdXMpCiAgICAgICAgIG9wdGlvbnMu
YWRkKEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBpZiAobV9vcHRpb25zICYg
VGVtcG9yYXJ5U2VsZWN0aW9uT3B0aW9uOjpSZXZlYWxTZWxlY3Rpb24pCisgICAgICAgIG9wdGlv
bnMuYWRkKEZyYW1lU2VsZWN0aW9uOjpSZXZlYWxTZWxlY3Rpb24pOwogICAgIG1fZG9jdW1lbnQt
PnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihzZWxlY3Rpb24sIG9wdGlvbnMpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcAppbmRleCBjZGJmZmEwYzZhMDUyYjBlMWZhMDFjZDFmZDkzMWRiY2JmZGRmNTY5
Li43OWJhYTgzYjQ5NzdkMmE3ZDhmODk0YTI3YzJmYjZhZDIzYjIwODRhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZS5jcHAKQEAgLTE2MjAsOSArMTYyMCwxMCBAQCB2b2lkIFBhZ2U6OmRvQWZ0ZXJVcGRhdGVSZW5k
ZXJpbmcoKQogICAgIGZvckVhY2hEb2N1bWVudChbXSAoRG9jdW1lbnQmIGRvY3VtZW50KSB7CiAg
ICAgICAgIGRvY3VtZW50LnVwZGF0ZUhpZ2hsaWdodFBvc2l0aW9ucygpOwogICAgIH0pOwotI2lm
IEVOQUJMRShBUFBfSElHSExJR0hUKQorI2lmIEVOQUJMRShBUFBfSElHSExJR0hUUykKICAgICBm
b3JFYWNoRG9jdW1lbnQoW10gKERvY3VtZW50JiBkb2N1bWVudCkgewotICAgICAgICBpZiAoIWF1
dG8gYXBwSGlnaGxpZ2h0U3RvcmFnZSA9IGRvY3VtZW50LmFwcEhpZ2hsaWdodFN0b3JhZ2VJZkV4
aXN0cygpKQorICAgICAgICBhdXRvIGFwcEhpZ2hsaWdodFN0b3JhZ2UgPSBkb2N1bWVudC5hcHBI
aWdobGlnaHRTdG9yYWdlSWZFeGlzdHMoKTsKKyAgICAgICAgaWYgKCFhcHBIaWdobGlnaHRTdG9y
YWdlKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICAgICAgaWYgKGFwcEhpZ2hs
aWdodFN0b3JhZ2UtPmhhc1VucmVzdG9yZWRIaWdobGlnaHRzKCkgJiYgTW9ub3RvbmljVGltZTo6
bm93KCkgLSBhcHBIaWdobGlnaHRTdG9yYWdlLT5sYXN0UmFuZ2VTZWFyY2hUaW1lKCkgPiAxX3Mp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZp
ZXcubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCmlu
ZGV4IDZkZjhhNjA5Mzc1YjIyNzViODk4MjIxNDk5ODlkYmZhOTRhOTJlZTguLmE4ZDY3NDc4YzFl
NWM3YzZiMzY0ZmY0M2JhZjNjZjUwZGJmNjU2MTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQpAQCAtMjE1MywyNCArMjE1Myw0MyBAQCAtICh2
b2lkKV9yZXN1bWVBbGxNZWRpYVBsYXliYWNrCiAgICAgW3NlbGYgc2V0QWxsTWVkaWFQbGF5YmFj
a1N1c3BlbmRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpuaWxdOwogfQogCisjaWYgRU5BQkxFKEFQ
UF9ISUdITElHSFRTKQorc3RhdGljIHZvaWQgY29udmVydEFuZEFkZEhpZ2hsaWdodChWZWN0b3I8
UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGJ1ZmZlcnMsIE5TRGF0YSAqaGlnaGxpZ2h0KQor
eworICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0gV2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRl
KGhpZ2hsaWdodC5sZW5ndGgpOworICAgIGlmIChzaGFyZWRNZW1vcnkpIHsKKyAgICAgICAgW2hp
Z2hsaWdodCBnZXRCeXRlczpzaGFyZWRNZW1vcnktPmRhdGEoKSBsZW5ndGg6aGlnaGxpZ2h0Lmxl
bmd0aF07CisgICAgICAgIGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOworICAgIH0KK30K
KyNlbmRpZgorCiAtICh2b2lkKV9yZXN0b3JlQXBwSGlnaGxpZ2h0czooTlNBcnJheTxOU0RhdGEg
Kj4gKiloaWdobGlnaHRzCiB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQogICAgIFZlY3Rv
cjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiBidWZmZXJzOwogCi0gICAgZm9yIChOU0RhdGEg
KmhpZ2hsaWdodCBpbiBoaWdobGlnaHRzKSB7Ci0gICAgICAgIGF1dG8gc2hhcmVkTWVtb3J5ID0g
V2ViS2l0OjpTaGFyZWRNZW1vcnk6OmFsbG9jYXRlKGhpZ2hsaWdodC5sZW5ndGgpOwotICAgICAg
ICBpZiAoc2hhcmVkTWVtb3J5KSB7Ci0gICAgICAgICAgICBbaGlnaGxpZ2h0IGdldEJ5dGVzOnNo
YXJlZE1lbW9yeS0+ZGF0YSgpIGxlbmd0aDpoaWdobGlnaHQubGVuZ3RoXTsKLSAgICAgICAgICAg
IGJ1ZmZlcnMuYXBwZW5kKCpzaGFyZWRNZW1vcnkpOwotICAgICAgICB9Ci0gICAgfQotICAgIF9w
YWdlLT5yZXN0b3JlQXBwSGlnaGxpZ2h0cyhidWZmZXJzKTsKKyAgICBmb3IgKE5TRGF0YSAqaGln
aGxpZ2h0IGluIGhpZ2hsaWdodHMpCisgICAgICAgIGNvbnZlcnRBbmRBZGRIaWdobGlnaHQoYnVm
ZmVycywgaGlnaGxpZ2h0KTsKKyAgICAKKyAgICBfcGFnZS0+cmVzdG9yZUFwcEhpZ2hsaWdodHNB
bmRTY3JvbGxUb0luZGV4KGJ1ZmZlcnMsIFdURjo6bnVsbG9wdCk7CiAjZWxzZQogICAgIFVOVVNF
RF9QQVJBTShoaWdobGlnaHRzKTsKICNlbmRpZgogfQogCistICh2b2lkKV9yZXN0b3JlQW5kU2Ny
b2xsVG9BcHBIaWdobGlnaHQ6KE5TRGF0YSAqKWhpZ2hsaWdodAoreworI2lmIEVOQUJMRShBUFBf
SElHSExJR0hUUykKKyAgICBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4gYnVmZmVy
czsKKyAgICAKKyAgICBjb252ZXJ0QW5kQWRkSGlnaGxpZ2h0KGJ1ZmZlcnMsIGhpZ2hsaWdodCk7
CisgICAgX3BhZ2UtPnJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChidWZmZXJz
LCAwKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGhpZ2hsaWdodCk7CisjZW5kaWYKK30KKwog
LSAodm9pZClfYWRkQXBwSGlnaGxpZ2h0CiB7CiAjaWYgRU5BQkxFKEFQUF9ISUdITElHSFRTKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1By
aXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2
YXRlLmgKaW5kZXggNzQwZTA2Y2IyMzUwZDA2ZjkxYzIxM2NlZmQ2NzlhZDZmMDdkNTlkYy4uNTVk
MDE5ZGVhZmIyZDJiYmE0Mzc0ZDYzNTJmZTY3MzU1YmIxZjU0OCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCkBAIC0zNjcs
NyArMzY3LDggQEAgZm9yIHRoaXMgcHJvcGVydHkuCiAtICh2b2lkKV9kaWREaXNhYmxlQnJvd3Nl
ckV4dGVuc2lvbnM6KE5TU2V0PE5TU3RyaW5nICo+ICopZXh0ZW5zaW9uSURzIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBwcm9wZXJ0eSAo
bm9uYXRvbWljLCB3ZWFrLCBzZXR0ZXI9X3NldEFwcEhpZ2hsaWdodERlbGVnYXRlOikgaWQgPF9X
S0FwcEhpZ2hsaWdodERlbGVnYXRlPiBfYXBwSGlnaGxpZ2h0RGVsZWdhdGUgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKLS0gKHZvaWQpX3Jlc3Rv
cmVBcHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWRhdGEgV0tfQVBJX0FWQUlMQUJM
RShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3RvcmVB
cHBIaWdobGlnaHRzOihOU0FycmF5PE5TRGF0YSAqPiAqKWhpZ2hsaWdodHMgV0tfQVBJX0FWQUlM
QUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKKy0gKHZvaWQpX3Jlc3Rv
cmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDooTlNEYXRhICopaGlnaGxpZ2h0IFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3MoV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtICh2b2lkKV9hZGRB
cHBIaWdobGlnaHQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIAogLy8gRklYTUU6IFJlbW92ZSBvbGQgYC1bV0tXZWJWaWV3IF90aGVtZUNvbG9y
XWAgU1BJIDxyZGFyOi8vNzY2NjI2NDQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9Db2NvYS9XZWJQYWdlUHJveHlDb2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1dlYlBhZ2VQcm94eUNvY29hLm1tCmluZGV4IDEwMDliOGY0MmZkN2NhMzMxOTk1N2Ey
ZjRkM2MyZDIyNTc1OGJkOTguLmUzN2FkZjhlNDdhNTMzMTFlNDNhMjRmMGQ1MTI0NjU4OGU1ODgy
Y2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlBhZ2VQcm94
eUNvY29hLm1tCkBAIC01NTksNyArNTU5LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNyZWF0ZUFw
cEhpZ2hsaWdodEluU2VsZWN0ZWRSYW5nZShXZWJDb3JlOjpDcmVhdGVOZXdHcm91cEZvckgKICAg
ICBzZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFu
Z2UoY3JlYXRlTmV3R3JvdXAsIHJlcXVlc3RPcmlnaW5hdGVkSW5BcHApKTsKIH0KIAotdm9pZCBX
ZWJQYWdlUHJveHk6OnJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVk
TWVtb3J5Pj4mIGhpZ2hsaWdodHMpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hs
aWdodHNBbmRTY3JvbGxUb0luZGV4KGNvbnN0IFZlY3RvcjxSZWY8U2hhcmVkTWVtb3J5Pj4mIGhp
Z2hsaWdodHMsIGNvbnN0IE9wdGlvbmFsPHVuc2lnbmVkPiBpbmRleCkKIHsKICAgICBpZiAoIWhh
c1J1bm5pbmdQcm9jZXNzKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTU3Myw3ICs1NzMsNyBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6cmVzdG9yZUFwcEhpZ2hsaWdodHMoY29uc3QgVmVjdG9yPFJlZjxT
aGFyZWRNZW1vcnk+PiYgaGlnaGxpZwogICAgICAgICBtZW1vcnlIYW5kbGVzLmFwcGVuZChTaGFy
ZWRNZW1vcnk6OklQQ0hhbmRsZSB7IFdURk1vdmUoaGFuZGxlKSwgaGlnaGxpZ2h0LT5zaXplKCkg
fSk7CiAgICAgfQogCi0gICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZTo6UmVzdG9yZUFwcEhpZ2hs
aWdodHMoV1RGTW92ZShtZW1vcnlIYW5kbGVzKSkpOworICAgIHNlbmQoTWVzc2FnZXM6OldlYlBh
Z2U6OlJlc3RvcmVBcHBIaWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChXVEZNb3ZlKG1lbW9yeUhh
bmRsZXMpLCBpbmRleCkpOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgKaW5kZXggYjdkNGEwNTg1MThkODU0YTdhMWVmNDZlMTUzMzY2NDA4MTdhMjRjOC4u
OGY0MDMxOGY5OTlhZjk2MDE3MTk3NTRkNzg1ZDg4YTY0YWY4OWQ5MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKQEAgLTE4ODYsNyArMTg4Niw3IEBAIHB1YmxpYzoKICNp
ZiBFTkFCTEUoQVBQX0hJR0hMSUdIVFMpCiAgICAgdm9pZCBjcmVhdGVBcHBIaWdobGlnaHRJblNl
bGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3R3JvdXBGb3JIaWdobGlnaHQsIFdlYkNvcmU6
OkhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHApOwogICAgIHZvaWQgc3RvcmVBcHBIaWdo
bGlnaHQoY29uc3QgV2ViQ29yZTo6QXBwSGlnaGxpZ2h0Jik7Ci0gICAgdm9pZCByZXN0b3JlQXBw
SGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8UmVmPFdlYktpdDo6U2hhcmVkTWVtb3J5Pj4mIGhpZ2hs
aWdodHMpOworICAgIHZvaWQgcmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3JvbGxUb0luZGV4KGNv
bnN0IFZlY3RvcjxSZWY8V2ViS2l0OjpTaGFyZWRNZW1vcnk+PiYgaGlnaGxpZ2h0cywgY29uc3Qg
T3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKE1FRElBX1NU
UkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5k
ZXggY2Q5YzJjMDg0MThlOGMwNmYxNGQxYTE3ZWY5YWVmMDllYzAyYjY0MS4uNTM3MDU3ZTA0YzI1
MGRhYjc2ZmIxZjhkZGI1YjE3OTdhMDc3NTY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc0ODUsMTUgKzc0ODUsMTggQEAgYm9vbCBXZWJQ
YWdlOjpjcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFuZ2UoV2ViQ29yZTo6Q3JlYXRlTmV3
R3JvdXBGb3JIaWdobGkKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJQYWdlOjpyZXN0
b3JlQXBwSGlnaGxpZ2h0cyhjb25zdCBWZWN0b3I8U2hhcmVkTWVtb3J5OjpJUENIYW5kbGU+JiYg
bWVtb3J5SGFuZGxlcykKK3ZvaWQgV2ViUGFnZTo6cmVzdG9yZUFwcEhpZ2hsaWdodHNBbmRTY3Jv
bGxUb0luZGV4KGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRsZT4mJiBtZW1vcnlI
YW5kbGVzLCBjb25zdCBPcHRpb25hbDx1bnNpZ25lZD4gaW5kZXgpCiB7CiAgICAgYXV0byBkb2N1
bWVudCA9IG1ha2VSZWZQdHIobV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWlu
RnJhbWUoKS5kb2N1bWVudCgpKTsKIAorICAgIHVuc2lnbmVkIGkgPSAwOwogICAgIGZvciAoY29u
c3QgYXV0byYgaXBjSGFuZGxlIDogbWVtb3J5SGFuZGxlcykgewogICAgICAgICBhdXRvIHNoYXJl
ZE1lbW9yeSA9IFNoYXJlZE1lbW9yeTo6bWFwKGlwY0hhbmRsZS5oYW5kbGUsIFNoYXJlZE1lbW9y
eTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwogICAgICAgICBpZiAoIXNoYXJlZE1lbW9yeSkKICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFn
ZSgpLnJlc3RvcmVBcHBIaWdobGlnaHQoU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8
Y29uc3QgY2hhcio+KHNoYXJlZE1lbW9yeS0+ZGF0YSgpKSwgc2hhcmVkTWVtb3J5LT5zaXplKCkp
KTsKKworICAgICAgICBkb2N1bWVudC0+YXBwSGlnaGxpZ2h0U3RvcmFnZSgpLnJlc3RvcmVBbmRT
Y3JvbGxUb0FwcEhpZ2hsaWdodChTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDxjb25z
dCBjaGFyKj4oc2hhcmVkTWVtb3J5LT5kYXRhKCkpLCBzaGFyZWRNZW1vcnktPnNpemUoKSksIGkg
PT0gaW5kZXggPyBTY3JvbGxUb0hpZ2hsaWdodDo6WWVzIDogU2Nyb2xsVG9IaWdobGlnaHQ6Ok5v
KTsKKyAgICAgICAgaSsrOwogICAgIH0KIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCmluZGV4IDUxNDY0OWFiNDRmNGJhNTYyZTNmMWE2YTU5YTc0
YzBjNDAyOWU2ZmUuLjI4ZmQ0NmM3NWJjNzdmYTBkMzBkYmI4MmI1MTY3Zjk2NmQwM2Q5MzAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKQEAgLTE0MTcsNyAr
MTQxNyw3IEBAIHB1YmxpYzoKICAgICBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRl
ZEluQXBwIGhpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHAoKSBjb25zdCB7IHJldHVybiBt
X2hpZ2hsaWdodFJlcXVlc3RPcmlnaW5hdGVkSW5BcHA7IH0KIAogICAgIGJvb2wgY3JlYXRlQXBw
SGlnaGxpZ2h0SW5TZWxlY3RlZFJhbmdlKFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxp
Z2h0LCBXZWJDb3JlOjpIaWdobGlnaHRSZXF1ZXN0T3JpZ2luYXRlZEluQXBwKTsKLSAgICB2b2lk
IHJlc3RvcmVBcHBIaWdobGlnaHRzKGNvbnN0IFZlY3RvcjxTaGFyZWRNZW1vcnk6OklQQ0hhbmRs
ZT4mJik7CisgICAgdm9pZCByZXN0b3JlQXBwSGlnaGxpZ2h0c0FuZFNjcm9sbFRvSW5kZXgoY29u
c3QgVmVjdG9yPFNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiYmLCBjb25zdCBPcHRpb25hbDx1bnNp
Z25lZD4gaW5kZXgpOwogI2VuZGlmCiAKICAgICB2b2lkIGRpc3BhdGNoV2hlZWxFdmVudFdpdGhv
dXRTY3JvbGxpbmcoY29uc3QgV2ViV2hlZWxFdmVudCYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
Ym9vbCk+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5tZXNzYWdlcy5pbiBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KaW5kZXggMTc2YzRlNTU4OTEwYmNjNjVjMjFjZGNlYWRhZWRjYzM0
ZTJlMWFiNS4uMzFhNmQ3YmJhYjM2MDg0ZTE3YmMwNDE5MDFkNzU5ZGI2YjUyMjdiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2Vz
LmluCkBAIC02MjgsNyArNjI4LDcgQEAgR2VuZXJhdGVTeW50aGV0aWNFZGl0aW5nQ29tbWFuZChl
bnVtOnVpbnQ4X3QgV2ViS2l0OjpTeW50aGV0aWNFZGl0aW5nQ29tbWFuZFR5cGUKIAogI2lmIEVO
QUJMRShBUFBfSElHSExJR0hUUykKICAgICBDcmVhdGVBcHBIaWdobGlnaHRJblNlbGVjdGVkUmFu
Z2UoZW51bTpib29sIFdlYkNvcmU6OkNyZWF0ZU5ld0dyb3VwRm9ySGlnaGxpZ2h0IGNyZWF0ZU5l
d0dyb3VwLCBlbnVtOmJvb2wgV2ViQ29yZTo6SGlnaGxpZ2h0UmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cCByZXF1ZXN0T3JpZ2luKQotICAgIFJlc3RvcmVBcHBIaWdobGlnaHRzKFZlY3RvcjxXZWJLaXQ6
OlNoYXJlZE1lbW9yeTo6SVBDSGFuZGxlPiBtZW1vcnlIYW5kbGVzKQorICAgIFJlc3RvcmVBcHBI
aWdobGlnaHRzQW5kU2Nyb2xsVG9JbmRleChWZWN0b3I8V2ViS2l0OjpTaGFyZWRNZW1vcnk6OklQ
Q0hhbmRsZT4gbWVtb3J5SGFuZGxlcywgT3B0aW9uYWw8dW5zaWduZWQ+IGluZGV4KQogI2VuZGlm
CiAKICAgICBEaXNwYXRjaFdoZWVsRXZlbnRXaXRob3V0U2Nyb2xsaW5nKFdlYktpdDo6V2ViV2hl
ZWxFdmVudCBldmVudCkgLT4gKGJvb2wgaGFuZGxlZCkgQXN5bmMKZGlmZiAtLWdpdCBhL1Rvb2xz
L0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlMDFhOTQ5NTE4ODY2NmM1NWVjNmZj
NjExZWE5ODU0MmVmNDgyY2VjLi4zOTdlMjRiYmQ2ZDIzZmUyMjJlMmM2ZjcyZWM3ZGM1NWJlOTEz
MDUyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMTkgIE1lZ2FuIEdhcmRuZXIgIDxtZWdhbl9nYXJkbmVy
QGFwcGxlLmNvbT4KKworICAgICAgICBTdXBwb3J0IHNjcm9sbGluZyB0byBhIHNlbGVjdGVkIEFw
cEhpZ2hsaWdodAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI0NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVGltIEhvcnRvbi4KKworICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDQtMjAgIERldmluIFJvdXNzbyAg
PGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFBhcnNlIGB0aGVtZV9jb2xvcmAgaW4gd2Vi
IGFwcGxpY2F0aW9uIG1hbmlmZXN0cyBhbmQgcGFzcyBpdCBhbG9uZyB0byBgLVtXS1dlYlZpZXcg
dGhlbWVDb2xvcl1gCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1dLQXBwSGlnaGxpZ2h0cy5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvV0tBcHBIaWdobGlnaHRzLm1tCmluZGV4IDNlM2I3ZGIzZTY3NzVhM2MxZTI4N2Rh
YzQwMDE2NWEzOTBhOTEyNDIuLmNmZTc5ZDJmZTc1YWY1Yzc4YTk1YmY5OTkzMTJkOTM3Y2EyM2Q0
MTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvV0tB
cHBIaWdobGlnaHRzLm1tCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvV0tBcHBIaWdobGlnaHRzLm1tCkBAIC00MywxNCArNDMsMTQgQEAKICNlbmRpZgogCiBAaW50
ZXJmYWNlIEFwcEhpZ2hsaWdodERlbGVnYXRlIDogTlNPYmplY3QgPF9XS0FwcEhpZ2hsaWdodERl
bGVnYXRlPgotQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zdG9yZUFwcEhpZ2hs
aWdodENhbGxiYWNrKShXS1dlYlZpZXcgKiwgX1dLQXBwSGlnaGxpZ2h0ICosIEJPT0wpOworQHBy
b3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5zdG9yZUFwcEhpZ2hsaWdodENhbGxiYWNr
KShXS1dlYlZpZXcgKiwgX1dLQXBwSGlnaGxpZ2h0ICosIEJPT0wsIEJPT0wpOwogQGVuZAogCiBA
aW1wbGVtZW50YXRpb24gQXBwSGlnaGxpZ2h0RGVsZWdhdGUKLS0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RvcmVBcHBIaWdobGlnaHQ6KF9XS0FwcEhpZ2hsaWdodCAqKWhp
Z2hsaWdodCBpbk5ld0dyb3VwOihCT09MKWluTmV3R3JvdXAKKy0gKHZvaWQpX3dlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgc3RvcmVBcHBIaWdobGlnaHQ6KF9XS0FwcEhpZ2hsaWdodCAqKWhp
Z2hsaWdodCBpbk5ld0dyb3VwOihCT09MKWluTmV3R3JvdXAgcmVxdWVzdE9yaWdpbmF0ZWRJbkFw
cDooQk9PTClyZXF1ZXN0T3JpZ2luYXRlZEluQXBwCiB7CiAgICAgaWYgKF9zdG9yZUFwcEhpZ2hs
aWdodENhbGxiYWNrKQotICAgICAgICBfc3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjayh3ZWJWaWV3
LCBoaWdobGlnaHQsIGluTmV3R3JvdXApOworICAgICAgICBfc3RvcmVBcHBIaWdobGlnaHRDYWxs
YmFjayh3ZWJWaWV3LCBoaWdobGlnaHQsIGluTmV3R3JvdXAsIHJlcXVlc3RPcmlnaW5hdGVkSW5B
cHApOwogfQogQGVuZAogCkBAIC02Niw3ICs2Niw3IEBAIFRFU1QoQXBwSGlnaGxpZ2h0cywgQXBw
SGlnaGxpZ2h0Q3JlYXRlQW5kUmVzdG9yZSkKICAgICBbd2ViVmlld0NyZWF0ZSBzeW5jaHJvbm91
c2x5TG9hZEhUTUxTdHJpbmc6QCJUZXN0Il07CiAgICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5nQnlF
dmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwnKSJd
OwogICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POwotICAgIFtkZWxlZ2F0ZSBzZXRTdG9y
ZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9XS0Fw
cEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXApIHsKKyAgICBbZGVsZWdhdGUg
c2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJWaWV3
LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwLCBCT09MIHJlcXVl
c3RPcmlnaW5hdGVkSW5BcHApIHsKICAgICAgICAgRVhQRUNUX0VRKGRlbGVnYXRlV2ViVmlldywg
d2ViVmlld0NyZWF0ZS5nZXQoKSk7CiAgICAgICAgIEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQp
OwogICAgICAgICBFWFBFQ1RfV0tfU1RSRVEoaGlnaGxpZ2h0LnRleHQsIEAiVGVzdCIpOwpAQCAt
ODUsNiArODUsMzYgQEAgVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdobGlnaHRDcmVhdGVBbmRS
ZXN0b3JlKQogICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOwogfQogCitU
RVNUKEFwcEhpZ2hsaWdodHMsIEFwcEhpZ2hsaWdodENyZWF0ZUFuZFJlc3RvcmVBbmRTY3JvbGwp
Cit7CisgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtXS1dlYlZp
ZXdDb25maWd1cmF0aW9uIF90ZXN0X2NvbmZpZ3VyYXRpb25XaXRoVGVzdFBsdWdJbkNsYXNzTmFt
ZTpAIldlYlByb2Nlc3NQbHVnSW5XaXRoSW50ZXJuYWxzIiBjb25maWd1cmVKU0NGb3JUZXN0aW5n
OllFU107CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tBcHBIaWdobGlnaHREZWxlZ2F0
ZSBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gd2ViVmlld0NyZWF0ZSA9IGFkb3B0TlMoW1tUZXN0
V0tXZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgMzIwLCA1MDAp
IGNvbmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbl0pOworICAgIGF1dG8gd2ViVmlld1Jlc3RvcmUg
PSBhZG9wdE5TKFtbVGVzdFdLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpDR1JlY3RNYWtl
KDAsIDAsIDMyMCwgNTAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICBbd2Vi
Vmlld0NyZWF0ZSBfc2V0QXBwSGlnaGxpZ2h0RGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAg
IFt3ZWJWaWV3Q3JlYXRlIHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpAIjxkaXYgc3R5bGU9
J2hlaWdodDogMTAwMHB4Jz48L2Rpdj5UZXN0Il07CisgICAgW3dlYlZpZXdDcmVhdGUgc3RyaW5n
QnlFdmFsdWF0aW5nSmF2YVNjcmlwdDpAImRvY3VtZW50LmV4ZWNDb21tYW5kKCdTZWxlY3RBbGwn
KSJdOworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IE5POworICAgIFtkZWxlZ2F0ZSBzZXRT
dG9yZUFwcEhpZ2hsaWdodENhbGxiYWNrOl4oV0tXZWJWaWV3ICpkZWxlZ2F0ZVdlYlZpZXcsIF9X
S0FwcEhpZ2hsaWdodCAqaGlnaGxpZ2h0LCBCT09MIGluTmV3R3JvdXAsIEJPT0wgcmVxdWVzdE9y
aWdpbmF0ZWRJbkFwcCkgeworICAgICAgICBFWFBFQ1RfRVEoZGVsZWdhdGVXZWJWaWV3LCB3ZWJW
aWV3Q3JlYXRlLmdldCgpKTsKKyAgICAgICAgRVhQRUNUX05PVF9OVUxMKGhpZ2hsaWdodCk7Cisg
ICAgICAgIEVYUEVDVF9XS19TVFJFUShoaWdobGlnaHQudGV4dCwgQCJUZXN0Iik7CisgICAgICAg
IEVYUEVDVF9OT1RfTlVMTChoaWdobGlnaHQuaGlnaGxpZ2h0KTsKKyAgICAgICAgCisgICAgICAg
IFt3ZWJWaWV3UmVzdG9yZSBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCI8ZGl2IHN0eWxl
PSdoZWlnaHQ6IDEwMDBweCc+PC9kaXY+VGVzdCJdOworICAgICAgICBbd2ViVmlld1Jlc3RvcmUg
X3Jlc3RvcmVBbmRTY3JvbGxUb0FwcEhpZ2hsaWdodDpoaWdobGlnaHQuaGlnaGxpZ2h0XTsKKyAg
ICAgICAgCisgICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OndhaXRGb3JDb25kaXRpb25XaXRo
TG9nZ2luZyhbJl0gKCkgLT4gYm9vbCB7CisgICAgICAgICAgICByZXR1cm4gW3dlYlZpZXdSZXN0
b3JlIHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJpbnRlcm5hbHMubnVtYmVyT2ZBcHBI
aWdobGlnaHRzKCkiXS5pbnRWYWx1ZSA9PSAxOworICAgICAgICB9LCAyLCBAIkV4cGVjdGVkIEhp
Z2hsaWdodHMgdG8gYmUgcG9wdWxhdGVkLiIpOworICAgICAgICBFWFBFQ1RfTkUoMCwgW1t3ZWJW
aWV3UmVzdG9yZSBvYmplY3RCeUV2YWx1YXRpbmdKYXZhU2NyaXB0OkAicGFnZVlPZmZzZXQiXSBm
bG9hdFZhbHVlXSk7CisgICAgICAgIAorICAgICAgICBmaW5pc2hlZCA9IFlFUzsKKyAgICB9XTsK
KyAgICBbd2ViVmlld0NyZWF0ZSBfYWRkQXBwSGlnaGxpZ2h0XTsKKyAgICBUZXN0V2ViS2l0QVBJ
OjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKK30KKwogVEVTVChBcHBIaWdobGlnaHRzLCBBcHBIaWdo
bGlnaHRSZXN0b3JlRmFpbHVyZSkKIHsKICAgICBXS1dlYlZpZXdDb25maWd1cmF0aW9uICpjb25m
aWd1cmF0aW9uID0gW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gX3Rlc3RfY29uZmlndXJhdGlvbldp
dGhUZXN0UGx1Z0luQ2xhc3NOYW1lOkAiV2ViUHJvY2Vzc1BsdWdJbldpdGhJbnRlcm5hbHMiIGNv
bmZpZ3VyZUpTQ0ZvclRlc3Rpbmc6WUVTXTsKQEAgLTk1LDcgKzEyNSw3IEBAIFRFU1QoQXBwSGln
aGxpZ2h0cywgQXBwSGlnaGxpZ2h0UmVzdG9yZUZhaWx1cmUpCiAgICAgW3dlYlZpZXdDcmVhdGUg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAiVGVzdCJdOwogICAgIFt3ZWJWaWV3Q3JlYXRl
IHN0cmluZ0J5RXZhbHVhdGluZ0phdmFTY3JpcHQ6QCJkb2N1bWVudC5leGVjQ29tbWFuZCgnU2Vs
ZWN0QWxsJykiXTsKICAgICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBOTzsKLSAgICBbZGVsZWdh
dGUgc2V0U3RvcmVBcHBIaWdobGlnaHRDYWxsYmFjazpeKFdLV2ViVmlldyAqZGVsZWdhdGVXZWJW
aWV3LCBfV0tBcHBIaWdobGlnaHQgKmhpZ2hsaWdodCwgQk9PTCBpbk5ld0dyb3VwKSB7CisgICAg
W2RlbGVnYXRlIHNldFN0b3JlQXBwSGlnaGxpZ2h0Q2FsbGJhY2s6XihXS1dlYlZpZXcgKmRlbGVn
YXRlV2ViVmlldywgX1dLQXBwSGlnaGxpZ2h0ICpoaWdobGlnaHQsIEJPT0wgaW5OZXdHcm91cCwg
Qk9PTCByZXF1ZXN0T3JpZ2luYXRlZEluQXBwKSB7CiAgICAgICAgIEVYUEVDVF9FUShkZWxlZ2F0
ZVdlYlZpZXcsIHdlYlZpZXdDcmVhdGUuZ2V0KCkpOwogICAgICAgICBFWFBFQ1RfTk9UX05VTEwo
aGlnaGxpZ2h0KTsKICAgICAgICAgRVhQRUNUX1dLX1NUUkVRKGhpZ2hsaWdodC50ZXh0LCBAIlRl
c3QiKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>