<?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>51013</bug_id>
          
          <creation_ts>2010-12-13 22:05:24 -0800</creation_ts>
          <short_desc>[Chromium] Should implement EditorClientImpl::requestCheckingOfString()</short_desc>
          <delta_ts>2011-02-07 17:48:03 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Hajime Morrita">morrita</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>eric</cc>
    
    <cc>fabrizio.machado</cc>
    
    <cc>fishd</cc>
    
    <cc>hbono</cc>
    
    <cc>levin</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tkent</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321678</commentid>
    <comment_count>0</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-13 22:05:24 -0800</bug_when>
    <thetext>This is required for async spellchecking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321894</commentid>
    <comment_count>1</comment_count>
      <attachid>76526</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-14 04:36:12 -0800</bug_when>
    <thetext>Created attachment 76526
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321895</commentid>
    <comment_count>2</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-14 04:37:01 -0800</bug_when>
    <thetext>CC levin@ because this has an WebKit API change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321913</commentid>
    <comment_count>3</comment_count>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-14 05:22:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; CC levin@ because this has an WebKit API change.
Actually that should be Darin Fisher (added).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321919</commentid>
    <comment_count>4</comment_count>
      <attachid>76526</attachid>
    <who name="David Levin">levin</who>
    <bug_when>2010-12-14 05:37:30 -0800</bug_when>
    <thetext>Comment on attachment 76526
Patch

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

Here&apos;s a few things that I noticed when I looked at this change quickly.

&gt; WebKit/chromium/public/WebTextCheckingResponse.h:40
&gt; +// Note that type() is opaque from the client

This looks like it should be a comment in the class (near the type() method).

&gt; WebKit/chromium/public/WebTextCheckingResponse.h:43
&gt; +class WebTextCheckingResult {

I thought we did one class per header in public and the file would be named the same as the class but Darin would know absolutely. (If so, this class should move into its own header file.)

&gt; WebKit/chromium/public/WebTextCheckingResponse.h:46
&gt; +    static WebTextCheckingResult makeBadGrammar(int location, int length);

It isn&apos;t clear to me what these methods do. Perhaps that could be fixed by better methods names. (The method names don&apos;t make sense right now.)

&gt; WebKit/chromium/public/WebTextCheckingResponse.h:68
&gt; +    explicit WebTextCheckingResponse(int sequence, const WebVector&lt;WebTextCheckingResult&gt;&amp; results)

explicit shouldn&apos;t be here.

&gt; WebKit/chromium/public/WebViewClient.h:176
&gt; +    // Requests asyncronous spell and grammar checking. The result should be returned by 

misspelled: asyncronous

&gt; WebKit/chromium/src/EditorClientImpl.cpp:892
&gt; +        coreResults.append(SpellCheckingResult(static_cast&lt;DocumentMarker::MarkerType&gt;(results[i].type()), results[i].location(), results[0].length()));

Shouldn&apos;t results[0].length() be results[i].length()?

&gt; WebKitTools/ChangeLog:47
&gt; +

There are a lot of things wrong here. I think you&apos;ll see them when you look at it.  You may find it helpful if you review the diff of your changes before getting others to do it.

&gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.h:213
&gt; +    // Spellcheck realted helper APIs

spelling: realted</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322396</commentid>
    <comment_count>5</comment_count>
      <attachid>76603</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-14 17:46:32 -0800</bug_when>
    <thetext>Created attachment 76603
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322398</commentid>
    <comment_count>6</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-14 17:50:14 -0800</bug_when>
    <thetext>Hi Levin, I&apos;m sorry for the bad CC ... and thank you for reviewing anyway!

&gt; Here&apos;s a few things that I noticed when I looked at this change quickly.
&gt; 
&gt; &gt; WebKit/chromium/public/WebTextCheckingResponse.h:40
&gt; &gt; +// Note that type() is opaque from the client
Done.

&gt; 
&gt; This looks like it should be a comment in the class (near the type() method).
&gt; 
&gt; &gt; WebKit/chromium/public/WebTextCheckingResponse.h:43
&gt; &gt; +class WebTextCheckingResult {
&gt; 
&gt; I thought we did one class per header in public and the file would be named the same as the class but Darin would know absolutely. (If so, this class should move into its own header file.)
Gave his own header and source files.

&gt; 
&gt; &gt; WebKit/chromium/public/WebTextCheckingResponse.h:46
&gt; &gt; +    static WebTextCheckingResult makeBadGrammar(int location, int length);
&gt; 
&gt; It isn&apos;t clear to me what these methods do. Perhaps that could be fixed by better methods names. (The method names don&apos;t make sense right now.)
Tried another name. I&apos;m not sure even the new name is sufficient though...

&gt; 
&gt; &gt; WebKit/chromium/public/WebTextCheckingResponse.h:68
&gt; &gt; +    explicit WebTextCheckingResponse(int sequence, const WebVector&lt;WebTextCheckingResult&gt;&amp; results)
&gt; 
&gt; explicit shouldn&apos;t be here.
Removed.

&gt; 
&gt; &gt; WebKit/chromium/public/WebViewClient.h:176
&gt; &gt; +    // Requests asyncronous spell and grammar checking. The result should be returned by 
&gt; 
&gt; misspelled: asyncronous
Done.

&gt; 
&gt; &gt; WebKit/chromium/src/EditorClientImpl.cpp:892
&gt; &gt; +        coreResults.append(SpellCheckingResult(static_cast&lt;DocumentMarker::MarkerType&gt;(results[i].type()), results[i].location(), results[0].length()));
&gt; 
&gt; Shouldn&apos;t results[0].length() be results[i].length()?
Oops. Done.

&gt; 
&gt; &gt; WebKitTools/ChangeLog:47
&gt; &gt; +
&gt; 
&gt; There are a lot of things wrong here. I think you&apos;ll see them when you look at it.  You may find it helpful if you review the diff of your changes before getting others to do it.
I totally missed about this file...Thank you for pointing this. Fixed.

&gt; 
&gt; &gt; WebKitTools/DumpRenderTree/chromium/WebViewHost.h:213
&gt; &gt; +    // Spellcheck realted helper APIs
&gt; 
&gt; spelling: realted
Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322494</commentid>
    <comment_count>7</comment_count>
      <attachid>76627</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-14 21:15:56 -0800</bug_when>
    <thetext>Created attachment 76627
rebased to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322758</commentid>
    <comment_count>8</comment_count>
      <attachid>76627</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-12-15 12:43:51 -0800</bug_when>
    <thetext>Comment on attachment 76627
rebased to ToT

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

&gt; WebKit/chromium/public/WebViewClient.h:178
&gt; +    // Requests asynchronous spell and grammar checking. The result should be returned by 
&gt; +    // WebView::respondCheckingOfString()
&gt; +    virtual void requestTextCheck(int sequence, const WebString&amp;) { }

nit: find-in-page APIs are somewhat similar in that there are methods on WebFrame
and WebFrameClient that work asynchronously in unison.  in that API, we use the
term &quot;identifier&quot; instead of &quot;sequence&quot;, so for consistency it would be better to
do the same thing here.

another idea though is to follow the model used by WebViewClient::runFileChooser.
it defines a WebFileChooserCompletion interface that gets invoked by the embedder
when the embedder wishes to push results back into WebKit.  this model allows you
to avoid the concept of &quot;identifier&quot; altogether.  (it actually ends up pushing it
up to the Chromium layer where we generate IPCs, but that isn&apos;t a bad thing.)

so, going with that model, you&apos;d end up with an API that might look like:

  WebViewClient::requestTextCheck(const WebString&amp;, WebTextCheckCompletion*)

then,

  class WebTextCheckCompletion {
  public:
      virtual void didCheckText(const WebVector&lt;WebTextCheckResult&gt;&amp;) = 0;
  protected:
      virtual ~WebTextCheckCompletion() {}
  };

the WebTextCheckCompletion object would be deleted by the didCheckText method.

one more comment:  i find the term &quot;text check&quot; to be quite awkward.  i think we
can do better.  maybe &quot;languageCheck&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>322760</commentid>
    <comment_count>9</comment_count>
      <attachid>76627</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2010-12-15 12:44:59 -0800</bug_when>
    <thetext>Comment on attachment 76627
rebased to ToT

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

&gt; WebKit/chromium/public/WebTextCheckingResult.h:43
&gt; +    static WebTextCheckingResult misspellingAt(int location, int length);
&gt; +    static WebTextCheckingResult badGrammarAt(int location, int length);

these static methods need the WEBKIT_API prefix so that they can be exported from WebKit when it is built as a DLL.

please review:
http://www.mail-archive.com/webkit-dev@lists.webkit.org/msg13648.html

&gt; WebKit/chromium/public/WebTextCheckingResult.h:46
&gt; +    int type() const { return m_type; }

it is generally better to define an enum for things like this.  then add code to
AssertMatchingEnums.cpp to ensure that the API defined enums do not get out of sync
with the WebCore defined ones.

&gt; WebKit/chromium/public/WebTextCheckingResult.h:47
&gt; +    int location() const { return m_location; }

nit: i think it is more common to use the term &quot;position&quot; or &quot;offset&quot; in cases like this.

&gt; WebKit/chromium/public/WebViewClient.h:177
&gt; +    // WebView::respondCheckingOfString()

nit: this comment is incorrect</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323045</commentid>
    <comment_count>10</comment_count>
      <attachid>76733</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-15 21:48:39 -0800</bug_when>
    <thetext>Created attachment 76733
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>323046</commentid>
    <comment_count>11</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-15 21:51:53 -0800</bug_when>
    <thetext>Hi Darin, thank you for reviewing!
I updated the patch. Could you take another look?

&gt; &gt; WebKit/chromium/public/WebTextCheckingResult.h:43
&gt; &gt; +    static WebTextCheckingResult misspellingAt(int location, int length);
&gt; &gt; +    static WebTextCheckingResult badGrammarAt(int location, int length);
&gt; 
&gt; these static methods need the WEBKIT_API prefix so that they can be exported from WebKit when it is built as a DLL.
Remove thsese, defining an enum instead.
&gt; &gt; WebKit/chromium/public/WebTextCheckingResult.h:46
&gt; &gt; +    int type() const { return m_type; }
&gt; 
&gt; it is generally better to define an enum for things like this.  then add code to
&gt; AssertMatchingEnums.cpp to ensure that the API defined enums do not get out of sync
&gt; with the WebCore defined ones.
Defined an enum. I didn&apos;t noticed AssertMatchingEnums.cpp. Thank you for pointing this.

&gt; 
&gt; &gt; WebKit/chromium/public/WebTextCheckingResult.h:47
&gt; &gt; +    int location() const { return m_location; }
&gt; 
&gt; nit: i think it is more common to use the term &quot;position&quot; or &quot;offset&quot; in cases like this.
Renamed to position()

&gt; 
&gt; &gt; WebKit/chromium/public/WebViewClient.h:177
&gt; &gt; +    // WebView::respondCheckingOfString()
&gt; 
&gt; nit: this comment is incorrect
Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>324915</commentid>
    <comment_count>12</comment_count>
      <attachid>77094</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2010-12-21 01:20:41 -0800</bug_when>
    <thetext>Created attachment 77094
update to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>329405</commentid>
    <comment_count>13</comment_count>
      <attachid>77967</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-04 21:19:40 -0800</bug_when>
    <thetext>Created attachment 77967
Updated ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332900</commentid>
    <comment_count>14</comment_count>
      <attachid>78649</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 21:28:16 -0800</bug_when>
    <thetext>Created attachment 78649
updated ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332918</commentid>
    <comment_count>15</comment_count>
      <attachid>78656</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 22:31:32 -0800</bug_when>
    <thetext>Created attachment 78656
addressed some feedback that is missed at the last patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332920</commentid>
    <comment_count>16</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-11 22:35:53 -0800</bug_when>
    <thetext>(In reply to comment #8)
The last patch missed this feedback. I updated the patch to handle this.

&gt; (From update of attachment 76627 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=76627&amp;action=review
&gt; 
&gt; &gt; WebKit/chromium/public/WebViewClient.h:178
&gt; &gt; +    // Requests asynchronous spell and grammar checking. The result should be returned by 
&gt; &gt; +    // WebView::respondCheckingOfString()
&gt; &gt; +    virtual void requestTextCheck(int sequence, const WebString&amp;) { }
&gt; 
&gt; nit: find-in-page APIs are somewhat similar in that there are methods on WebFrame
&gt; and WebFrameClient that work asynchronously in unison.  in that API, we use the
&gt; term &quot;identifier&quot; instead of &quot;sequence&quot;, so for consistency it would be better to
&gt; do the same thing here.
Renamed &quot;sequence&quot; to &quot;identifier&quot;

&gt; 
&gt; another idea though is to follow the model used by WebViewClient::runFileChooser.
&gt; it defines a WebFileChooserCompletion interface that gets invoked by the embedder
&gt; when the embedder wishes to push results back into WebKit.  this model allows you
&gt; to avoid the concept of &quot;identifier&quot; altogether.  (it actually ends up pushing it
&gt; up to the Chromium layer where we generate IPCs, but that isn&apos;t a bad thing.)
&gt; 
&gt; so, going with that model, you&apos;d end up with an API that might look like:
&gt; 
&gt;   WebViewClient::requestTextCheck(const WebString&amp;, WebTextCheckCompletion*)
This makes sense. But in this case, async spellcheck will cross the process boundary 
and the pointer-as-an-identifier approach doesn&apos;t look better than the plain identifier.
I&apos;d like to keep current design.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335254</commentid>
    <comment_count>17</comment_count>
      <attachid>79153</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 04:44:42 -0800</bug_when>
    <thetext>Created attachment 79153
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>335256</commentid>
    <comment_count>18</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-17 04:53:19 -0800</bug_when>
    <thetext>Darin, I know you are busy, but would you able to take another look at this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>337775</commentid>
    <comment_count>19</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-20 18:14:40 -0800</bug_when>
    <thetext>ping?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340170</commentid>
    <comment_count>20</comment_count>
      <attachid>80175</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-26 01:01:14 -0800</bug_when>
    <thetext>Created attachment 80175
updated to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>340664</commentid>
    <comment_count>21</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-01-26 17:55:43 -0800</bug_when>
    <thetext>Darin?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344165</commentid>
    <comment_count>22</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-02 13:14:57 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; &gt; so, going with that model, you&apos;d end up with an API that might look like:
&gt; &gt; 
&gt; &gt;   WebViewClient::requestTextCheck(const WebString&amp;, WebTextCheckCompletion*)
&gt; This makes sense. But in this case, async spellcheck will cross the process boundary 
&gt; and the pointer-as-an-identifier approach doesn&apos;t look better than the plain identifier.
&gt; I&apos;d like to keep current design.

Well, I think that our WebKit API should not have baked in assumptions about being used in a multi-process browser.  It seems like you could just as easily put the map from identifier to WebTextCheckCompletion* outside in Chromium instead of within WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344616</commentid>
    <comment_count>23</comment_count>
      <attachid>81048</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-03 03:15:53 -0800</bug_when>
    <thetext>Created attachment 81048
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>344618</commentid>
    <comment_count>24</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-03 03:18:37 -0800</bug_when>
    <thetext>Hi Darin, thank you for your feedback!
I updated the patch to address it.

&gt; Well, I think that our WebKit API should not have baked in assumptions about being used in a multi-process browser.  It seems like you could just as easily put the map from identifier to WebTextCheckCompletion* outside in Chromium instead of within WebKit.
Sounds making sense. So I switched to take the completion callback pattern.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345025</commentid>
    <comment_count>25</comment_count>
      <attachid>81048</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-03 14:48:42 -0800</bug_when>
    <thetext>Comment on attachment 81048
Patch

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

&gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:43
&gt; +class WebTextCheckCompletion {

nit: how about WebTextCheckingCompletion for consistency with the other interfaces, whose names begin with WebTextChecking?

&gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:45
&gt; +    virtual int identifier() const = 0;

it seems like identifier should just be a parameter of requestCheckingOfText just as it
is a parameter to requestCheckingOfString.

or, can you tell me why you need to expose this identifier to Chromium?  you could also
put WebTextCheckingCompletion objects in a base::IDMap within Chromium, and use the ID
vended from that for IPC purposes.  It seems like the internal identifier used by the
editing code could be replaced with an interface like WebTextCheckingCompletion instead.

&gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:46
&gt; +    virtual void didRespondTextCheck(const WebVector&lt;WebTextCheckingResult&gt;&amp;) = 0;

nit: how about didFinishCheckingText?

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:43
&gt; +        Misspelling = 1 &lt;&lt; 0,

nit: how about a more specific enum name, like &quot;Error&quot;?

then you can have:

  enum Error {
      ErrorSpelling = 1 &lt;&lt; 0,
      ErrorGrammar  = 1 &lt;&lt; 1
  };

And the field can be:

  Error error() const { return m_error; }

&gt; Source/WebKit/chromium/public/WebViewClient.h:182
&gt; +    // Requests asynchronous spell and grammar checking. The result should be returned by 

nit: &quot;spelling and grammar checking&quot;

&gt; Source/WebKit/chromium/public/WebViewClient.h:183
&gt; +    // WebView::respondTextCheck()

i think this comment is now wrong.  there is no respondTextCheck method.

&gt; Source/WebKit/chromium/public/WebViewClient.h:184
&gt; +    virtual void requestTextCheck(const WebString&amp;, WebTextCheckCompletion*) { }

requestTextCheck -&gt; requestCheckingOfText perhaps?

&gt; Source/WebKit/chromium/src/EditorClientImpl.h:194
&gt; +

nit: no extra line here

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:414
&gt; +static void invokeRespondLastTextCheck(void* context)

please put static helper methods at the top of the file, so that you don&apos;t
interrupt the flow of member function implementations.

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:436
&gt; +        m_spellcheck.spellCheckWord(WebString(text.characters(), text.length()), &amp;misspelledPosition, &amp;misspelledLength);

I think you should be able to just pass a String here and the conversion to
WebString will happen automatically.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345299</commentid>
    <comment_count>26</comment_count>
      <attachid>81182</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-03 20:43:20 -0800</bug_when>
    <thetext>Created attachment 81182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345301</commentid>
    <comment_count>27</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-03 20:48:20 -0800</bug_when>
    <thetext>Hi Darin, Thank you for reviewing again. 
I addressed the points.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:43
&gt; &gt; +class WebTextCheckCompletion {
&gt; 
&gt; nit: how about WebTextCheckingCompletion for consistency with the other interfaces, whose names begin with WebTextChecking?
Sure. Renamed

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:45
&gt; &gt; +    virtual int identifier() const = 0;
&gt; 
&gt; it seems like identifier should just be a parameter of requestCheckingOfText just as it
&gt; is a parameter to requestCheckingOfString.
&gt; 
&gt; or, can you tell me why you need to expose this identifier to Chromium?  you could also
&gt; put WebTextCheckingCompletion objects in a base::IDMap within Chromium, and use the ID
&gt; vended from that for IPC purposes.  It seems like the internal identifier used by the
&gt; editing code could be replaced with an interface like WebTextCheckingCompletion instead.
Good point. I thought re-numbering ID is a bit redundant. But IDMap class helps.
Thank you for pointing this. I didn&apos;t know that.
Now removed identifier() method.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckCompletion.h:46
&gt; &gt; +    virtual void didRespondTextCheck(const WebVector&lt;WebTextCheckingResult&gt;&amp;) = 0;
&gt; 
&gt; nit: how about didFinishCheckingText?
&gt; 
Renamed.

&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:43
&gt; &gt; +        Misspelling = 1 &lt;&lt; 0,
&gt; 
&gt; nit: how about a more specific enum name, like &quot;Error&quot;?
&gt; 
&gt; then you can have:
&gt; 
&gt;   enum Error {
&gt;       ErrorSpelling = 1 &lt;&lt; 0,
&gt;       ErrorGrammar  = 1 &lt;&lt; 1
&gt;   };
&gt; 
&gt; And the field can be:
&gt; 
&gt;   Error error() const { return m_error; }
Done.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebViewClient.h:182
&gt; &gt; +    // Requests asynchronous spell and grammar checking. The result should be returned by 
&gt; 
&gt; nit: &quot;spelling and grammar checking&quot;
Fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebViewClient.h:183
&gt; &gt; +    // WebView::respondTextCheck()
&gt; 
&gt; i think this comment is now wrong.  there is no respondTextCheck method.
Sure. removed.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebViewClient.h:184
&gt; &gt; +    virtual void requestTextCheck(const WebString&amp;, WebTextCheckCompletion*) { }
&gt; 
&gt; requestTextCheck -&gt; requestCheckingOfText perhaps?
Done.

&gt; 
&gt; &gt; Source/WebKit/chromium/src/EditorClientImpl.h:194
&gt; &gt; +
&gt; 
&gt; nit: no extra line here
Done.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:414
&gt; &gt; +static void invokeRespondLastTextCheck(void* context)
&gt; 
&gt; please put static helper methods at the top of the file, so that you don&apos;t
&gt; interrupt the flow of member function implementations.
I&apos;m sorry for that. Moved.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:436
&gt; &gt; +        m_spellcheck.spellCheckWord(WebString(text.characters(), text.length()), &amp;misspelledPosition, &amp;misspelledLength);
&gt; 
&gt; I think you should be able to just pass a String here and the conversion to
&gt; WebString will happen automatically.
I tried, but it didn&apos;t happen. It looks that WEKIT_IMPLEMENTATION is not defined in DumpRenderTree.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345602</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-04 10:34:23 -0800</bug_when>
    <thetext>&gt; &gt; I think you should be able to just pass a String here and the conversion to
&gt; &gt; WebString will happen automatically.
&gt; I tried, but it didn&apos;t happen. It looks that WEKIT_IMPLEMENTATION is not defined in DumpRenderTree.

Ah, that&apos;s right!  Of course it won&apos;t work then.  Thanks for trying.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345604</commentid>
    <comment_count>29</comment_count>
      <attachid>81182</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-04 10:37:52 -0800</bug_when>
    <thetext>Comment on attachment 81182
Patch

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

&gt; Source/WebKit/chromium/public/WebTextCheckingCompletion.h:35
&gt; +#include &quot;WebTextCheckingResult.h&quot;

nit: i think you can just forward declare WebTextCheckingResult and WebVector here instead.

&gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:35
&gt; +#include &quot;WebVector.h&quot;

nit: no need for WebVector include here

&gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:232
&gt; +    WebViewHost* wvh = static_cast&lt;WebViewHost*&gt;(context);

how do you know that the WebViewHost hasn&apos;t been deleted by the time this function is called?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346449</commentid>
    <comment_count>30</comment_count>
      <attachid>81444</attachid>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-06 20:34:04 -0800</bug_when>
    <thetext>Created attachment 81444
Addressed the feedback</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346453</commentid>
    <comment_count>31</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-06 20:44:30 -0800</bug_when>
    <thetext>Darin, thanks for your review again.
I addressed the points.

&gt; (From update of attachment 81182 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81182&amp;action=review
&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingCompletion.h:35
&gt; &gt; +#include &quot;WebTextCheckingResult.h&quot;
&gt; 
&gt; nit: i think you can just forward declare WebTextCheckingResult and WebVector here instead.
Sure. Fixed.

&gt; 
&gt; &gt; Source/WebKit/chromium/public/WebTextCheckingResult.h:35
&gt; &gt; +#include &quot;WebVector.h&quot;
&gt; 
&gt; nit: no need for WebVector include here
Done.

&gt; 
&gt; &gt; Tools/DumpRenderTree/chromium/WebViewHost.cpp:232
&gt; &gt; +    WebViewHost* wvh = static_cast&lt;WebViewHost*&gt;(context);
&gt; 
&gt; how do you know that the WebViewHost hasn&apos;t been deleted by the time this function is called?
No.
I found there are some other place use similar trick in WebViewHost.
So I filed Bug 53899 to address them separately.
My plan is to track live WebViewHost instances and verify passed one&apos;s liveness before using it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346738</commentid>
    <comment_count>32</comment_count>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-07 12:54:40 -0800</bug_when>
    <thetext>(In reply to comment #31)
&gt; &gt; how do you know that the WebViewHost hasn&apos;t been deleted by the time this function is called?
&gt; No.
&gt; I found there are some other place use similar trick in WebViewHost.
&gt; So I filed Bug 53899 to address them separately.
&gt; My plan is to track live WebViewHost instances and verify passed one&apos;s liveness before using it.

OK</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346960</commentid>
    <comment_count>33</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-07 16:59:38 -0800</bug_when>
    <thetext>(In reply to comment #32)
&gt; (In reply to comment #31)
&gt; &gt; &gt; how do you know that the WebViewHost hasn&apos;t been deleted by the time this function is called?
&gt; &gt; No.
&gt; &gt; I found there are some other place use similar trick in WebViewHost.
&gt; &gt; So I filed Bug 53899 to address them separately.
&gt; &gt; My plan is to track live WebViewHost instances and verify passed one&apos;s liveness before using it.
&gt; 
&gt; OK

Thanks! will land shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>346985</commentid>
    <comment_count>34</comment_count>
    <who name="Hajime Morrita">morrita</who>
    <bug_when>2011-02-07 17:48:03 -0800</bug_when>
    <thetext>Committed r77875: &lt;http://trac.webkit.org/changeset/77875&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76526</attachid>
            <date>2010-12-14 04:36:12 -0800</date>
            <delta_ts>2010-12-14 17:46:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20101214213610.patch</filename>
            <type>text/plain</type>
            <size>26645</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGEyMzE1NjdhYTU2ODQ3OWRkMDE3OGRlZjYxZmQ1MmMyNzc5MGEyLi45YTcwZmEy
ODUxZmY0MGNhYjg3MzE2ZDBmYjk0MWU1MzBiZDQ0MWZiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTItMTMgIEpvbiBIb25l
eWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmYWlsaW5nIHRl
c3QgdG8gdGhlIFdpbmRvd3Mgc2tpcHBlZCBsaXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDhlMDZjNTZlNDY4OGFl
NmQ5ZDlhM2UyZTRmMzRiMzNmOWIwMDY5NjAuLjA4NjEyOWZmMDliMDQzNjQ0MjdmYjljY2M5NzAz
MmU3ZjBhOTIyYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rl
c3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI0ODUsMTAgKzI0ODUsNiBAQCBCVUdXSzQxMzExIFdJ
TiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1BR0UK
IEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA4
Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVy
UmFkaXVzRG91YmxlMDkuaHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVkaXRv
ckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGggNjY2
ODIKLS8vIEJVR1dLNDE0MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNr
LXBhc3RlLmh0bWwgPSBURVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHNDQzNDUgTElOVVggOiBz
dmcvem9vbS90ZXh0L3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFIFBBU1MKIEJVRzQ0
MzQ2IExJTlVYIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFH
RSBQQVNTCkBAIC0zMjYxLDcgKzMyNTcsNiBAQCBCVUc2NjQ2NiBNQUMgV0lOIERFQlVHIFNMT1cg
OiBwZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVRzY2NTU0IFdJTiBE
RUJVRyA6IGZhc3QvanMva2RlL2VuY29kZV9kZWNvZGVfdXJpLmh0bWwgPSBDUkFTSCBQQVNTCiAK
IEJVRzY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1j
YW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUc2NjY4MiBXSU4gTElOVVggTUFDIDogZWRpdGlu
Zy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQKIEJVRzY2Njg2
IDogZmFzdC9sb2FkZXIvdXNlci1zdHlsZXNoZWV0LWZhc3QtcGF0aC5odG1sID0gVEVYVAogCiBC
VUc2Njc1MSA6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJl
bG9hZC5odG1sID0gVEVYVCBUSU1FT1VUIFBBU1MKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM2NDU3MWRiNWYz
YWViZTllY2FkZGFiZDU1OTBjMDg3ZjcyZjE3ZmUuLjk3NDg5MTlmZGMzMzA0OTRhYWY0YTJjYzRk
NWQxYTM2ZjU1OTIzM2YgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEyLTE0
ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVu
dCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIC0g
QWRkZWQgV2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNz
ZXMuCisgICAgICAgIC0gQWRkZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAg
ICAtIEdhdmUgYW4gRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1ZXN0VGV4dENoZWNrKCkuCisg
ICAgICAgIC0gSW1wbGVtZW50ZWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZT
dHJpbmcoKS4KKworICAgICAgICAqIFdlYktpdC5neXA6CisgICAgICAgICogcHVibGljL1dlYlNl
dHRpbmdzLmg6CisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmg6IEFk
ZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OnR5cGUpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OmxvY2F0aW9uKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpzZXF1ZW5jZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpyZXN1bHRzKToKKyAg
ICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0Q2hlY2spOiBB
ZGRlZC4KKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OkVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKTogSW1wbGVtZW50
ZWQuCisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOgorICAgICAgICAoV2ViS2l0OjpF
ZGl0b3JDbGllbnRJbXBsOjpkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyk6IEFkZGVkCisgICAg
ICAgICogc3JjL0VkaXRvckNsaWVudEltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5n
c0ltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjptYWtlTWlzc3BlbGwp
OgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om1ha2VCYWRHcmFtbWFy
KToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayk6IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJWaWV3
SW1wbC5oOgorCiAyMDEwLTEyLTEzICBEYXZpZCBIb2xsb3dheSAgPGRob2xsb3dhQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggYmQ4ZjRhNWM1ZWI1MzFiMjAzMWI4NjFlMzQ3NTY4NGRhZmY0ZDc5NC4uYTE4NWRiNjcyN2Ew
YjZlNmQyNTM4MGQxOWFjNjQ4ZDFlOGVjY2JmYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI3Miw2ICsy
NzIsNyBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YlRleHRDaGVja2luZ1Jlc3BvbnNlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApAQCAtNTQ2LDYgKzU0
Nyw3IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAn
LAogICAgICAgICAgICAgICAgICdzcmMvV2ViU3RvcmFnZU5hbWVzcGFjZUltcGwuaCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJTdHJpbmcuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dl
YlRleHRDaGVja2luZ1Jlc3BvbnNlLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0
UnVuLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJUaHJlYWRTYWZlRGF0YS5jcHAnLAog
ICAgICAgICAgICAgICAgICdzcmMvV2ViVVJMLmNwcCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKaW5kZXggMDQ2N2M5NjZhYTVmZGEyM2RkZTM0NzhkMDRkMjlkYWIyNzE2NmE3Yy4u
NTVkYjQ3NWE4MmZmNjBhN2FjNmY3YjI4ZGZkMTBjYTUzNzNiMjVkZSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaApAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogCiBwcm90ZWN0
ZWQ6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jl
c3BvbnNlLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNl
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uYTQ3N2YyY2UxYTVmMGEzYWEzNWVhNDg3MjQxMjk0ZTM4YmMwMjQyOAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5n
UmVzcG9uc2UuaApAQCAtMCwwICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUK
KyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNv
bnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVy
aXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZV9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlX2gKKworI2luY2x1ZGUgIldlYkNv
bW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKwor
Ly8gQSBjaGVja2VkIGVudHJ5IG9mIHRleHQgY2hlY2tpbmcuCisvLyBOb3RlIHRoYXQgdHlwZSgp
IGlzIG9wYXF1ZSBmcm9tIHRoZSBjbGllbnQKKy8vIGFuZCBzZXQgYnkgdGhlIGZhY3RvcnkgbWV0
aG9kcy4KKy8vCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgeworcHVibGljOgorICAgIHN0
YXRpYyBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgbWFrZU1pc3NwZWxsKGludCBsb2NhdGlvbiwgaW50
IGxlbmd0aCk7CisgICAgc3RhdGljIFdlYlRleHRDaGVja2luZ1Jlc3VsdCBtYWtlQmFkR3JhbW1h
cihpbnQgbG9jYXRpb24sIGludCBsZW5ndGgpOworCisgICAgaW50IHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KKyAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2xvY2F0
aW9uOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKK3By
b3RlY3RlZDoKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoaW50IHR5cGUsIGludCBsb2NhdGlv
biwgaW50IGxlbmd0aCkgCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9sb2Nh
dGlvbihsb2NhdGlvbikKKyAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgeworICAgIH0K
KyAgICAKK3ByaXZhdGU6CisgICAgaW50IG1fdHlwZTsKKyAgICBpbnQgbV9sb2NhdGlvbjsKKyAg
ICBpbnQgbV9sZW5ndGg7Cit9OworCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSB7Citw
dWJsaWM6CisgICAgZXhwbGljaXQgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UoaW50IHNlcXVlbmNl
LCBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKKyAgICAg
ICAgOiBtX3NlcXVlbmNlKHNlcXVlbmNlKQorICAgICAgICAsIG1fcmVzdWx0cyhyZXN1bHRzKQor
ICAgIHsKKyAgICB9CisKKyAgICBpbnQgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcXVl
bmNlOyB9CisgICAgY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3Vs
dHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHM7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9z
ZXF1ZW5jZTsKKyAgICBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiBtX3Jlc3VsdHM7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oCmluZGV4IGExOGE2NGU1MDEyYTMyYTk5ZDI4NTU4NjE4YjUxOWQ2ZGVlZTAwOTYuLjBh
Njc0YThlNzU4OTBlNzg1YWQ2ZDA2M2JlYzI2NDljNzQ5ODdiOTQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCkBAIC00OCw2ICs0OCw3IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwog
Y2xhc3MgV2ViTm9kZTsKIGNsYXNzIFdlYlNldHRpbmdzOwogY2xhc3MgV2ViU3RyaW5nOworY2xh
c3MgV2ViVGV4dENoZWNraW5nUmVzcG9uc2U7CiBjbGFzcyBXZWJWaWV3Q2xpZW50Owogc3RydWN0
IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBvaW50OwpAQCAtMzE5LDYgKzMyMCw5
IEBAIHB1YmxpYzoKICAgICAvLyB0aGVpciBsaW5rcy4KICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2
b2lkIHJlc2V0VmlzaXRlZExpbmtTdGF0ZSgpOwogCisgICAgLy8gU3BlbGwgY2hlY2tpbmcgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor
CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5n
UmVzcG9uc2UmKSA9IDA7CiAKICAgICAvLyBDdXN0b20gY29sb3JzIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaAppbmRleCAwMzNlMTIwNjE2NjljOGIxZDk5YTNhNDY0NmEzNWNm
NGY3MTNhYjcyLi45YzkwYTQ5ZDU2MWEwZDA0YTI1ZmJhMzc5ZDU2NzE3YWQ0YjJiNTU3IDEwMDY0
NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtMTczLDcgKzE3Myw5IEBAIHB1
YmxpYzoKICAgICAvLyBlcnJvciwgdGhlbiB1cG9uIHJldHVybiBtaXNzcGVsbGVkTGVuZ3RoIGlz
IDAuCiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soCiAgICAgICAgIGNvbnN0IFdlYlN0cmlu
ZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmIG1pc3NwZWxsZWRMZW5ndGgpIHsg
fQotCisgICAgLy8gUmVxdWVzdHMgYXN5bmNyb25vdXMgc3BlbGwgYW5kIGdyYW1tYXIgY2hlY2tp
bmcuIFRoZSByZXN1bHQgc2hvdWxkIGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdlYlZpZXc6OnJl
c3BvbmRDaGVja2luZ09mU3RyaW5nKCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVj
ayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYlN0cmluZyYpIHsgfQogICAgIC8vIENvbXB1dGVzIGFu
IGF1dG8tY29ycmVjdGVkIHJlcGxhY2VtZW50IGZvciBhIG1pc3NwZWxsZWQgd29yZC4gIElmIG5v
CiAgICAgLy8gcmVwbGFjZW1lbnQgaXMgZm91bmQsIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJl
dHVybmVkLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJT
dHJpbmcmIG1pc3NwZWxsZWRXb3JkKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggNmYxNzM5ZjIxNTljZWE0OGI5ODlh
NjA0OGRiMjE1YzRhMjc2NTc2NC4uODcwNTYwZWUzZDIzZGE3NTY2YjJmYWIwMGI0MWM5YTY5ZTZh
Y2E0YyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC00MCw2
ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJT
cGVsbENoZWNrZXIuaCIKIAogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNpbmNs
dWRlICJXZWJFZGl0aW5nQWN0aW9uLmgiCkBAIC04NzcsNiArODc4LDMwIEBAIHZvaWQgRWRpdG9y
Q2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQg
bGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAor
dm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNr
ZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQVNT
RVJUKCFtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuY29udGFpbnMoc2VxdWVuY2UpKTsKKyAgICBt
X3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuc2V0KHNlcXVlbmNlLCBzZW5kZXIpOworICAgIG1fd2Vi
Vmlldy0+Y2xpZW50KCktPnJlcXVlc3RUZXh0Q2hlY2soc2VxdWVuY2UsIHRleHQpOworfQorCitz
dGF0aWMgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2Vi
VmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CisgICAgVmVjdG9yPFNw
ZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKFNwZWxs
Q2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KHJl
c3VsdHNbaV0udHlwZSgpKSwgcmVzdWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRzWzBdLmxlbmd0
aCgpKSk7CisgICAgcmV0dXJuIGNvcmVSZXN1bHRzOworfQorCit2b2lkIEVkaXRvckNsaWVudElt
cGw6OmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jlc3Bv
bnNlJiByZXNwb25zZSkKK3sKKyAgICBIYXNoTWFwPGludCwgU3BlbGxDaGVja2VyKj46Oml0ZXJh
dG9yIGZvdW5kID0gbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmZpbmQocmVzcG9uc2Uuc2VxdWVu
Y2UoKSk7CisgICAgaWYgKG1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5lbmQoKSA9PSBmb3VuZCkK
KyAgICAgICAgcmV0dXJuOworICAgIGZvdW5kLT5zZWNvbmQtPmRpZENoZWNrKHJlc3BvbnNlLnNl
cXVlbmNlKCksIHRvQ29yZVJlc3VsdHMocmVzcG9uc2UucmVzdWx0cygpKSk7CisgICAgbV9yZXF1
ZXN0aW5nU3BlbGxDaGVja2VyLnJlbW92ZShmb3VuZCk7Cit9CisKIFN0cmluZyBFZGl0b3JDbGll
bnRJbXBsOjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBT
dHJpbmcmIG1pc3NwZWxsZWRXb3JkKQogewogICAgIGlmICghKGlzQ29udGludW91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKCkgJiYgbV93ZWJWaWV3LT5jbGllbnQoKSkpCmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IDlkYmQ2YWZiMzcxZDY0MTJhMGFmMjBlOGRiN2I4NTE4
Yzc4ODdlMGUuLmJiY2EzMmQzYzFlN2I5YzdjZWVhZjljOTA5ZDA5ZWM0ZjhlOTA3NTQgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNk
ZWZpbmUgRWRpdG9yQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNp
bmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAj
aW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hlY2tl
cjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVibGljOgog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmlu
Zz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgp
OwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0g
ICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hl
Y2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdU
Rjo6U3RyaW5nJik7CisgICAgdm9pZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhjb25zdCBX
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0gYXV0b2Zp
bGwgcG9wdXAgZm9yIHxub2RlfCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFuZAogICAg
IC8vIGl0IGlzIGVtcHR5LiAgVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhlIHVwIG9y
IGRvd24gYXJyb3cgaW4gYQpAQCAtMTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJv
b2wgYmFja3NwYWNlT3JEZWxldGVQcmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1dG9maWxs
QXJncz4gbV9hdXRvZmlsbEFyZ3M7CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6U3BlbGxD
aGVja2VyKj4gbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYwNTYy
YzA1MWI5ZTE3NDk5YTA1M2ExMDFiNDMzZmEzZjE4Yzc4ZC4uMTFjZmI1OTBhYTJkOTg0OTU3NTBl
MWVkOWIxNzk4MjZiMmRhNjFkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmNwcApAQCAtMzI0LDYgKzMyNCwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SHlwZXJs
aW5rQXVkaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRIeXBl
cmxpbmtBdWRpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBs
OjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7Cisg
ICAgbV9zZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxl
ZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChi
b29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQo
ZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQz
OTMxNzAxNjQ5Yjc5NTEzZjYyZWE2NWNhOTBjMTIyZTcyLi4wYTY0NzNmYTBlMDFhMmJhOGVkZGQz
YjczMGY3MzA5ZTFjYzI5ZDFkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgK
QEAgLTk2LDYgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRl
ZDJkQ2FudmFzRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0Vu
YWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxl
ZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZS5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z1Jlc3BvbnNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41YWUwZTM4NGM2ZjY0M2JkODdiYmQ5MmU0N2FlYTVh
MmEyZDQ3NDM1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZS5jcHAKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgorCisjaW5jbHVkZSAiRG9j
dW1lbnRNYXJrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCitXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgV2ViVGV4dENoZWNraW5nUmVzdWx0Ojpt
YWtlTWlzc3BlbGwoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8aW50PihEb2N1bWVudE1hcmtlcjo6U3BlbGxp
bmcpLCBsb2NhdGlvbiwgbGVuZ3RoKTsKK30KKworV2ViVGV4dENoZWNraW5nUmVzdWx0IFdlYlRl
eHRDaGVja2luZ1Jlc3VsdDo6bWFrZUJhZEdyYW1tYXIoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3Ro
KQoreworICAgIHJldHVybiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8aW50PihE
b2N1bWVudE1hcmtlcjo6R3JhbW1hciksIGxvY2F0aW9uLCBsZW5ndGgpOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYWMwNWRk
MmI3OWIzNzljYjczZGMzNjAwMDI4NmI1MDA5ZmJlOTAwMi4uMTM3Y2I4OGVmNjE1MjcwZjVjMzU1
OTA3YjRhNmYzYzY2NmFiN2ViZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAg
LTE5ODcsNiArMTk4NywxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4
dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250
cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVz
cG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7
CisgICAgbV9lZGl0b3JDbGllbnRJbXBsLmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKHJlc3Bv
bnNlKTsKK30KKwogLy8gV2ViVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBib29sIFdlYlZpZXdJbXBsOjpz
ZXREcm9wRWZmZWN0KGJvb2wgYWNjZXB0KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4
IDZlOGRjYWNkNTg2MzgzOWQ2NmZiOTU5Nzg4ZTI4Yjk5YzMzMmZiM2MuLmU2YTc2ODRkM2MxZDc0
YmFhNTdhZWVmY2U2NzRkMDQyMjczYTRhYmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVk
IGFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4
dENoZWNraW5nUmVzcG9uc2UmKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKZGlmZiAtLWdpdCBh
L1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAzMzA2
NTQ3MjJmODI1YmUxOTYxOTVlMDUxOWI4ZWVmYjc1MzdiMjJmLi41ZmJlOTgxYmNjYTE3MDQ4M2Iz
MTlhYzkwZGRmODlkYTQzNGEzMzgyIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTAgQEAKKzIwMTAtMTItMTQg
IE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgZml4ZWQKKworICAgICAgICBOZWVkIGEgc2hv
cnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGlu
dm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0
VGV4dENoZWNrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjayk6
CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKworMjAx
MC0xMi0xNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBE
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJlc3Bv
bmRMYXN0VGV4dENoZWNrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENoZWNr
KToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjayk6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKworMjAxMC0xMi0xNCAg
TU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5k
IGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJlc3BvbmRMYXN0VGV4
dENoZWNrKToKKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENoZWNrKToKKyAgICAg
ICAgKFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjayk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMC0xMi0xMyAgTWloYWkgUGFy
cGFyaXRhICA8bWloYWlwQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBKYW1l
cyBSb2JpbnNvbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlM2FmNzM4MzEzZmZhOTli
Y2QxYmUwNmMxMzFlNWJmMjRkZDMwZjkxLi5lNTVlZDY2YWM3ZDNkZDMwYmFlMmI2MDA1OWRmNWMz
YTJkMTk4ZGQ4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjQsOSArNjI0LDExIEBA
IHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3Qg
Q3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0
Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBG
SVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFy
Z3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5n
cygpLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29s
KGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYs
IENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmggYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCmluZGV4IGRjZDM3ZjNlYjA1M2I1NDczY2MxYjk2
NDI4NWRmOGI1N2RlY2RkZGYuLjZmNWFkZTJlNTdlZTVjNTVjNTcwMTc3NTIwNWQxNDE0OGQ0NWY1
NGYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tT
cGVsbENoZWNrLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9j
a1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAg
ICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAgdm9pZCBmaWxsU3VnZ2VzdGlv
bkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFZlY3RvcjxXZWJLaXQ6OldlYlN0
cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAKIHByaXZhdGU6CiAgICAgLy8gSW5pdGlhbGl6ZSB0
aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8gaW5pdGlhbGl6ZSBpdC4KICAgICAv
LyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2UgbG9uZyB0aW1lLiBUbyBwcmV2ZW50
IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDEwYTI4MjNiYTU0OGY5MjhjYWVlZjkzMDI4MjA4ZDVh
ZGI2OTk1NDEuLjlhZjYwYTBkYjNjZmE5MzAzMTJjMTI0NTBkOTljZmQ1NTM1MzcwNjIgMTAwNjQ0
Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiV2Vi
U3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3Bh
Y2UuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIldl
YlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKQEAgLTY0LDYgKzY1LDcgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJr
aXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3Rm
L1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxNyw2ICs0MTksNDAgQEAg
dm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYg
bWlzc3BlbGxlZE9mZnNldCwgaW50JgogI2VuZGlmCiB9CiAKK3N0YXRpYyB2b2lkIGludm9rZVJl
c3BvbmRMYXN0VGV4dENoZWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViVmlld0hvc3QqIHd2
aCA9IHN0YXRpY19jYXN0PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7CisgICAgd3ZoLT5yZXNwb25k
TGFzdFRleHRDaGVjaygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENoZWNr
KGludCBzZXF1ZW5jZSwgY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQoreworICAgIG1fbGFzdFJlcXVl
c3RlZFRleHRDaGVja1NlcXVlbmNlID0gc2VxdWVuY2U7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNr
KGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAp
OworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjaygpCit7CisgICAg
VmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAvLyBGSVhNRTogRG8g
dGhlIGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7CisgICAgU3RyaW5nIHRleHQo
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4dC5sZW5ndGgoKSkgeworICAg
ICAgICBpbnQgbWlzc3BlbGxlZExvY2F0aW9uID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRM
ZW5ndGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5n
KHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRMb2NhdGlvbiwg
Jm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoV2ViVGV4dENoZWNraW5nUmVz
dWx0OjptYWtlTWlzc3BlbGwob2Zmc2V0ICsgbWlzc3BlbGxlZExvY2F0aW9uLCBtaXNzcGVsbGVk
TGVuZ3RoKSk7CisgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGVkTG9jYXRp
b24gKyBtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsZWRMb2Nh
dGlvbjsKKyAgICB9CisKKyAgICB3ZWJWaWV3KCktPnJlc3BvbmRUZXh0Q2hlY2soV2ViVGV4dENo
ZWNraW5nUmVzcG9uc2UobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVuY2UsIHJlc3VsdHMp
KTsKK30KKworCiBXZWJTdHJpbmcgV2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjb25zdCBX
ZWJTdHJpbmcmKQogewogICAgIC8vIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJL
aXQgKCdXZWJLaXRTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbScpCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCAyMGIyOWMwZDlj
YjYxMDllZjU1NWEwMDg0NzBiM2NlZDE1MDhlOTg4Li5jYzg5N2U1NDIyZjVmZTg5M2I3NGY3OGQx
NWY3M2RlZDdiY2VhOWFmIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAgICAgdmlydHVhbCBi
b29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHNwZWxs
Q2hlY2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBpbnQmIG9mZnNldCwgaW50JiBsZW5ndGgp
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGF1dG9D
b3JyZWN0V29yZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBy
dW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0
cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1EaWFsb2coV2ViS2l0OjpX
ZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CkBAIC0yMDgsNyArMjA5LDEwIEBA
IGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGlj
IFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVt
KFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9u
ZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAK
ICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50
YXRpb25DbGllbnRNb2NrKCk7CisgICAgCisgICAgLy8gU3BlbGxjaGVjayByZWFsdGVkIGhlbHBl
ciBBUElzCiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CisgICAgdm9pZCBy
ZXNwb25kTGFzdFRleHRDaGVjaygpOwogCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NB
VElPTikKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250
cm9sbGVyCkBAIC0zMjcsNiArMzMxLDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpX
ZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7
CiAKICAgICBPd25QdHI8VGVzdE5hdmlnYXRpb25Db250cm9sbGVyKj4gbV9uYXZpZ2F0aW9uQ29u
dHJvbGxlcjsKKworICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVj
a1N0cmluZzsKKyAgICBpbnQgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVuY2U7CiB9Owog
CiAjZW5kaWYgLy8gV2ViVmlld0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76603</attachid>
            <date>2010-12-14 17:46:32 -0800</date>
            <delta_ts>2010-12-14 21:15:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20101215104629.patch</filename>
            <type>text/plain</type>
            <size>27824</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxOGEyMzE1NjdhYTU2ODQ3OWRkMDE3OGRlZjYxZmQ1MmMyNzc5MGEyLi45ZGMxMmY3
MjU5YWQ3NWUzNGJjNjc2NDBlYzljMjQ0NzE1MGI0ZjkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTItMTMgIEpvbiBI
b25leWN1dHQgIDxqaG9uZXljdXR0QGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgYSBmYWlsaW5n
IHRlc3QgdG8gdGhlIFdpbmRvd3Mgc2tpcHBlZCBsaXN0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMv
cGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDhlMDZjNTZlNDY4
OGFlNmQ5ZDlhM2UyZTRmMzRiMzNmOWIwMDY5NjAuLjA4NjEyOWZmMDliMDQzNjQ0MjdmYjljY2M5
NzAzMmU3ZjBhOTIyYjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVt
L3Rlc3RfZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI0ODUsMTAgKzI0ODUsNiBAQCBCVUdXSzQxMzEx
IFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1B
R0UKIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTA4Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG91YmxlMDkuaHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVk
aXRvckNsaWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGgg
NjY2ODIKLS8vIEJVR1dLNDE0MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNo
ZWNrLXBhc3RlLmh0bWwgPSBURVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHNDQzNDUgTElOVVgg
OiBzdmcvem9vbS90ZXh0L3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFIFBBU1MKIEJV
RzQ0MzQ2IExJTlVYIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJ
TUFHRSBQQVNTCkBAIC0zMjYxLDcgKzMyNTcsNiBAQCBCVUc2NjQ2NiBNQUMgV0lOIERFQlVHIFNM
T1cgOiBwZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVRzY2NTU0IFdJ
TiBERUJVRyA6IGZhc3QvanMva2RlL2VuY29kZV9kZWNvZGVfdXJpLmh0bWwgPSBDUkFTSCBQQVNT
CiAKIEJVRzY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1v
bi1jYW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUc2NjY4MiBXSU4gTElOVVggTUFDIDogZWRp
dGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQKIEJVRzY2
Njg2IDogZmFzdC9sb2FkZXIvdXNlci1zdHlsZXNoZWV0LWZhc3QtcGF0aC5odG1sID0gVEVYVAog
CiBCVUc2Njc1MSA6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIt
cHJlbG9hZC5odG1sID0gVEVYVCBUSU1FT1VUIFBBU1MKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM2NDU3MWRi
NWYzYWViZTllY2FkZGFiZDU1OTBjMDg3ZjcyZjE3ZmUuLjAzNzBmYjE0MTJhOWFiNTJhOTlhNjlm
MGM3ZjNkMzBlZjIxYWU0NTYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
KysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEy
LTE0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxl
bWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAg
IC0gQWRkZWQgV2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNs
YXNzZXMuCisgICAgICAgIC0gQWRkZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAg
ICAgICAtIEltcGxlbWVudGVkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKCkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0
aW5ncy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRl
ZCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4
dENoZWNraW5nUmVzcG9uc2U6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlKToKKyAgICAgICAgKFdl
YktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OnNlcXVlbmNlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OnJlc3VsdHMpOgorICAgICAgICAqIHB1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRD
aGVja2luZ1Jlc3VsdDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jl
c3VsdDo6bG9jYXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6
Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4
dENoZWNraW5nUmVzdWx0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAq
IHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6
OnJlcXVlc3RUZXh0Q2hlY2spOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJp
bmcpOiBHYXZlIGFuIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0Ojp0b0NvcmVSZXN1
bHRzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmRpZFJlc3Bv
bmRDaGVja2luZ09mU3RyaW5nKTogQWRlZC4KKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1w
bC5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKTog
QWRkZWQuCisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgY2xh
c3MuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6bWlzc3BlbGxpbmdB
dCk6IAorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OmJhZEdyYW1tYXJB
dCk6CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
Vmlld0ltcGw6OnJlc3BvbmRUZXh0Q2hlY2spOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5o
OgorCiAyMDEwLTEyLTEzICBEYXZpZCBIb2xsb3dheSAgPGRob2xsb3dhQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYmQ4
ZjRhNWM1ZWI1MzFiMjAzMWI4NjFlMzQ3NTY4NGRhZmY0ZDc5NC4uNTFjNTFlYTdlYmJkOGY4NGY1
MDE4NTljN2U1YzI4ZGVhZTI5MGNiYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktp
dC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI3Miw2ICsyNzIsOCBA
QAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgnLAogICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VGV4dENhc2VTZW5zaXRpdml0eS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRD
aGVja2luZ1Jlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAg
ICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApAQCAtNTQ2LDYgKzU0OCw3IEBACiAgICAg
ICAgICAgICAgICAgJ3NyYy9XZWJTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViU3RvcmFnZU5hbWVzcGFjZUltcGwuaCcsCiAgICAgICAgICAgICAgICAg
J3NyYy9XZWJTdHJpbmcuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2lu
Z1Jlc3VsdC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAg
ICAgICAgICAgICAgICdzcmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKICAgICAgICAgICAgICAg
ICAnc3JjL1dlYlVSTC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4
IDA0NjdjOTY2YWE1ZmRhMjNkZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZhN2MuLjU1ZGI0NzVhODJmZjYw
YTdhYzZmN2IyOGRmZDEwY2E1MzczYjI1ZGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFj
Y2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxp
bmtBdWRpdGluZ0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmFhNzEyM2IzOWI0ZWU1Y2RiNGViYjllZWMyYjM2NGZlY2E4YTVmN2MKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgKQEAg
LTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICog
bWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICog
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nUmVzcG9uc2VfaAorI2RlZmluZSBX
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9oCisKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRleHRDaGVja2luZ1Jlc3Bv
bnNlIHsKK3B1YmxpYzoKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZShpbnQgc2VxdWVuY2Us
IGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorICAgICAg
ICA6IG1fc2VxdWVuY2Uoc2VxdWVuY2UpCisgICAgICAgICwgbV9yZXN1bHRzKHJlc3VsdHMpCisg
ICAgeworICAgIH0KKworICAgIGludCBzZXF1ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVu
Y2U7IH0KKyAgICBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0
cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitwcml2YXRlOgorICAgIGludCBtX3Nl
cXVlbmNlOworICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IG1fcmVzdWx0czsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmggYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMzQ5NjJhMzQz
NDNmYTIyNWNkMGJkMWE1YjliYjg5NDMwMTQ4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCkBAIC0wLDAgKzEsNjYgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ1Jl
c3VsdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0IGNoZWNr
aW5nLgorY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzdWx0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMg
V2ViVGV4dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nQXQoaW50IGxvY2F0aW9uLCBpbnQgbGVu
Z3RoKTsKKyAgICBzdGF0aWMgV2ViVGV4dENoZWNraW5nUmVzdWx0IGJhZEdyYW1tYXJBdChpbnQg
bG9jYXRpb24sIGludCBsZW5ndGgpOworCisgICAgLy8gVGhlIHR5cGUoKSB2YWx1ZSBpcyBvcGFx
dWUgZnJvbSB0aGUgY2xpZW50IGFuZCBzZXQgYnkgdGhlIGZhY3RvcnkgbWV0aG9kcyBhYm92ZS4K
KyAgICBpbnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGludCBsb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3Qg
eyByZXR1cm4gbV9sZW5ndGg7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYlRleHRDaGVja2luZ1Jl
c3VsdChpbnQgdHlwZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSAKKyAgICAgICAgOiBtX3R5
cGUodHlwZSkKKyAgICAgICAgLCBtX2xvY2F0aW9uKGxvY2F0aW9uKQorICAgICAgICAsIG1fbGVu
Z3RoKGxlbmd0aCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBpbnQgbV90eXBl
OworICAgIGludCBtX2xvY2F0aW9uOworICAgIGludCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYTE4
YTY0ZTUwMTJhMzJhOTlkMjg1NTg2MThiNTE5ZDZkZWVlMDA5Ni4uMGE2NzRhOGU3NTg5MGU3ODVh
ZDZkMDYzYmVjMjY0OWM3NDk4N2I5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTQ4
LDYgKzQ4LDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJOb2RlOwog
Y2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUZXh0Q2hlY2tp
bmdSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdDbGllbnQ7CiBzdHJ1Y3QgV2ViTWVkaWFQbGF5ZXJB
Y3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC0zMTksNiArMzIwLDkgQEAgcHVibGljOgogICAg
IC8vIHRoZWlyIGxpbmtzLgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVzZXRWaXNpdGVk
TGlua1N0YXRlKCk7CiAKKyAgICAvLyBTcGVsbCBjaGVja2luZyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZv
aWQgcmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpID0gMDsK
IAogICAgIC8vIEN1c3RvbSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCmluZGV4IDAzM2UxMjA2MTY2OWM4YjFkOTlhM2E0NjQ2YTM1Y2Y0ZjcxM2FiNzIuLjIwMDA2
MDRjMGU0ZmVhNDAyN2U3NzdlZGQxZTQwMmI2YjY1MGZmMmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViVmlld0NsaWVudC5oCkBAIC0xNzMsNyArMTczLDkgQEAgcHVibGljOgogICAgIC8vIGVy
cm9yLCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRMZW5ndGggaXMgMC4KICAgICB2aXJ0dWFs
IHZvaWQgc3BlbGxDaGVjaygKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1p
c3NwZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExlbmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1
ZXN0cyBhc3luY2hyb25vdXMgc3BlbGwgYW5kIGdyYW1tYXIgY2hlY2tpbmcuIFRoZSByZXN1bHQg
c2hvdWxkIGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdlYlZpZXc6OnJlc3BvbmRDaGVja2luZ09m
U3RyaW5nKCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2Us
IGNvbnN0IFdlYlN0cmluZyYpIHsgfQogICAgIC8vIENvbXB1dGVzIGFuIGF1dG8tY29ycmVjdGVk
IHJlcGxhY2VtZW50IGZvciBhIG1pc3NwZWxsZWQgd29yZC4gIElmIG5vCiAgICAgLy8gcmVwbGFj
ZW1lbnQgaXMgZm91bmQsIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgogICAgIHZp
cnR1YWwgV2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmIG1pc3NwZWxs
ZWRXb3JkKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHAKaW5kZXggNmYxNzM5ZjIxNTljZWE0OGI5ODlhNjA0OGRiMjE1YzRhMjc2
NTc2NC4uNDdkNjNkNTNhNzcxMGI0YWY3MmIxODY0MGI2NDJjNTVjZDBlZWJlYSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5j
bHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcu
aCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIK
IAogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJFZGl0aW5n
QWN0aW9uLmgiCkBAIC04NzcsNiArODc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hl
Y2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAg
ICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAordm9pZCBFZGl0b3JDbGll
bnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50
IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3Rp
bmdTcGVsbENoZWNrZXIuY29udGFpbnMoc2VxdWVuY2UpKTsKKyAgICBtX3JlcXVlc3RpbmdTcGVs
bENoZWNrZXIuc2V0KHNlcXVlbmNlLCBzZW5kZXIpOworICAgIG1fd2ViVmlldy0+Y2xpZW50KCkt
PnJlcXVlc3RUZXh0Q2hlY2soc2VxdWVuY2UsIHRleHQpOworfQorCitzdGF0aWMgVmVjdG9yPFNw
ZWxsQ2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRD
aGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CisgICAgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1
bHQ+IGNvcmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXpl
KCk7ICsraSkKKyAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKFNwZWxsQ2hlY2tpbmdSZXN1bHQo
c3RhdGljX2Nhc3Q8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KHJlc3VsdHNbaV0udHlwZSgp
KSwgcmVzdWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0aCgpKSk7CisgICAgcmV0
dXJuIGNvcmVSZXN1bHRzOworfQorCit2b2lkIEVkaXRvckNsaWVudEltcGw6OmRpZFJlc3BvbmRD
aGVja2luZ09mU3RyaW5nKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlJiByZXNwb25zZSkK
K3sKKyAgICBIYXNoTWFwPGludCwgU3BlbGxDaGVja2VyKj46Oml0ZXJhdG9yIGZvdW5kID0gbV9y
ZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmZpbmQocmVzcG9uc2Uuc2VxdWVuY2UoKSk7CisgICAgaWYg
KG1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5lbmQoKSA9PSBmb3VuZCkKKyAgICAgICAgcmV0dXJu
OworICAgIGZvdW5kLT5zZWNvbmQtPmRpZENoZWNrKHJlc3BvbnNlLnNlcXVlbmNlKCksIHRvQ29y
ZVJlc3VsdHMocmVzcG9uc2UucmVzdWx0cygpKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVj
a2VyLnJlbW92ZShmb3VuZCk7Cit9CisKIFN0cmluZyBFZGl0b3JDbGllbnRJbXBsOjpnZXRBdXRv
Q29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxs
ZWRXb3JkKQogewogICAgIGlmICghKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkg
JiYgbV93ZWJWaWV3LT5jbGllbnQoKSkpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1w
bC5oCmluZGV4IDlkYmQ2YWZiMzcxZDY0MTJhMGFmMjBlOGRiN2I4NTE4Yzc4ODdlMGUuLmJiY2Ez
MmQzYzFlN2I5YzdjZWVhZjljOTA5ZDA5ZWM0ZjhlOTA3NTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
RWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNkZWZpbmUgRWRpdG9yQ2xp
ZW50SW1wbF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0Rl
cXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7Cisg
ICAgdm9pZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhjb25zdCBXZWJUZXh0Q2hlY2tpbmdS
ZXNwb25zZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0gYXV0b2ZpbGwgcG9wdXAgZm9yIHxu
b2RlfCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFuZAogICAgIC8vIGl0IGlzIGVtcHR5
LiAgVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhlIHVwIG9yIGRvd24gYXJyb3cgaW4g
YQpAQCAtMTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgYmFja3NwYWNlT3JE
ZWxldGVQcmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1dG9maWxsQXJncz4gbV9hdXRvZmls
bEFyZ3M7CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6U3BlbGxDaGVja2VyKj4gbV9yZXF1
ZXN0aW5nU3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1MWI5ZTE3NDk5YTA1
M2ExMDFiNDMzZmEzZjE4Yzc4ZC4uMTFjZmI1OTBhYTJkOTg0OTU3NTBlMWVkOWIxNzk4MjZiMmRh
NjFkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMzI0LDYg
KzMyNCwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFi
bGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRIeXBlcmxpbmtBdWRpdGluZ0Vu
YWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25v
dXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQg
V2ViU2V0dGluZ3NJbXBsOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7
CiAgICAgbV9zZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5Yjc5NTEz
ZjYyZWE2NWNhOTBjMTIyZTcyLi4wYTY0NzNmYTBlMDFhMmJhOGVkZGQzYjczMGY3MzA5ZTFjYzI5
ZDFkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTk2LDYgKzk2LDcg
QEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxl
ZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogCiBwcml2YXRl
OgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQu
Y3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJmMDgyNzhiMDgyOWUzOWQyMjBmMGJjMjI1Zjg3MTBhMTU5NGViNTgKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAK
QEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisg
KiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisKK3VzaW5n
IG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVGV4dENoZWNr
aW5nUmVzdWx0IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6bWlzc3BlbGxpbmdBdChpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFdlYlRleHRDaGVja2luZ1Jlc3VsdChzdGF0
aWNfY2FzdDxpbnQ+KERvY3VtZW50TWFya2VyOjpTcGVsbGluZyksIGxvY2F0aW9uLCBsZW5ndGgp
OworfQorCitXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgV2ViVGV4dENoZWNraW5nUmVzdWx0OjpiYWRH
cmFtbWFyQXQoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8aW50PihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciks
IGxvY2F0aW9uLCBsZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYWMwNWRkMmI3OWIzNzljYjczZGMzNjAwMDI4NmI1
MDA5ZmJlOTAwMi4uMTM3Y2I4OGVmNjE1MjcwZjVjMzU1OTA3YjRhNmYzYzY2NmFiN2ViZSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5ODcsNiArMTk4NywxMSBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0
aW9uKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1l
bnUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9lZGl0b3JDbGllbnRJbXBs
LmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKHJlc3BvbnNlKTsKK30KKwogLy8gV2ViVmlldyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBib29sIFdlYlZpZXdJbXBsOjpzZXREcm9wRWZmZWN0KGJvb2wgYWNjZXB0
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDZlOGRjYWNkNTg2MzgzOWQ2NmZiOTU5
Nzg4ZTI4Yjk5YzMzMmZiM2MuLmU2YTc2ODRkM2MxZDc0YmFhNTdhZWVmY2U2NzRkMDQyMjczYTRh
YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2
ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmKTsKIAog
ICAgIC8vIFdlYlZpZXdJbXBsCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBi
L1dlYktpdFRvb2xzL0NoYW5nZUxvZwppbmRleCAzMzA2NTQ3MjJmODI1YmUxOTYxOTVlMDUxOWI4
ZWVmYjc1MzdiMjJmLi40NzIxYzdmZGRkMDRlNTRlOTUzODYzMmYwNjllZjZhZWU5ZDM2YTA5IDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0Nocm9taXVtXSBTaG91bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUxMDEzCisKKyAgICAgICAgR2F2ZSBEUlQgaW1wbGVtZW50YXRpb24gZm9y
IHJlcXVlc3RUZXh0Q2hlY2soKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEltcGxlbWVudGVkLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoaW52
b2tlUmVzcG9uZExhc3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpy
ZXF1ZXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzcG9uZExh
c3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oOgorCiAyMDEwLTEyLTEzICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbWVzIFJvYmluc29uLgpkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRy
b2xsZXIuY3BwIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCmluZGV4IGUzYWY3MzgzMTNmZmE5OWJjZDFiZTA2YzEzMWU1YmYyNGRk
MzBmOTEuLmU1NWVkNjZhYzdkM2RkMzBiYWUyYjYwMDU5ZGY1YzNhMmQxOThkZDggMTAwNjQ0Ci0t
LSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKQEAgLTYyNCw5ICs2MjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFy
Z3VtZW4KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJv
bGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiwgQ3BwVmFyaWFudCopCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3Vt
ZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhp
cy4KKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgp
KQorICAgICAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNwcFZhcmlhbnRUb0Jvb2woYXJndW1lbnRzWzBdKSk7Cisg
ICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNo
b3dXZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1Nw
ZWxsQ2hlY2suaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmgKaW5kZXggZGNkMzdmM2ViMDUzYjU0NzNjYzFiOTY0Mjg1ZGY4YjU3ZGVjZGRkZi4u
NmY1YWRlMmU1N2VlNWM1NWM1NzAxNzc1MjA1ZDE0MTQ4ZDQ1ZjU0ZiAxMDA2NDQKLS0tIGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaAorKysgYi9X
ZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCkBAIC02
Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3Bl
bGxlZExlbmd0aCk7CiAKICAgICB2b2lkIGZpbGxTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6
OldlYlN0cmluZyYgd29yZCwgVmVjdG9yPFdlYktpdDo6V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMp
OworICAgIAogcHJpdmF0ZToKICAgICAvLyBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCByZXNvdXJj
ZXMgaWYgd2UgbmVlZCB0byBpbml0aWFsaXplIGl0LgogICAgIC8vIEluaXRpYWxpemluZyB0aGlz
IG9iamVjdCBtYXkgdGFrZSBsb25nIHRpbWUuIFRvIHByZXZlbnQgZnJvbSBodXJ0aW5nCmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5j
cHAgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
aW5kZXggMTBhMjgyM2JhNTQ4ZjkyOGNhZWVmOTMwMjgyMDhkNWFkYjY5OTU0MS4uZDlmODU0NGQ5
NjQzNzM0NzhkNDA0ZThiM2IzMmJhMGE1ZTg1N2Y2NyAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1dlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNTYsNiArNTYsNyBA
QAogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgorI2luY2x1ZGUgIldl
YlRleHRDaGVja2luZ1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgpAQCAtNjQsNiAr
NjUsNyBAQAogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpAQCAtNDE3LDYgKzQxOSw0MCBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpz
cGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBp
bnQmCiAjZW5kaWYKIH0KIAorc3RhdGljIHZvaWQgaW52b2tlUmVzcG9uZExhc3RUZXh0Q2hlY2so
dm9pZCogY29udGV4dCkKK3sKKyAgICBXZWJWaWV3SG9zdCogd3ZoID0gc3RhdGljX2Nhc3Q8V2Vi
Vmlld0hvc3QqPihjb250ZXh0KTsKKyAgICB3dmgtPnJlc3BvbmRMYXN0VGV4dENoZWNrKCk7Cit9
CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnJlcXVlc3RUZXh0Q2hlY2soaW50IHNlcXVlbmNlLCBjb25z
dCBXZWJTdHJpbmcmIHRleHQpCit7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVu
Y2UgPSBzZXF1ZW5jZTsKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcgPSB0ZXh0
OworICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2soaW52b2tlUmVzcG9uZExhc3RU
ZXh0Q2hlY2ssIHN0YXRpY19jYXN0PHZvaWQqPih0aGlzKSwgMCk7Cit9CisKK3ZvaWQgV2ViVmll
d0hvc3Q6OnJlc3BvbmRMYXN0VGV4dENoZWNrKCkKK3sKKyAgICBWZWN0b3I8V2ViVGV4dENoZWNr
aW5nUmVzdWx0PiByZXN1bHRzOworICAgIC8vIEZJWE1FOiBEbyB0aGUgZ3JhbW1hciBjaGVjay4K
KyAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICBTdHJpbmcgdGV4dChtX2xhc3RSZXF1ZXN0ZWRUZXh0
Q2hlY2tTdHJpbmcuZGF0YSgpLCBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcubGVuZ3Ro
KCkpOworICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgIGludCBtaXNzcGVsbGVk
TG9jYXRpb24gPSAwOworICAgICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7CisgICAgICAg
IG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCks
IHRleHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZExvY2F0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7
CisgICAgICAgIGlmICghbWlzc3BlbGxlZExlbmd0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICByZXN1bHRzLmFwcGVuZChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om1pc3NwZWxsaW5nQXQo
b2Zmc2V0ICsgbWlzc3BlbGxlZExvY2F0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSk7CisgICAgICAg
IHRleHQgPSB0ZXh0LnN1YnN0cmluZyhtaXNzcGVsbGVkTG9jYXRpb24gKyBtaXNzcGVsbGVkTGVu
Z3RoKTsKKyAgICAgICAgb2Zmc2V0ICs9IG1pc3NwZWxsZWRMb2NhdGlvbjsKKyAgICB9CisKKyAg
ICB3ZWJWaWV3KCktPnJlc3BvbmRUZXh0Q2hlY2soV2ViVGV4dENoZWNraW5nUmVzcG9uc2UobV9s
YXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVuY2UsIHJlc3VsdHMpKTsKK30KKworCiBXZWJTdHJp
bmcgV2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmKQogewogICAg
IC8vIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdXZWJLaXRTdXBwb3J0
L1dlYkVkaXRvckNsaWVudC5tbScpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRleCAyMGIyOWMwZDljYjYxMDllZjU1NWEwMDg0NzBi
M2NlZDE1MDhlOTg4Li4zMGI4NTA5NzBmMzYxMzJjN2QyMTRjODc0ZTQ1NTgzZjEyMWRlZjYxIDEw
MDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6
OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1
YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRL
ZXlib2FyZEV2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soY29uc3QgV2ViS2l0
OjpXZWJTdHJpbmcmLCBpbnQmIG9mZnNldCwgaW50JiBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0VGV4dENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbEFsZXJ0RGlhbG9n
KFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1
YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1EaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJik7CkBAIC0yMDgsNyArMjA5LDEwIEBAIGNsYXNzIFdlYlZpZXdIb3N0
IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVD
bGllbnQsCiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2ViRnJhbWUq
LCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0
ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAKICAgICBXZWJLaXQ6OldlYkRl
dmljZU9yaWVudGF0aW9uQ2xpZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7
CisgICAgCisgICAgLy8gU3BlbGxjaGVjayByZWxhdGVkIGhlbHBlciBBUElzCiAgICAgTW9ja1Nw
ZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNrKCk7CisgICAgdm9pZCByZXNwb25kTGFzdFRleHRDaGVj
aygpOwogCiAjaWYgRU5BQkxFKENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAvLyBHZW9s
b2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCkBAIC0zMjcsNiAr
MzMxLDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRy
b2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiAKICAgICBPd25QdHI8VGVz
dE5hdmlnYXRpb25Db250cm9sbGVyKj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKKworICAgIFdl
YktpdDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKKyAgICBpbnQg
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVuY2U7CiB9OwogCiAjZW5kaWYgLy8gV2ViVmll
d0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76627</attachid>
            <date>2010-12-14 21:15:56 -0800</date>
            <delta_ts>2010-12-15 21:48:33 -0800</delta_ts>
            <desc>rebased to ToT</desc>
            <filename>bug-51013-20101215141554.patch</filename>
            <type>text/plain</type>
            <size>27806</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ODU5YmM3MzVmNTAxMjIxYWU0NjQ2ODA1MDRlMDA2YzVhNzQwMjU4Li42YTUyNDI1
Y2MzNjMyODVhZTk3NmJiMDAwYzU3NjA0OWI4YWE0ZDNlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTItMTQgIENvc21p
biBUcnV0YSAgPGN0cnV0YUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKaW5kZXggYzJkMzU3YzQ3ZGZkM2E3ZDZiNmMyMjBmZTY4NDFhOTRlYzA1
MzI1NC4uZTg0ZWI4ZDlmMjJmYTYxYmU5NDQyM2VkNTI5YjYzOTE4MzEwOTViMiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cisr
KyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApA
QCAtMjQ4NCwxMCArMjQ4NCw2IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJz
L2JvcmRlclJhZGl1c0RvdWJsZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVgg
OiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdFCiBCVUdXSzQx
MzExIFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOS5odG1sID0g
SU1BR0UKIAotLy8gTmVlZCB0byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZygpCi0vLyBPdmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0MTQyMyBXSU4g
TElOVVggOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQKLQog
Ly8gRmxha3kgdGVzdHMuCiBCVUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96b29tLWhp
eGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVYIDogc3ZnL3pv
b20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBAIC0zMjQ0LDcg
KzMyNDAsNiBAQCBCVUdDUjY2NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYvYXJyYXktbmVz
dGVkLWxvb3AuaHRtbCA9IFBBU1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcgOiBmYXN0L2pz
L2tkZS9lbmNvZGVfZGVjb2RlX3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdDUjY2NjgzIFdJ
TiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52YXMtc2hhZG93
Lmh0bWwgPSBURVhUCi1CVUdDUjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5nL3NwZWxsaW5n
L3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4NiA6IGZhc3Qv
bG9hZGVyL3VzZXItc3R5bGVzaGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAogQlVHQ1I2Njc1
MSA6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5o
dG1sID0gVEVYVCBUSU1FT1VUIFBBU1MKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IDAwOGQ5MDFjYWVjNjI2MjQ2
YjE5YTc0MmUzMjRlNWNkMDE5ODA5ZDEuLjYyOTNhNGQ2NmU2OGYyNDY5NTIzZTVhYTQyNmQyOGYz
YWZiZDA3YjMgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQzIEBACisyMDEwLTEyLTE0ICBNT1JJ
VEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0
b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIC0gQWRkZWQg
V2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisg
ICAgICAgIC0gQWRkZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAgICAtIElt
cGxlbWVudGVkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkuCisK
KyAgICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgor
ICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZCBXZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5n
UmVzcG9uc2U6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
VGV4dENoZWNraW5nUmVzcG9uc2U6OnNlcXVlbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4
dENoZWNraW5nUmVzcG9uc2U6OnJlc3VsdHMpOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jl
c3VsdDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6bG9j
YXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Omxlbmd0aCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4dENoZWNraW5n
UmVzdWx0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9X
ZWJWaWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnJlcXVlc3RU
ZXh0Q2hlY2spOgorICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOiBHYXZl
IGFuIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2ViS2l0Ojp0b0NvcmVSZXN1bHRzKTogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmRpZFJlc3BvbmRDaGVja2lu
Z09mU3RyaW5nKTogQWRlZC4KKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAg
ICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0
aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKTogQWRkZWQuCisg
ICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQuY3BwOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgY2xhc3MuCisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6bWlzc3BlbGxpbmdBdCk6IAorICAg
ICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OmJhZEdyYW1tYXJBdCk6CisgICAg
ICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6
OnJlc3BvbmRUZXh0Q2hlY2spOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEw
LTEyLTE0ICBNaWhhaSBQYXJwYXJpdGEgIDxtaWhhaXBAY2hyb21pdW0ub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IERpbWl0cmkgR2xhemtvdi4KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggYmQ4ZjRhNWM1
ZWI1MzFiMjAzMWI4NjFlMzQ3NTY4NGRhZmY0ZDc5NC4uNTFjNTFlYTdlYmJkOGY4NGY1MDE4NTlj
N2U1YzI4ZGVhZTI5MGNiYyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI3Miw2ICsyNzIsOCBAQAogICAg
ICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENh
c2VTZW5zaXRpdml0eS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDaGVja2lu
Z1Jlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVz
dWx0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVjdGlvbi5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAg
ICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApAQCAtNTQ2LDYgKzU0OCw3IEBACiAgICAgICAgICAg
ICAgICAgJ3NyYy9XZWJTdG9yYWdlTmFtZXNwYWNlSW1wbC5jcHAnLAogICAgICAgICAgICAgICAg
ICdzcmMvV2ViU3RvcmFnZU5hbWVzcGFjZUltcGwuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9X
ZWJTdHJpbmcuY3BwJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRDaGVja2luZ1Jlc3Vs
dC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dFJ1bi5jcHAnLAogICAgICAgICAg
ICAgICAgICdzcmMvV2ViVGhyZWFkU2FmZURhdGEuY3BwJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYlVSTC5jcHAnLApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0
aW5ncy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDA0Njdj
OTY2YWE1ZmRhMjNkZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZhN2MuLjU1ZGI0NzVhODJmZjYwYTdhYzZm
N2IyOGRmZDEwY2E1MzczYjI1ZGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgK
QEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJh
dGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5
SW5mb0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRp
dGluZ0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0
QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFhNzEy
M2IzOWI0ZWU1Y2RiNGViYjllZWMyYjM2NGZlY2E4YTVmN2MKLS0tIC9kZXYvbnVsbAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgKQEAgLTAsMCAr
MSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nUmVzcG9uc2VfaAorI2RlZmluZSBXZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZV9oCisKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIK
KworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlIHsK
K3B1YmxpYzoKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZShpbnQgc2VxdWVuY2UsIGNvbnN0
IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorICAgICAgICA6IG1f
c2VxdWVuY2Uoc2VxdWVuY2UpCisgICAgICAgICwgbV9yZXN1bHRzKHJlc3VsdHMpCisgICAgewor
ICAgIH0KKworICAgIGludCBzZXF1ZW5jZSgpIGNvbnN0IHsgcmV0dXJuIG1fc2VxdWVuY2U7IH0K
KyAgICBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cygpIGNv
bnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitwcml2YXRlOgorICAgIGludCBtX3NlcXVlbmNl
OworICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IG1fcmVzdWx0czsKK307CisK
K30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMxMzQ5NjJhMzQzNDNmYTIy
NWNkMGJkMWE1YjliYjg5NDMwMTQ4NjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlz
dHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwor
ICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVS
Q0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9o
CisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFt
ZXNwYWNlIFdlYktpdCB7CisKKy8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0IGNoZWNraW5nLgor
Y2xhc3MgV2ViVGV4dENoZWNraW5nUmVzdWx0IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgV2ViVGV4
dENoZWNraW5nUmVzdWx0IG1pc3NwZWxsaW5nQXQoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKTsK
KyAgICBzdGF0aWMgV2ViVGV4dENoZWNraW5nUmVzdWx0IGJhZEdyYW1tYXJBdChpbnQgbG9jYXRp
b24sIGludCBsZW5ndGgpOworCisgICAgLy8gVGhlIHR5cGUoKSB2YWx1ZSBpcyBvcGFxdWUgZnJv
bSB0aGUgY2xpZW50IGFuZCBzZXQgYnkgdGhlIGZhY3RvcnkgbWV0aG9kcyBhYm92ZS4KKyAgICBp
bnQgdHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGludCBsb2NhdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fbG9jYXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1
cm4gbV9sZW5ndGg7IH0KKworcHJvdGVjdGVkOgorICAgIFdlYlRleHRDaGVja2luZ1Jlc3VsdChp
bnQgdHlwZSwgaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKSAKKyAgICAgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAgICAgLCBtX2xvY2F0aW9uKGxvY2F0aW9uKQorICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBpbnQgbV90eXBlOworICAg
IGludCBtX2xvY2F0aW9uOworICAgIGludCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYTE4YTY0ZTUw
MTJhMzJhOTlkMjg1NTg2MThiNTE5ZDZkZWVlMDA5Ni4uMGE2NzRhOGU3NTg5MGU3ODVhZDZkMDYz
YmVjMjY0OWM3NDk4N2I5NCAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJW
aWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTQ4LDYgKzQ4
LDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJOb2RlOwogY2xhc3Mg
V2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZTsKIGNsYXNzIFdlYlZpZXdDbGllbnQ7CiBzdHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rpb247
CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC0zMTksNiArMzIwLDkgQEAgcHVibGljOgogICAgIC8vIHRo
ZWlyIGxpbmtzLgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVzZXRWaXNpdGVkTGlua1N0
YXRlKCk7CiAKKyAgICAvLyBTcGVsbCBjaGVja2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQgcmVz
cG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpID0gMDsKIAogICAg
IC8vIEN1c3RvbSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmlu
ZGV4IDAzM2UxMjA2MTY2OWM4YjFkOTlhM2E0NjQ2YTM1Y2Y0ZjcxM2FiNzIuLjIwMDA2MDRjMGU0
ZmVhNDAyN2U3NzdlZGQxZTQwMmI2YjY1MGZmMmQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCkBAIC0xNzMsNyArMTczLDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yLCB0
aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRMZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZvaWQg
c3BlbGxDaGVjaygKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxs
ZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExlbmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0cyBh
c3luY2hyb25vdXMgc3BlbGwgYW5kIGdyYW1tYXIgY2hlY2tpbmcuIFRoZSByZXN1bHQgc2hvdWxk
IGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdlYlZpZXc6OnJlc3BvbmRDaGVja2luZ09mU3RyaW5n
KCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0
IFdlYlN0cmluZyYpIHsgfQogICAgIC8vIENvbXB1dGVzIGFuIGF1dG8tY29ycmVjdGVkIHJlcGxh
Y2VtZW50IGZvciBhIG1pc3NwZWxsZWQgd29yZC4gIElmIG5vCiAgICAgLy8gcmVwbGFjZW1lbnQg
aXMgZm91bmQsIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwg
V2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmIG1pc3NwZWxsZWRXb3Jk
KSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50
SW1wbC5jcHAKaW5kZXggNmYxNzM5ZjIxNTljZWE0OGI5ODlhNjA0OGRiMjE1YzRhMjc2NTc2NC4u
NDdkNjNkNTNhNzcxMGI0YWY3MmIxODY0MGI2NDJjNTVjZDBlZWJlYSAxMDA2NDQKLS0tIGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAi
UGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNp
bmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKIAogI2lu
Y2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJFZGl0aW5nQWN0aW9u
LmgiCkBAIC04NzcsNiArODc4LDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVs
bGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlz
c3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRJbXBs
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IHNlcXVl
bmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAgQVNTRVJUKCFtX3JlcXVlc3RpbmdTcGVs
bENoZWNrZXIuY29udGFpbnMoc2VxdWVuY2UpKTsKKyAgICBtX3JlcXVlc3RpbmdTcGVsbENoZWNr
ZXIuc2V0KHNlcXVlbmNlLCBzZW5kZXIpOworICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVl
c3RUZXh0Q2hlY2soc2VxdWVuY2UsIHRleHQpOworfQorCitzdGF0aWMgVmVjdG9yPFNwZWxsQ2hl
Y2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2lu
Z1Jlc3VsdD4mIHJlc3VsdHMpCit7CisgICAgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNv
cmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsr
aSkKKyAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKFNwZWxsQ2hlY2tpbmdSZXN1bHQoc3RhdGlj
X2Nhc3Q8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KHJlc3VsdHNbaV0udHlwZSgpKSwgcmVz
dWx0c1tpXS5sb2NhdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0aCgpKSk7CisgICAgcmV0dXJuIGNv
cmVSZXN1bHRzOworfQorCit2b2lkIEVkaXRvckNsaWVudEltcGw6OmRpZFJlc3BvbmRDaGVja2lu
Z09mU3RyaW5nKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAg
ICBIYXNoTWFwPGludCwgU3BlbGxDaGVja2VyKj46Oml0ZXJhdG9yIGZvdW5kID0gbV9yZXF1ZXN0
aW5nU3BlbGxDaGVja2VyLmZpbmQocmVzcG9uc2Uuc2VxdWVuY2UoKSk7CisgICAgaWYgKG1fcmVx
dWVzdGluZ1NwZWxsQ2hlY2tlci5lbmQoKSA9PSBmb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAg
IGZvdW5kLT5zZWNvbmQtPmRpZENoZWNrKHJlc3BvbnNlLnNlcXVlbmNlKCksIHRvQ29yZVJlc3Vs
dHMocmVzcG9uc2UucmVzdWx0cygpKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnJl
bW92ZShmb3VuZCk7Cit9CisKIFN0cmluZyBFZGl0b3JDbGllbnRJbXBsOjpnZXRBdXRvQ29ycmVj
dFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3Jk
KQogewogICAgIGlmICghKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgbV93
ZWJWaWV3LT5jbGllbnQoKSkpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRv
ckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCmlu
ZGV4IDlkYmQ2YWZiMzcxZDY0MTJhMGFmMjBlOGRiN2I4NTE4Yzc4ODdlMGUuLmJiY2EzMmQzYzFl
N2I5YzdjZWVhZjljOTA5ZDA5ZWM0ZjhlOTA3NTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9y
Q2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNkZWZpbmUgRWRpdG9yQ2xpZW50SW1w
bF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tp
bmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3Mg
SFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKIH0KIAogbmFtZXNwYWNlIFdl
YktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZp
cnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBz
ZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RG
OjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhX
ZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdm9p
ZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0gYXV0b2ZpbGwgcG9wdXAgZm9yIHxub2RlfCBp
ZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFuZAogICAgIC8vIGl0IGlzIGVtcHR5LiAgVGhp
cyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhlIHVwIG9yIGRvd24gYXJyb3cgaW4gYQpAQCAt
MTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgYmFja3NwYWNlT3JEZWxldGVQ
cmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1dG9maWxsQXJncz4gbV9hdXRvZmlsbEFyZ3M7
CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6U3BlbGxDaGVja2VyKj4gbV9yZXF1ZXN0aW5n
U3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1MWI5ZTE3NDk5YTA1M2ExMDFi
NDMzZmEzZjE4Yzc4ZC4uMTFjZmI1OTBhYTJkOTg0OTU3NTBlMWVkOWIxNzk4MjZiMmRhNjFkMiAx
MDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMzI0LDYgKzMyNCwx
MSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQo
ZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25vdXNTcGVs
bENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0QXN5
bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAg
bV9zZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5Yjc5NTEzZjYyZWE2
NWNhOTBjMTIyZTcyLi4wYTY0NzNmYTBlMDFhMmJhOGVkZGQzYjczMGY3MzA5ZTFjYzI5ZDFkIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTk2LDYgKzk2LDcgQEAgcHVi
bGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29s
KTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKTsKKyAgICB2aXJ0dWFs
IHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogCiBwcml2YXRlOgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwIGIv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjJmMDgyNzhiMDgyOWUzOWQyMjBmMGJjMjI1Zjg3MTBhMTU5NGViNTgKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHAKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICogCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1l
dDoKKyAqIAorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICogCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAq
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCisKK3VzaW5nIG5hbWVz
cGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworV2ViVGV4dENoZWNraW5nUmVz
dWx0IFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6bWlzc3BlbGxpbmdBdChpbnQgbG9jYXRpb24sIGlu
dCBsZW5ndGgpCit7CisgICAgcmV0dXJuIFdlYlRleHRDaGVja2luZ1Jlc3VsdChzdGF0aWNfY2Fz
dDxpbnQ+KERvY3VtZW50TWFya2VyOjpTcGVsbGluZyksIGxvY2F0aW9uLCBsZW5ndGgpOworfQor
CitXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgV2ViVGV4dENoZWNraW5nUmVzdWx0OjpiYWRHcmFtbWFy
QXQoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoKQoreworICAgIHJldHVybiBXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQoc3RhdGljX2Nhc3Q8aW50PihEb2N1bWVudE1hcmtlcjo6R3JhbW1hciksIGxvY2F0
aW9uLCBsZW5ndGgpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKaW5kZXggYWMwNWRkMmI3OWIzNzljYjczZGMzNjAwMDI4NmI1MDA5ZmJl
OTAwMi4uMTM3Y2I4OGVmNjE1MjcwZjVjMzU1OTA3YjRhNmYzYzY2NmFiN2ViZSAxMDA2NDQKLS0t
IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5ODcsNiArMTk4NywxMSBAQCB2b2lkIFdlYlZp
ZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKQog
ICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsK
IH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hl
Y2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9lZGl0b3JDbGllbnRJbXBsLmRpZFJl
c3BvbmRDaGVja2luZ09mU3RyaW5nKHJlc3BvbnNlKTsKK30KKwogLy8gV2ViVmlldyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBib29sIFdlYlZpZXdJbXBsOjpzZXREcm9wRWZmZWN0KGJvb2wgYWNjZXB0KQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDZlOGRjYWNkNTg2MzgzOWQ2NmZiOTU5Nzg4ZTI4
Yjk5YzMzMmZiM2MuLmU2YTc2ODRkM2MxZDc0YmFhNTdhZWVmY2U2NzRkMDQyMjczYTRhYmYgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tn
cm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3Rv
bUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHJl
c3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmKTsKIAogICAgIC8v
IFdlYlZpZXdJbXBsCiAKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktp
dFRvb2xzL0NoYW5nZUxvZwppbmRleCA3NjFiYTllMGE5MDQ1YmY3OTFlNzFmNGU0MTVmYzdmYmZk
ZWQ4NDdjLi5jMzY3YzczYmMwMmFhMzRiYjFkZWEwYTIyZWE0MTUyMTM5OTczMzRkIDEwMDY0NAot
LS0gYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjEgQEAKKzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
W0Nocm9taXVtXSBTaG91bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTUxMDEzCisKKyAgICAgICAgR2F2ZSBEUlQgaW1wbGVtZW50YXRpb24gZm9yIHJlcXVl
c3RUZXh0Q2hlY2soKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEltcGxlbWVudGVkLgorICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgICogRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoaW52b2tlUmVz
cG9uZExhc3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0
VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzcG9uZExhc3RUZXh0
Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oOgorCiAyMDEwLTEyLTE0ICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBKaWFuIExpLgpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmlu
ZGV4IGUzYWY3MzgzMTNmZmE5OWJjZDFiZTA2YzEzMWU1YmYyNGRkMzBmOTEuLmU1NWVkNjZhYzdk
M2RkMzBiYWUyYjYwMDU5ZGY1YzNhMmQxOThkZDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9XZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAK
QEAgLTYyNCw5ICs2MjQsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWx3YXlz
QWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW4KICAgICByZXN1bHQt
PnNldE51bGwoKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFu
dCopCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCog
cmVzdWx0KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAoYXJndW1l
bnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICBtX3NoZWxs
LT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGNwcFZhcmlhbnRUb0Jvb2woYXJndW1lbnRzWzBdKSk7CisgICAgcmVzdWx0LT5zZXROdWxs
KCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoY29u
c3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaCBiL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKaW5kZXggZGNk
MzdmM2ViMDUzYjU0NzNjYzFiOTY0Mjg1ZGY4YjU3ZGVjZGRkZi4uNmY1YWRlMmU1N2VlNWM1NWM1
NzAxNzc1MjA1ZDE0MTQ4ZDQ1ZjU0ZiAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCkBAIC02Myw2ICs2Myw3IEBAIHB1Ymxp
YzoKICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZExlbmd0aCk7CiAKICAg
ICB2b2lkIGZpbGxTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwg
VmVjdG9yPFdlYktpdDo6V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMpOworICAgIAogcHJpdmF0ZToK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCByZXNvdXJjZXMgaWYgd2UgbmVlZCB0byBp
bml0aWFsaXplIGl0LgogICAgIC8vIEluaXRpYWxpemluZyB0aGlzIG9iamVjdCBtYXkgdGFrZSBs
b25nIHRpbWUuIFRvIHByZXZlbnQgZnJvbSBodXJ0aW5nCmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9XZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggZTNjOGMyODc0MmFk
NTI5MmU5ZGNmNjQ3N2E1MWYyYzdkZTFlZjY2Zi4uNmJmN2UyZTRkMTBlYjJmZTJjZWFjY2JiMDAy
OTFhMmFlMzFiZjZlOCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNTYsNiArNTYsNyBAQAogI2luY2x1ZGUgIldlYlNp
emUuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVk
ZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3Bv
bnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgpAQCAtNjQsNiArNjUsNyBAQAogI2luY2x1ZGUg
IndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpA
QCAtNDE3LDYgKzQxOSw0MCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzcGVsbENoZWNrKGNvbnN0IFdl
YlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmCiAjZW5kaWYKIH0KIAor
c3RhdGljIHZvaWQgaW52b2tlUmVzcG9uZExhc3RUZXh0Q2hlY2sodm9pZCogY29udGV4dCkKK3sK
KyAgICBXZWJWaWV3SG9zdCogd3ZoID0gc3RhdGljX2Nhc3Q8V2ViVmlld0hvc3QqPihjb250ZXh0
KTsKKyAgICB3dmgtPnJlc3BvbmRMYXN0VGV4dENoZWNrKCk7Cit9CisKK3ZvaWQgV2ViVmlld0hv
c3Q6OnJlcXVlc3RUZXh0Q2hlY2soaW50IHNlcXVlbmNlLCBjb25zdCBXZWJTdHJpbmcmIHRleHQp
Cit7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU2VxdWVuY2UgPSBzZXF1ZW5jZTsKKyAg
ICBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcgPSB0ZXh0OworICAgIHdlYmtpdF9zdXBw
b3J0OjpQb3N0RGVsYXllZFRhc2soaW52b2tlUmVzcG9uZExhc3RUZXh0Q2hlY2ssIHN0YXRpY19j
YXN0PHZvaWQqPih0aGlzKSwgMCk7Cit9CisKK3ZvaWQgV2ViVmlld0hvc3Q6OnJlc3BvbmRMYXN0
VGV4dENoZWNrKCkKK3sKKyAgICBWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRz
OworICAgIC8vIEZJWE1FOiBEbyB0aGUgZ3JhbW1hciBjaGVjay4KKyAgICBpbnQgb2Zmc2V0ID0g
MDsKKyAgICBTdHJpbmcgdGV4dChtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcuZGF0YSgp
LCBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcubGVuZ3RoKCkpOworICAgIHdoaWxlICh0
ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgIGludCBtaXNzcGVsbGVkTG9jYXRpb24gPSAwOworICAg
ICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7CisgICAgICAgIG1fc3BlbGxjaGVjay5zcGVs
bENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFyYWN0ZXJzKCksIHRleHQubGVuZ3RoKCkpLCAm
bWlzc3BlbGxlZExvY2F0aW9uLCAmbWlzc3BlbGxlZExlbmd0aCk7CisgICAgICAgIGlmICghbWlz
c3BlbGxlZExlbmd0aCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICByZXN1bHRzLmFwcGVu
ZChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Om1pc3NwZWxsaW5nQXQob2Zmc2V0ICsgbWlzc3BlbGxl
ZExvY2F0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSk7CisgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0
cmluZyhtaXNzcGVsbGVkTG9jYXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgb2Zm
c2V0ICs9IG1pc3NwZWxsZWRMb2NhdGlvbjsKKyAgICB9CisKKyAgICB3ZWJWaWV3KCktPnJlc3Bv
bmRUZXh0Q2hlY2soV2ViVGV4dENoZWNraW5nUmVzcG9uc2UobV9sYXN0UmVxdWVzdGVkVGV4dENo
ZWNrU2VxdWVuY2UsIHJlc3VsdHMpKTsKK30KKworCiBXZWJTdHJpbmcgV2ViVmlld0hvc3Q6OmF1
dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmKQogewogICAgIC8vIFJldHVybnMgYW4gZW1w
dHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdXZWJLaXRTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5t
bScpCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5oIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaAppbmRleCAyMGIyOWMwZDljYjYxMDllZjU1NWEwMDg0NzBiM2NlZDE1MDhlOTg4Li4zMGI4
NTA5NzBmMzYxMzJjN2QyMTRjODc0ZTQ1NTgzZjEyMWRlZjYxIDEwMDY0NAotLS0gYS9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEyNiw2ICsxMjYs
NyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1
YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0
aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBpbnQm
IG9mZnNldCwgaW50JiBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNr
KGludCBzZXF1ZW5jZSwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFdl
YktpdDo6V2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYp
OwogICAgIHZpcnR1YWwgdm9pZCBydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUq
LCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENv
bmZpcm1EaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7
CkBAIC0yMDgsNyArMjA5LDEwIEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6
V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVh
bCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW06OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxl
U3lzdGVtQ2FsbGJhY2tzKik7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xp
ZW50TW9jayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisgICAgCisgICAgLy8gU3Bl
bGxjaGVjayByZWxhdGVkIGhlbHBlciBBUElzCiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVs
bENoZWNrKCk7CisgICAgdm9pZCByZXNwb25kTGFzdFRleHRDaGVjaygpOwogCiAjaWYgRU5BQkxF
KENMSUVOVF9CQVNFRF9HRU9MT0NBVElPTikKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9j
a3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCkBAIC0zMjcsNiArMzMxLDkgQEAgcHJpdmF0ZToK
ICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVj
aElucHV0Q29udHJvbGxlck1vY2s7CiAKICAgICBPd25QdHI8VGVzdE5hdmlnYXRpb25Db250cm9s
bGVyKj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKKworICAgIFdlYktpdDo6V2ViU3RyaW5nIG1f
bGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKKyAgICBpbnQgbV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU2VxdWVuY2U7CiB9OwogCiAjZW5kaWYgLy8gV2ViVmlld0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76733</attachid>
            <date>2010-12-15 21:48:39 -0800</date>
            <delta_ts>2010-12-21 01:20:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20101216144837.patch</filename>
            <type>text/plain</type>
            <size>26400</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwMjM0NGJmYmJhNjJiNjgzN2UxYjQ0NTQwNTA5ODJiMDhkYTliNDUzLi43ZmNhYTY0
Y2Y0YjBkNWExNDZlYzk5NTE5ODI3YTg0NGYyNzFmNTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTItMTUgIEJyaWFu
IFdlaW5zdGVpbiAgPGJ3ZWluc3RlaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJlYmFzZWxpbmUg
V2luZG93cyBYUCByZXN1bHRzIGFmdGVyIHI3Mzk5My4gV2luZG93cyA3IHJlc3VsdHMgd2VyZSBs
YW5kZWQgaW4gcjczOTk4LCBidXQgc29tZSBYUApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDBkMzIxNjQzMGJhMWY1YTAx
MzY1OTYzOTYzZmQzMzEwODQ2NTQ0NjEuLjhhOWVhMmYzMWExYzk5ZTNlOGQwYWMwNjUwNjNlMDJj
MjdhNmYwMjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0
X2V4cGVjdGF0aW9ucy50eHQKQEAgLTI0ODEsMTAgKzI0ODEsNiBAQCBCVUdXSzQxMzExIFdJTiBM
SU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1BR0UKIEJV
R1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA4Lmh0
bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFk
aXVzRG91YmxlMDkuaHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVkaXRvckNs
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGggNjY2ODIK
LS8vIEJVR1dLNDE0MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBh
c3RlLmh0bWwgPSBURVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHQ1I0NDM0NSBMSU5VWCA6IHN2
Zy96b29tL3RleHQvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwogQlVHQ1I0
NDM0NiBMSU5VWCA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1B
R0UgUEFTUwpAQCAtMzIzNiw3ICszMjMyLDYgQEAgQlVHQ1I2NjQ2NiBNQUMgV0lOIERFQlVHIFNM
T1cgOiBwZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNjY1NTQg
V0lOIERFQlVHIDogZmFzdC9qcy9rZGUvZW5jb2RlX2RlY29kZV91cmkuaHRtbCA9IENSQVNIIFBB
U1MKIAogQlVHQ1I2NjY4MyBXSU4gTElOVVggOiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhdy1jYW52
YXMtb24tY2FudmFzLXNoYWRvdy5odG1sID0gVEVYVAotQlVHQ1I2NjY4MiBXSU4gTElOVVggTUFD
IDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQK
IEJVR0NSNjY2ODYgOiBmYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtZmFzdC1wYXRoLmh0bWwg
PSBURVhUCiAKIEJVR0NSNjY3NTEgOiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1s
b2FkLW9yZGVyLXByZWxvYWQuaHRtbCA9IFRFWFQgVElNRU9VVCBQQVNTCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCA5NWUzNzdhYmJlNzEwMGViOWU4YWYwYzJkZjJiMDliN2QxMGNkNjIzLi4yMmY4NzllNTIzZmRm
NmJlNWU2NzEzMjBhZDViODI0ODEyMGMyZGZhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBA
QAorMjAxMC0xMi0xNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNo
b3VsZCBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMK
KworICAgICAgICAtIEFkZGVkIFdlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0Q2hlY2soKSBhbmQg
cmVsYXRlZCBjbGFzc2VzLgorICAgICAgICAtIEFkZGVkIFdlYlZpZXc6OnJlc3BvbmRUZXh0Q2hl
Y2soKS4KKyAgICAgICAgLSBJbXBsZW1lbnRlZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZygpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9u
c2UuaDogQWRkZWQgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UgY2xhc3MuCisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpzZXF1ZW5jZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpyZXN1bHRzKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OnR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNr
aW5nUmVzdWx0OjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Q2xpZW50OjpyZXF1ZXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6ICAgICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKTogR2F2ZSBhbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6dG9Db3JlUmVz
dWx0cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpkaWRSZXNw
b25kQ2hlY2tpbmdPZlN0cmluZyk6IEFkZWQuCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6
IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViVGV4dENoZWNraW5nUmVzdWx0LmNwcDogQWRkZWQgV2ViVGV4dENoZWNraW5nUmVzdWx0IGNs
YXNzLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpyZXNwb25kVGV4dENoZWNrKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
aDoKKwogMjAxMC0xMi0xNSAgQ2hyaXMgR3VpbGxvcnkgIDxjaHJpcy5ndWlsbG9yeUBnb29nbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5k
ZXggYmQ4ZjRhNWM1ZWI1MzFiMjAzMWI4NjFlMzQ3NTY4NGRhZmY0ZDc5NC4uOGRiYWMwODZkMzdi
NmVjOTA5OGRjYmU3ZDQ0OTU0Y2UxNTFiMDRiMyAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKQEAgLTI3Miw2ICsy
NzIsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5nLmgnLAogICAgICAgICAg
ICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YlRleHRDaGVja2luZ1Jlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dENoZWNraW5nUmVzdWx0LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dERpcmVj
dGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUuaCcsCiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJTZXR0aW5ncy5oCmluZGV4IDA0NjdjOTY2YWE1ZmRhMjNkZGUzNDc4ZDA0ZDI5ZGFiMjcxNjZh
N2MuLjU1ZGI0NzVhODJmZjYwYTdhYzZmN2IyOGRmZDEwY2E1MzczYjI1ZGUgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEwMSw2ICsxMDEsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKIAogcHJv
dGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tp
bmdSZXNwb25zZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFhNzEyM2IzOWI0ZWU1Y2RiNGViYjllZWMyYjM2NGZlY2E4YTVm
N2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVj
a2luZ1Jlc3BvbnNlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisg
KiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisg
KiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nUmVz
cG9uc2VfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9oCisKKyNpbmNsdWRlICJX
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
YlRleHRDaGVja2luZ1Jlc3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZShpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+
JiByZXN1bHRzKQorICAgICAgICA6IG1fc2VxdWVuY2Uoc2VxdWVuY2UpCisgICAgICAgICwgbV9y
ZXN1bHRzKHJlc3VsdHMpCisgICAgeworICAgIH0KKworICAgIGludCBzZXF1ZW5jZSgpIGNvbnN0
IHsgcmV0dXJuIG1fc2VxdWVuY2U7IH0KKyAgICBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNr
aW5nUmVzdWx0PiYgcmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitwcml2
YXRlOgorICAgIGludCBtX3NlcXVlbmNlOworICAgIFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQ+IG1fcmVzdWx0czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjJlZTY5MmMwZjVlMzE2Mjk4MDBkMTc2M2M4MDMzYjEyNmNlNTdlMGYKLS0tIC9kZXYv
bnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5o
CkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Np
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICog
QSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRI
RSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisjZGVmaW5l
IFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNs
dWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEEgY2hlY2tlZCBl
bnRyeSBvZiB0ZXh0IGNoZWNraW5nLgorY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzdWx0IHsKK3B1
YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBNaXNzcGVsbGluZyA9IDEgPDwgMCwKKyAg
ICAgICAgQmFkR3JhbW1hciA9IDEgPDwgMQorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25z
dCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBpbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBt
X3Bvc2l0aW9uOyB9CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9
CisKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoVHlwZSB0eXBlLCBpbnQgcG9zaXRpb24sIGlu
dCBsZW5ndGgpIAorICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fcG9zaXRpb24o
cG9zaXRpb24pCisgICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisgICAg
Citwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOworICAgIGludCBtX3Bvc2l0aW9uOworICAgIGlu
dCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggYTE4YTY0ZTUwMTJhMzJhOTlkMjg1NTg2MThiNTE5ZDZk
ZWVlMDA5Ni4uMGE2NzRhOGU3NTg5MGU3ODVhZDZkMDYzYmVjMjY0OWM3NDk4N2I5NCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTQ4LDYgKzQ4LDcgQEAgY2xhc3MgV2ViR3JhcGhpY3ND
b250ZXh0M0Q7CiBjbGFzcyBXZWJOb2RlOwogY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJT
dHJpbmc7CitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdDbGll
bnQ7CiBzdHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC0z
MTksNiArMzIwLDkgQEAgcHVibGljOgogICAgIC8vIHRoZWlyIGxpbmtzLgogICAgIFdFQktJVF9B
UEkgc3RhdGljIHZvaWQgcmVzZXRWaXNpdGVkTGlua1N0YXRlKCk7CiAKKyAgICAvLyBTcGVsbCBj
aGVja2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZSYpID0gMDsKIAogICAgIC8vIEN1c3RvbSBjb2xvcnMgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCmluZGV4IDAzM2UxMjA2MTY2OWM4YjFkOTlh
M2E0NjQ2YTM1Y2Y0ZjcxM2FiNzIuLjFhMTk4OThjY2VmZmE2ZTRlZTdlYTgyZmYyMWQzYTA5Nzg4
MTg4YTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCkBAIC0xNzMsNyAr
MTczLDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yLCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxs
ZWRMZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjaygKICAgICAgICAgY29u
c3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxl
ZExlbmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0cyBhc3luY2hyb25vdXMgc3BlbGwgYW5kIGdy
YW1tYXIgY2hlY2tpbmcuIFRoZSByZXN1bHQgc2hvdWxkIGJlIHJldHVybmVkIGJ5IAorICAgIC8v
IFdlYlZpZXc6OnJlc3BvbmRUZXh0Q2hlY2soKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4
dENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgV2ViU3RyaW5nJikgeyB9CiAgICAgLy8gQ29tcHV0
ZXMgYW4gYXV0by1jb3JyZWN0ZWQgcmVwbGFjZW1lbnQgZm9yIGEgbWlzc3BlbGxlZCB3b3JkLiAg
SWYgbm8KICAgICAvLyByZXBsYWNlbWVudCBpcyBmb3VuZCwgdGhlbiBhbiBlbXB0eSBzdHJpbmcg
aXMgcmV0dXJuZWQuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0
IFdlYlN0cmluZyYgbWlzc3BlbGxlZFdvcmQpIHsgcmV0dXJuIFdlYlN0cmluZygpOyB9CmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvV2Vi
S2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAppbmRleCBjZWVlZDhkYmM1
ZmYyMjEyYTI5OWFmNDkzMjE0ZWE5ODlmN2U4NTlhLi5iY2JkOGZjZmM1MjAxYzNlMGJjMDQ2NzYy
MjIwYjE4MDQzMDlmN2FhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0
LmgiCiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBc3luY0Zp
bGVTeXN0ZW0uaCIKKyNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIkVkaXRv
ckluc2VydEFjdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVN
ZXRhZGF0YS5oIgpAQCAtNzQsNiArNzUsNyBAQAogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAj
aW5jbHVkZSAiV2ViVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViVGV4dENhc2VTZW5zaXRp
dml0eS5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldl
YlZpZGVvRnJhbWUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2Vy
dGlvbnMuaD4KQEAgLTM4OCw2ICszOTAsOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkZpbGVFcnJvclF1b3RhRXhjZWVkZWQsIEZpbGVFcnJvcjo6UVVPVEFfRVhDRUVERQogQ09N
UElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JUeXBlTWlzbWF0Y2gsIEZpbGVF
cnJvcjo6VFlQRV9NSVNNQVRDSF9FUlIpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJGaWxlRXJyb3JQYXRoRXhpc3RzLCBGaWxlRXJyb3I6OlBBVEhfRVhJU1RTX0VSUik7CiAKK0NP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpNaXNzcGVs
bGluZywgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpCYWRHcmFtbWFyLCBEb2N1bWVudE1hcmtlcjo6
R3JhbW1hcik7CisKICNpZiBFTkFCTEUoQ0xJRU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBlcm1pc3Np
b25EZW5pZWQsIEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5h
dmFpbGFibGUsIEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUpOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggNmYxNzM5ZjIxNTljZWE0OGI5
ODlhNjA0OGRiMjE1YzRhMjc2NTc2NC4uMjYzZWZlYWFhMDc0OTNhZTcyOTc1NmU0NWIwYTdhZjM4
M2UxYjczMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBs
LmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCkBAIC00
MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2ZW50LmgiCiAjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmplY3QuaCIKKyNpbmNsdWRl
ICJTcGVsbENoZWNrZXIuaCIKIAogI2luY2x1ZGUgIkRPTVV0aWxpdGllc1ByaXZhdGUuaCIKICNp
bmNsdWRlICJXZWJFZGl0aW5nQWN0aW9uLmgiCkBAIC04NzcsNiArODc4LDMwIEBAIHZvaWQgRWRp
dG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBp
bnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0K
IAordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENo
ZWNrZXIqIHNlbmRlciwgaW50IHNlcXVlbmNlLCBjb25zdCBTdHJpbmcmIHRleHQpCit7CisgICAg
QVNTRVJUKCFtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuY29udGFpbnMoc2VxdWVuY2UpKTsKKyAg
ICBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuc2V0KHNlcXVlbmNlLCBzZW5kZXIpOworICAgIG1f
d2ViVmlldy0+Y2xpZW50KCktPnJlcXVlc3RUZXh0Q2hlY2soc2VxdWVuY2UsIHRleHQpOworfQor
CitzdGF0aWMgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3Qg
V2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCit7CisgICAgVmVjdG9y
PFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRzOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAgICAgY29yZVJlc3VsdHMuYXBwZW5kKFNw
ZWxsQ2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8RG9jdW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+
KHJlc3VsdHNbaV0udHlwZSgpKSwgcmVzdWx0c1tpXS5wb3NpdGlvbigpLCByZXN1bHRzW2ldLmxl
bmd0aCgpKSk7CisgICAgcmV0dXJuIGNvcmVSZXN1bHRzOworfQorCit2b2lkIEVkaXRvckNsaWVu
dEltcGw6OmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jl
c3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBIYXNoTWFwPGludCwgU3BlbGxDaGVja2VyKj46Oml0
ZXJhdG9yIGZvdW5kID0gbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmZpbmQocmVzcG9uc2Uuc2Vx
dWVuY2UoKSk7CisgICAgaWYgKG1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5lbmQoKSA9PSBmb3Vu
ZCkKKyAgICAgICAgcmV0dXJuOworICAgIGZvdW5kLT5zZWNvbmQtPmRpZENoZWNrKHJlc3BvbnNl
LnNlcXVlbmNlKCksIHRvQ29yZVJlc3VsdHMocmVzcG9uc2UucmVzdWx0cygpKSk7CisgICAgbV9y
ZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnJlbW92ZShmb3VuZCk7Cit9CisKIFN0cmluZyBFZGl0b3JD
bGllbnRJbXBsOjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25z
dCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQogewogICAgIGlmICghKGlzQ29udGludW91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKCkgJiYgbV93ZWJWaWV3LT5jbGllbnQoKSkpCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IDlkYmQ2YWZiMzcxZDY0MTJhMGFmMjBlOGRiN2I4
NTE4Yzc4ODdlMGUuLmJiY2EzMmQzYzFlN2I5YzdjZWVhZjljOTA5ZDA5ZWM0ZjhlOTA3NTQgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQgQEAK
ICNkZWZpbmUgRWRpdG9yQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIK
KyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgi
CiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hl
Y2tlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVibGlj
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0
ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7
Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxs
Q2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCBy
ZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0
IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhjb25z
dCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0gYXV0
b2ZpbGwgcG9wdXAgZm9yIHxub2RlfCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFuZAog
ICAgIC8vIGl0IGlzIGVtcHR5LiAgVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhlIHVw
IG9yIGRvd24gYXJyb3cgaW4gYQpAQCAtMTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgICAg
IGJvb2wgYmFja3NwYWNlT3JEZWxldGVQcmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1dG9m
aWxsQXJncz4gbV9hdXRvZmlsbEFyZ3M7CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKj4gbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYw
NTYyYzA1MWI5ZTE3NDk5YTA1M2ExMDFiNDMzZmEzZjE4Yzc4ZC4uMTFjZmI1OTBhYTJkOTg0OTU3
NTBlMWVkOWIxNzk4MjZiMmRhNjFkMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcApAQCAtMzI0LDYgKzMyNCwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SHlw
ZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRI
eXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJ
bXBsOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7
CisgICAgbV9zZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5h
YmxlZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJs
ZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRj
OGQzOTMxNzAxNjQ5Yjc5NTEzZjYyZWE2NWNhOTBjMTIyZTcyLi4wYTY0NzNmYTBlMDFhMmJhOGVk
ZGQzYjczMGY3MzA5ZTFjYzI5ZDFkIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlNldHRpbmdzSW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmgKQEAgLTk2LDYgKzk2LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5m
b0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5h
YmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCBh
YzA1ZGQyYjc5YjM3OWNiNzNkYzM2MDAwMjg2YjUwMDlmYmU5MDAyLi4xMzdjYjg4ZWY2MTUyNzBm
NWMzNTU5MDdiNGE2ZjNjNjY2YWI3ZWJlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cApAQCAtMTk4Nyw2ICsxOTg3LDExIEBAIHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1DdXN0b21D
b250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pCiAgICAgbV9wYWdlLT5jb250ZXh0TWVu
dUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBs
OjpyZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlJiByZXNwb25z
ZSkKK3sKKyAgICBtX2VkaXRvckNsaWVudEltcGwuZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmco
cmVzcG9uc2UpOworfQorCiAvLyBXZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wgV2ViVmlld0lt
cGw6OnNldERyb3BFZmZlY3QoYm9vbCBhY2NlcHQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlZpZXdJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
aW5kZXggNmU4ZGNhY2Q1ODYzODM5ZDY2ZmI5NTk3ODhlMjhiOTljMzMyZmIzYy4uZTZhNzY4NGQz
YzFkNzRiYWE1N2FlZWZjZTY3NGQwNDIyNzNhNGFiZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJWaWV3SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuaApAQCAtMTk2LDYgKzE5Niw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29s
b3IpOwogICAgIHZpcnR1YWwgdm9pZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5z
aWduZWQgYWN0aW9uKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVzcG9uZFRleHRDaGVjayhjb25zdCBX
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpOwogCiAgICAgLy8gV2ViVmlld0ltcGwKIApkaWZmIC0t
Z2l0IGEvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCmluZGV4
IGNlMmM3ODc5Njk3ZTU2MzNmNDE0OTE2OGQ0ZTdjNzAzM2FiZmNmZGIuLmQzMDM5YmI2NmVlMjA5
MTE4ZGFiNjIzMDFiZTg4N2RiZmVkMDIyYjQgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0NoYW5n
ZUxvZworKysgYi9XZWJLaXRUb29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0x
Mi0xNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNob3VsZCBpbXBs
ZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMKKworICAgICAg
ICBHYXZlIERSVCBpbXBsZW1lbnRhdGlvbiBmb3IgcmVxdWVzdFRleHRDaGVjaygpLgorCisgICAg
ICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tp
bmdFbmFibGVkKTogSW1wbGVtZW50ZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1NwZWxsQ2hlY2suaDoKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChpbnZva2VSZXNwb25kTGFzdFRleHRDaGVjayk6IEFk
ZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlcXVlc3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAg
ICAgICAgKFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjayk6IEFkZGVkLgorICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmg6CisKIDIwMTAtMTItMTUg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI3NDEzNi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1dlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRl
eCBlM2FmNzM4MzEzZmZhOTliY2QxYmUwNmMxMzFlNWJmMjRkZDMwZjkxLi5lNTVlZDY2YWM3ZDNk
ZDMwYmFlMmI2MDA1OWRmNWMzYTJkMTk4ZGQ4IDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC02MjQsOSArNjI0LDExIEBAIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0Fj
Y2VwdENvb2tpZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5z
ZXROdWxsKCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91
c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
KQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJl
c3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50
cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+
d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgp
OwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1dlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmggYi9XZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCmluZGV4IGRjZDM3
ZjNlYjA1M2I1NDczY2MxYjk2NDI4NWRmOGI1N2RlY2RkZGYuLjZmNWFkZTJlNTdlZTVjNTVjNTcw
MTc3NTIwNWQxNDE0OGQ0NWY1NGYgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKKysrIGIvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAg
dm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFZl
Y3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAKIHByaXZhdGU6CiAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8gaW5p
dGlhbGl6ZSBpdC4KICAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2UgbG9u
ZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGUzYzhjMjg3NDJhZDUy
OTJlOWRjZjY0NzdhNTFmMmM3ZGUxZWY2NmYuLjk4NTdjYmMyNjU5NTUyYmJiMTgzMGMyMTQ1YmFm
YTllYmZhMDE5ZjkgMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL1dlYlZpZXdIb3N0LmNwcAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJTaXpl
LmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUg
IldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25z
ZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTY0LDYgKzY1LDcgQEAKICNpbmNsdWRlICJ3
ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAg
LTQxNyw2ICs0MTksNDAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJT
dHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50JgogI2VuZGlmCiB9CiAKK3N0
YXRpYyB2b2lkIGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrKHZvaWQqIGNvbnRleHQpCit7Cisg
ICAgV2ViVmlld0hvc3QqIHd2aCA9IHN0YXRpY19jYXN0PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7
CisgICAgd3ZoLT5yZXNwb25kTGFzdFRleHRDaGVjaygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0
OjpyZXF1ZXN0VGV4dENoZWNrKGludCBzZXF1ZW5jZSwgY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQor
eworICAgIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1NlcXVlbmNlID0gc2VxdWVuY2U7CisgICAg
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRfc3VwcG9y
dDo6UG9zdERlbGF5ZWRUYXNrKGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2Fz
dDx2b2lkKj4odGhpcyksIDApOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRl
eHRDaGVjaygpCit7CisgICAgVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsK
KyAgICAvLyBGSVhNRTogRG8gdGhlIGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7
CisgICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwg
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4
dC5sZW5ndGgoKSkgeworICAgICAgICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKKyAgICAg
ICAgaW50IG1pc3NwZWxsZWRMZW5ndGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxD
aGVja1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1p
c3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3Nw
ZWxsZWRMZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQo
V2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcs
IG9mZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpOworICAgICAg
ICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExl
bmd0aCk7CisgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb247CisgICAgfQorCisg
ICAgd2ViVmlldygpLT5yZXNwb25kVGV4dENoZWNrKFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKG1f
bGFzdFJlcXVlc3RlZFRleHRDaGVja1NlcXVlbmNlLCByZXN1bHRzKSk7Cit9CisKKwogV2ViU3Ry
aW5nIFdlYlZpZXdIb3N0OjphdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJikKIHsKICAg
ICAvLyBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBhcyBNYWMgV2ViS2l0ICgnV2ViS2l0U3VwcG9y
dC9XZWJFZGl0b3JDbGllbnQubW0nKQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1dlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggMjBiMjljMGQ5Y2I2MTA5ZWY1NTVhMDA4NDcw
YjNjZWQxNTA4ZTk4OC4uMzBiODUwOTcwZjM2MTMyYzdkMjE0Yzg3NGU0NTU4M2YxMjFkZWY2MSAx
MDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaAorKysgYi9XZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9z
dC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0
OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0
dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDdXJyZW50
S2V5Ym9hcmRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENoZWNrKGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJiwgaW50JiBvZmZzZXQsIGludCYgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5n
Jik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBhdXRvQ29ycmVjdFdvcmQoY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9kYWxBbGVydERpYWxv
ZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0
dWFsIGJvb2wgcnVuTW9kYWxDb25maXJtRGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBX
ZWJLaXQ6OldlYlN0cmluZyYpOwpAQCAtMjA4LDcgKzIwOSwxMCBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJLaXQ6OldlYkZyYW1l
KiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogCiAgICAgV2ViS2l0OjpXZWJE
ZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygp
OworICAgIAorICAgIC8vIFNwZWxsY2hlY2sgcmVsYXRlZCBoZWxwZXIgQVBJcwogICAgIE1vY2tT
cGVsbENoZWNrKiBtb2NrU3BlbGxDaGVjaygpOworICAgIHZvaWQgcmVzcG9uZExhc3RUZXh0Q2hl
Y2soKTsKIAogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiAgICAgLy8gR2Vv
bG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgpAQCAtMzI3LDYg
KzMzMSw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250
cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAgICAgT3duUHRyPFRl
c3ROYXZpZ2F0aW9uQ29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xsZXI7CisKKyAgICBX
ZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmc7CisgICAgaW50
IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1NlcXVlbmNlOwogfTsKIAogI2VuZGlmIC8vIFdlYlZp
ZXdIb3N0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77094</attachid>
            <date>2010-12-21 01:20:41 -0800</date>
            <delta_ts>2011-01-04 21:19:35 -0800</delta_ts>
            <desc>update to ToT</desc>
            <filename>bug-51013-20101221182039.patch</filename>
            <type>text/plain</type>
            <size>26184</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0ZTBjOGI2MDE4MTcxNGU1MTc5MGNmYmFhZDBjNzE2ZjRlODhlNjJiLi4xM2IzY2Y5
NTNiNDlmZmI0MWU2Y2NhODlkNjdkY2U1NDNjZjFiZTk1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTAtMTItMjAgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IE9saXZlciBIdW50LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0v
dGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IGU0MjQ4MzBiODcwOTY1NDU4NDAxZjcxMDBiODM1
OWE1Y2FhZWJiOTIuLjczZGY1OTI4ZDRlNGZjZmE1NzI5MTdjNmI0MmRjNzU3NTBiZTE3YmYgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9u
cy50eHQKQEAgLTI0ODEsMTAgKzI0ODEsNiBAQCBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZhc3Qv
Ym9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1BR0UKIEJVR1dLNDEzMTEgV0lO
IExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA4Lmh0bWwgPSBJTUFHRQog
QlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDku
aHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVkaXRvckNsaWVudDo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGggNjY2ODIKLS8vIEJVR1dLNDE0
MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBU
RVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHQ1I0NDM0NSBMSU5VWCA6IHN2Zy96b29tL3RleHQv
em9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwogQlVHQ1I0NDM0NiBMSU5VWCA6
IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwpAQCAt
MzIyNiw3ICszMjIyLDYgQEAgQlVHQ1I2NjQ2NiBNQUMgV0lOIERFQlVHIFNMT1cgOiBwZXJmL2Fy
cmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNjY1NTQgV0lOIERFQlVHIDog
ZmFzdC9qcy9rZGUvZW5jb2RlX2RlY29kZV91cmkuaHRtbCA9IENSQVNIIFBBU1MKIAogQlVHQ1I2
NjY4MyBXSU4gTElOVVggOiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhdy1jYW52YXMtb24tY2FudmFz
LXNoYWRvdy5odG1sID0gVEVYVAotQlVHQ1I2NjY4MiBXSU4gTElOVVggTUFDIDogZWRpdGluZy9z
cGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQKIEJVR0NSNjY2ODYg
OiBmYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtZmFzdC1wYXRoLmh0bWwgPSBURVhUCiAKIEJV
R0NSNjY3NTEgOiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2FkLW9yZGVyLXBy
ZWxvYWQuaHRtbCA9IFRFWFQgVElNRU9VVCBQQVNTCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmYzYjg0M2YwMWY5NmUwYmRjODI3MjA2NDNhNjI5
MTUxYjZmMmQ4Zi4uNjA3N2E2YTZiYTgzYzAxN2E0MDlmN2I2Y2VjYWU1OGM5ZDdjNjgwOSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDEwLTEyLTE0ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1
bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTAxMworCisgICAgICAgIEdhdmUgRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1ZXN0VGV4dENo
ZWNrKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJlc3BvbmRMYXN0
VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVxdWVzdFRleHRDaGVj
ayk6IEFkZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc3BvbmRMYXN0VGV4dENoZWNrKTog
QWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoK
KwogMjAxMC0xMi0yMCAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCBlM2FmNzM4MzEzZmZhOTli
Y2QxYmUwNmMxMzFlNWJmMjRkZDMwZjkxLi5lNTVlZDY2YWM3ZDNkZDMwYmFlMmI2MDA1OWRmNWMz
YTJkMTk4ZGQ4IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjQsOSArNjI0LDExIEBAIHZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENw
cEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5p
c0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1sw
XSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9s
bGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQq
IHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tT
cGVsbENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVj
ay5oCmluZGV4IGRjZDM3ZjNlYjA1M2I1NDczY2MxYjk2NDI4NWRmOGI1N2RlY2RkZGYuLjZmNWFk
ZTJlNTdlZTVjNTVjNTcwMTc3NTIwNWQxNDE0OGQ0NWY1NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCiAg
ICAgdm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQs
IFZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAKIHByaXZhdGU6
CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8g
aW5pdGlhbGl6ZSBpdC4KICAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2Ug
bG9uZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGUzYzhjMjg3NDJhZDUyOTJlOWRjZjY0
NzdhNTFmMmM3ZGUxZWY2NmYuLjk4NTdjYmMyNjU5NTUyYmJiMTgzMGMyMTQ1YmFmYTllYmZhMDE5
ZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAK
QEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiV2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2Uu
aCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlVS
TFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZp
ZXcuaCIKQEAgLTY0LDYgKzY1LDcgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRf
c3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBX
ZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxNyw2ICs0MTksNDAgQEAgdm9p
ZCBXZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlz
c3BlbGxlZE9mZnNldCwgaW50JgogI2VuZGlmCiB9CiAKK3N0YXRpYyB2b2lkIGludm9rZVJlc3Bv
bmRMYXN0VGV4dENoZWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViVmlld0hvc3QqIHd2aCA9
IHN0YXRpY19jYXN0PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7CisgICAgd3ZoLT5yZXNwb25kTGFz
dFRleHRDaGVjaygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENoZWNrKGlu
dCBzZXF1ZW5jZSwgY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQoreworICAgIG1fbGFzdFJlcXVlc3Rl
ZFRleHRDaGVja1NlcXVlbmNlID0gc2VxdWVuY2U7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENo
ZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNrKGlu
dm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDApOwor
fQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjaygpCit7CisgICAgVmVj
dG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAvLyBGSVhNRTogRG8gdGhl
IGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7CisgICAgU3RyaW5nIHRleHQobV9s
YXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENo
ZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4dC5sZW5ndGgoKSkgeworICAgICAg
ICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRMZW5n
dGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRl
eHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1p
c3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoV2ViVGV4dENoZWNraW5nUmVzdWx0
KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcsIG9mZnNldCArIG1pc3NwZWxsZWRQ
b3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpOworICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJp
bmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CisgICAgICAgIG9mZnNl
dCArPSBtaXNzcGVsbGVkUG9zaXRpb247CisgICAgfQorCisgICAgd2ViVmlldygpLT5yZXNwb25k
VGV4dENoZWNrKFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKG1fbGFzdFJlcXVlc3RlZFRleHRDaGVj
a1NlcXVlbmNlLCByZXN1bHRzKSk7Cit9CisKKwogV2ViU3RyaW5nIFdlYlZpZXdIb3N0OjphdXRv
Q29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJikKIHsKICAgICAvLyBSZXR1cm5zIGFuIGVtcHR5
IHN0cmluZyBhcyBNYWMgV2ViS2l0ICgnV2ViS2l0U3VwcG9ydC9XZWJFZGl0b3JDbGllbnQubW0n
KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3Qu
aCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggMjBi
MjljMGQ5Y2I2MTA5ZWY1NTVhMDA4NDcwYjNjZWQxNTA4ZTk4OC4uMzBiODUwOTcwZjM2MTMyYzdk
MjE0Yzg3NGU0NTU4M2YxMjFkZWY2MSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9XZWJWaWV3SG9zdC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBw
dWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVu
dCwKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogICAgIHZpcnR1YWwgYm9vbCBo
YW5kbGVDdXJyZW50S2V5Ym9hcmRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENoZWNr
KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50JiBvZmZzZXQsIGludCYgbGVuZ3RoKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYktp
dDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBXZWJLaXQ6OldlYlN0cmluZyBhdXRvQ29ycmVj
dFdvcmQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgcnVuTW9k
YWxBbGVydERpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcm
KTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxDb25maXJtRGlhbG9nKFdlYktpdDo6V2ViRnJh
bWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwpAQCAtMjA4LDcgKzIwOSwxMCBAQCBjbGFz
cyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJL
aXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJL
aXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6
ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogCiAgICAg
V2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sqIGRldmljZU9yaWVudGF0aW9u
Q2xpZW50TW9jaygpOworICAgIAorICAgIC8vIFNwZWxsY2hlY2sgcmVsYXRlZCBoZWxwZXIgQVBJ
cwogICAgIE1vY2tTcGVsbENoZWNrKiBtb2NrU3BlbGxDaGVjaygpOworICAgIHZvaWQgcmVzcG9u
ZExhc3RUZXh0Q2hlY2soKTsKIAogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04p
CiAgICAgLy8gR2VvbG9jYXRpb24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxl
cgpAQCAtMzI3LDYgKzMzMSw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAg
ICAgT3duUHRyPFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xs
ZXI7CisKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmc7CisgICAgaW50IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1NlcXVlbmNlOwogfTsKIAogI2Vu
ZGlmIC8vIFdlYlZpZXdIb3N0X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VM
b2cgYi9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVjOTdjYmYwZWEzMTIzMWU2YzRh
ODhkZmMwOTllMjk1YzQ0ZWQ0YTEuLjRlMzg3YWM0ZTcyODI0NDU1Y2RjMTA2M2Y0Nzg3OTA0ZWUz
NzRkZWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDEwLTEyLTE0ICBNT1JJVEEg
SGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JD
bGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIC0gQWRkZWQgV2Vi
Vmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisgICAg
ICAgIC0gQWRkZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAgICAtIEltcGxl
bWVudGVkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkuCisKKyAg
ICAgICAgKiBXZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAg
ICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZCBXZWJUZXh0Q2hl
Y2tpbmdSZXNwb25zZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVz
cG9uc2U6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4
dENoZWNraW5nUmVzcG9uc2U6OnNlcXVlbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENo
ZWNraW5nUmVzcG9uc2U6OnJlc3VsdHMpOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tp
bmdSZXN1bHQuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3Vs
dDo6dHlwZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6cG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Omxlbmd0aCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4dENoZWNraW5nUmVz
dWx0KToKKyAgICAgICAgKiBwdWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJW
aWV3Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0
Q2hlY2spOgorICAgICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogICAgICAgIAor
ICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRp
dG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcpOiBHYXZlIGFuIGltcGxlbWVu
dGF0aW9uLgorICAgICAgICAoV2ViS2l0Ojp0b0NvcmVSZXN1bHRzKTogQWRkZWQuCisgICAgICAg
IChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKTog
QWRlZC4KKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogc3Jj
L1dlYlNldHRpbmdzSW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQu
Y3BwOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgY2xhc3MuCisgICAgICAgICogc3JjL1dl
YlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc3BvbmRUZXh0
Q2hlY2spOgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDEwLTEyLTIwICBBbmRy
ZWkgUG9wZXNjdSAgPGFuZHJlaXBAZ29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBK
ZXJlbXkgT3Jsb3cuCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dl
YktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmluZGV4IDM2MTJhMDgyYWQ0NTNhMzc1MmRmYWNkY2Vi
NmMxM2Y0MDAwMGM1ZjUuLjFlNmQ3NjUxZjQxYjNhN2IzMmQ2ZjMzOTE3NWUwNjVlODg4ZDQyOTEg
MTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9XZWJLaXQuZ3lwCkBAIC0yNzIsNiArMjcyLDggQEAKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlN0cmluZy5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0
eS5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcs
CisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oJywKKyAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHREaXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dFJ1bi5oJywKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3Mu
aCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCAwNDY3Yzk2NmFh
NWZkYTIzZGRlMzQ3OGQwNGQyOWRhYjI3MTY2YTdjLi41NWRiNDc1YTgyZmY2MGE3YWM2ZjdiMjhk
ZmQxMGNhNTM3M2IyNWRlIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNl
dHRpbmdzLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0x
MDEsNiArMTAxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJk
Q2FudmFzRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9F
bmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dz
aW5nRW5hYmxlZChib29sKSA9IDA7CiAKIHByb3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hYTcxMjNiMzli
NGVlNWNkYjRlYmI5ZWVjMmIzNjRmZWNhOGE1ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oCkBAIC0wLDAgKzEsNTYg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlX2gKKyNkZWZpbmUgV2ViVGV4dENoZWNr
aW5nUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCisKK25h
bWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSB7CitwdWJs
aWM6CisgICAgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UoaW50IHNlcXVlbmNlLCBjb25zdCBXZWJW
ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKKyAgICAgICAgOiBtX3NlcXVl
bmNlKHNlcXVlbmNlKQorICAgICAgICAsIG1fcmVzdWx0cyhyZXN1bHRzKQorICAgIHsKKyAgICB9
CisKKyAgICBpbnQgc2VxdWVuY2UoKSBjb25zdCB7IHJldHVybiBtX3NlcXVlbmNlOyB9CisgICAg
Y29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMoKSBjb25zdCB7
IHJldHVybiBtX3Jlc3VsdHM7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9zZXF1ZW5jZTsKKyAg
ICBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiBtX3Jlc3VsdHM7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWU2OTJjMGY1ZTMxNjI5ODAwZDE3
NjNjODAzM2IxMjZjZTU3ZTBmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1
dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHBy
b21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHRfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAorCisj
aW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBBIGNoZWNrZWQgZW50cnkgb2YgdGV4dCBjaGVja2luZy4KK2NsYXNz
IFdlYlRleHRDaGVja2luZ1Jlc3VsdCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAg
ICAgTWlzc3BlbGxpbmcgPSAxIDw8IDAsCisgICAgICAgIEJhZEdyYW1tYXIgPSAxIDw8IDEKKyAg
ICB9OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgaW50
IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIGludCBsZW5ndGgo
KSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgV2ViVGV4dENoZWNraW5nUmVzdWx0
KFR5cGUgdHlwZSwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKSAKKyAgICAgICAgOiBtX3R5cGUo
dHlwZSkKKyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fbGVuZ3Ro
KGxlbmd0aCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsK
KyAgICBpbnQgbV9wb3NpdGlvbjsKKyAgICBpbnQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IGExOGE2
NGU1MDEyYTMyYTk5ZDI4NTU4NjE4YjUxOWQ2ZGVlZTAwOTYuLjBhNjc0YThlNzU4OTBlNzg1YWQ2
ZDA2M2JlYzI2NDljNzQ5ODdiOTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC00OCw2
ICs0OCw3IEBAIGNsYXNzIFdlYkdyYXBoaWNzQ29udGV4dDNEOwogY2xhc3MgV2ViTm9kZTsKIGNs
YXNzIFdlYlNldHRpbmdzOwogY2xhc3MgV2ViU3RyaW5nOworY2xhc3MgV2ViVGV4dENoZWNraW5n
UmVzcG9uc2U7CiBjbGFzcyBXZWJWaWV3Q2xpZW50Owogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0
aW9uOwogc3RydWN0IFdlYlBvaW50OwpAQCAtMzE5LDYgKzMyMCw5IEBAIHB1YmxpYzoKICAgICAv
LyB0aGVpciBsaW5rcy4KICAgICBXRUJLSVRfQVBJIHN0YXRpYyB2b2lkIHJlc2V0VmlzaXRlZExp
bmtTdGF0ZSgpOwogCisgICAgLy8gU3BlbGwgY2hlY2tpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lk
IHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmKSA9IDA7CiAK
ICAgICAvLyBDdXN0b20gY29sb3JzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAppbmRleCAwMzNlMTIwNjE2NjljOGIxZDk5YTNhNDY0NmEzNWNmNGY3MTNhYjcyLi4xYTE5ODk4
Y2NlZmZhNmU0ZWU3ZWE4MmZmMjFkM2EwOTc4ODE4OGE4IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXdDbGllbnQuaApAQCAtMTczLDcgKzE3Myw5IEBAIHB1YmxpYzoKICAgICAvLyBlcnJv
ciwgdGhlbiB1cG9uIHJldHVybiBtaXNzcGVsbGVkTGVuZ3RoIGlzIDAuCiAgICAgdmlydHVhbCB2
b2lkIHNwZWxsQ2hlY2soCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNz
cGVsbGVkT2Zmc2V0LCBpbnQmIG1pc3NwZWxsZWRMZW5ndGgpIHsgfQotCisgICAgLy8gUmVxdWVz
dHMgYXN5bmNocm9ub3VzIHNwZWxsIGFuZCBncmFtbWFyIGNoZWNraW5nLiBUaGUgcmVzdWx0IHNo
b3VsZCBiZSByZXR1cm5lZCBieSAKKyAgICAvLyBXZWJWaWV3OjpyZXNwb25kVGV4dENoZWNrKCkK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdl
YlN0cmluZyYpIHsgfQogICAgIC8vIENvbXB1dGVzIGFuIGF1dG8tY29ycmVjdGVkIHJlcGxhY2Vt
ZW50IGZvciBhIG1pc3NwZWxsZWQgd29yZC4gIElmIG5vCiAgICAgLy8gcmVwbGFjZW1lbnQgaXMg
Zm91bmQsIHRoZW4gYW4gZW1wdHkgc3RyaW5nIGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwgV2Vi
U3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSB7
IHJldHVybiBXZWJTdHJpbmcoKTsgfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9B
c3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHAKaW5kZXggYmE5YjRlN2U0OTMxOWRlZTZjN2Y3NTE2MWZiYWVlOTU4NGUwYTgz
Mi4uYTI5Yzc4Y2I3NTIxYzJmNDdmMDg4MWMxMDgwZTIwNDA3YjJkMDgyNCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAj
aW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2Fj
aGVIb3N0LmgiCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRG9jdW1l
bnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIKICNpbmNsdWRlICJG
aWxlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKQEAgLTc0LDYgKzc1LDcgQEAK
ICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgog
I2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSAiV2Vi
Vmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zODksNiArMzkxLDkgQEAg
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JRdW90YUV4Y2VlZGVkLCBG
aWxlRXJyb3I6OlFVT1RBX0VYQ0VFREUKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2Vi
RmlsZUVycm9yVHlwZU1pc21hdGNoLCBGaWxlRXJyb3I6OlRZUEVfTUlTTUFUQ0hfRVJSKTsKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZUVycm9yUGF0aEV4aXN0cywgRmlsZUVy
cm9yOjpQQVRIX0VYSVNUU19FUlIpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcsIERvY3VtZW50TWFya2VyOjpTcGVsbGlu
Zyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6
QmFkR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworCiAjaWYgRU5BQkxFKENMSUVO
VF9CQVNFRF9HRU9MT0NBVElPTikKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2Vv
bG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVkLCBHZW9sb2NhdGlvbkVycm9yOjpQ
ZXJtaXNzaW9uRGVuaWVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9j
YXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlLCBHZW9sb2NhdGlvbkVycm9yOjpQ
b3NpdGlvblVuYXZhaWxhYmxlKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwu
Y3BwCmluZGV4IDZmMTczOWYyMTU5Y2VhNDhiOTg5YTYwNDhkYjIxNWM0YTI3NjU3NjQuLjI2M2Vm
ZWFhYTA3NDkzYWU3Mjk3NTZlNDViMGE3YWYzODNlMWI3MzIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAKICNpbmNsdWRl
ICJET01VdGlsaXRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViRWRpdGluZ0FjdGlvbi5oIgpA
QCAtODc3LDYgKzg3OCwzMCBAQCB2b2lkIEVkaXRvckNsaWVudEltcGw6OmNoZWNrU3BlbGxpbmdP
ZlN0cmluZyhjb25zdCBVQ2hhciogdGV4dCwgaW50IGxlbmd0aCwKICAgICAgICAgKm1pc3NwZWxs
aW5nTGVuZ3RoID0gc3BlbGxMZW5ndGg7CiB9CiAKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcoU3BlbGxDaGVja2VyKiBzZW5kZXIsIGludCBzZXF1ZW5jZSwg
Y29uc3QgU3RyaW5nJiB0ZXh0KQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0aW5nU3BlbGxDaGVj
a2VyLmNvbnRhaW5zKHNlcXVlbmNlKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnNl
dChzZXF1ZW5jZSwgc2VuZGVyKTsKKyAgICBtX3dlYlZpZXctPmNsaWVudCgpLT5yZXF1ZXN0VGV4
dENoZWNrKHNlcXVlbmNlLCB0ZXh0KTsKK30KKworc3RhdGljIFZlY3RvcjxTcGVsbENoZWNraW5n
UmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiBjb3JlUmVz
dWx0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZChTcGVsbENoZWNraW5nUmVzdWx0KHN0YXRpY19jYXN0
PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPihyZXN1bHRzW2ldLnR5cGUoKSksIHJlc3VsdHNb
aV0ucG9zaXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSkpOworICAgIHJldHVybiBjb3JlUmVz
dWx0czsKK30KKwordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRSZXNwb25kQ2hlY2tpbmdPZlN0
cmluZyhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgSGFz
aE1hcDxpbnQsIFNwZWxsQ2hlY2tlcio+OjppdGVyYXRvciBmb3VuZCA9IG1fcmVxdWVzdGluZ1Nw
ZWxsQ2hlY2tlci5maW5kKHJlc3BvbnNlLnNlcXVlbmNlKCkpOworICAgIGlmIChtX3JlcXVlc3Rp
bmdTcGVsbENoZWNrZXIuZW5kKCkgPT0gZm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3Vu
ZC0+c2Vjb25kLT5kaWRDaGVjayhyZXNwb25zZS5zZXF1ZW5jZSgpLCB0b0NvcmVSZXN1bHRzKHJl
c3BvbnNlLnJlc3VsdHMoKSkpOworICAgIG1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5yZW1vdmUo
Zm91bmQpOworfQorCiBTdHJpbmcgRWRpdG9yQ2xpZW50SW1wbDo6Z2V0QXV0b0NvcnJlY3RTdWdn
ZXN0aW9uRm9yTWlzc3BlbGxlZFdvcmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKIHsK
ICAgICBpZiAoIShpc0NvbnRpbnVvdXNTcGVsbENoZWNraW5nRW5hYmxlZCgpICYmIG1fd2ViVmll
dy0+Y2xpZW50KCkpKQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGll
bnRJbXBsLmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCA5
ZGJkNmFmYjM3MWQ2NDEyYTBhZjIwZThkYjdiODUxOGM3ODg3ZTBlLi5iYmNhMzJkM2MxZTdiOWM3
Y2VlYWY5YzkwOWQwOWVjNGY4ZTkwNzU0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuaApAQCAtMzIsMTEgKzMyLDE0IEBACiAjZGVmaW5lIEVkaXRvckNsaWVudEltcGxfaAog
CiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVz
cG9uc2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgPHd0Zi9EZXF1ZS5oPgorI2lu
Y2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUTUxJ
bnB1dEVsZW1lbnQ7CitjbGFzcyBTcGVsbENoZWNrZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewpAQCAtMTExLDcgKzExNCw4IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFs
IHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5w
dXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3Ry
aW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29y
ZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHZvaWQgZGlk
UmVzcG9uZENoZWNraW5nT2ZTdHJpbmcoY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmKTsK
IAogICAgIC8vIFNob3dzIHRoZSBmb3JtIGF1dG9maWxsIHBvcHVwIGZvciB8bm9kZXwgaWYgaXQg
aXMgYW4gSFRNTElucHV0RWxlbWVudCBhbmQKICAgICAvLyBpdCBpcyBlbXB0eS4gIFRoaXMgaXMg
Y2FsbGVkIHdoZW4geW91IHByZXNzIHRoZSB1cCBvciBkb3duIGFycm93IGluIGEKQEAgLTE5MCw2
ICsxOTQsOCBAQCBwcml2YXRlOgogICAgICAgICBib29sIGJhY2tzcGFjZU9yRGVsZXRlUHJlc3Nl
ZDsKICAgICB9OwogICAgIE93blB0cjxBdXRvZmlsbEFyZ3M+IG1fYXV0b2ZpbGxBcmdzOworCisg
ICAgSGFzaE1hcDxpbnQsIFdlYkNvcmU6OlNwZWxsQ2hlY2tlcio+IG1fcmVxdWVzdGluZ1NwZWxs
Q2hlY2tlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4IGU2MDU2MmMwNTFiOWUxNzQ5OWEwNTNhMTAxYjQzM2Zh
M2YxOGM3OGQuLjExY2ZiNTkwYWEyZDk4NDk1NzUwZTFlZDliMTc5ODI2YjJkYTYxZDIgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTMyNCw2ICszMjQsMTEgQEAg
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sIGVu
YWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJs
ZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fc2V0dGluZ3MtPnNldEFzeW5jaHJv
bm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiB2b2lkIFdlYlNldHRpbmdz
SW1wbDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0
dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggZmZkYzhkMzkzMTcwMTY0OWI3OTUxM2Y2MmVhNjVjYTkw
YzEyMmU3Mi4uMGE2NDczZmEwZTAxYTJiYThlZGRkM2I3MzBmNzMwOWUxY2MyOWQxZCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC05Niw2ICs5Niw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCk7CisgICAgdmlydHVhbCB2b2lk
IHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKIAogcHJpdmF0ZToKZGlmZiAtLWdp
dCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJWaWV3SW1wbC5jcHAKaW5kZXggYWMwNWRkMmI3OWIzNzljYjczZGMzNjAwMDI4NmI1
MDA5ZmJlOTAwMi4uMTM3Y2I4OGVmNjE1MjcwZjVjMzU1OTA3YjRhNmYzYzY2NmFiN2ViZSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE5ODcsNiArMTk4NywxMSBAQCB2b2lk
IFdlYlZpZXdJbXBsOjpwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0
aW9uKQogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1l
bnUoKTsKIH0KIAordm9pZCBXZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgbV9lZGl0b3JDbGllbnRJbXBs
LmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKHJlc3BvbnNlKTsKK30KKwogLy8gV2ViVmlldyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQogCiBib29sIFdlYlZpZXdJbXBsOjpzZXREcm9wRWZmZWN0KGJvb2wgYWNjZXB0
KQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCmluZGV4IDZlOGRjYWNkNTg2MzgzOWQ2NmZiOTU5
Nzg4ZTI4Yjk5YzMzMmZiM2MuLmU2YTc2ODRkM2MxZDc0YmFhNTdhZWVmY2U2NzRkMDQyMjczYTRh
YmYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysgYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKQEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJs
aWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2
ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVu
c2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsKICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9y
bUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbik7CisgICAgdmlydHVhbCB2
b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmKTsKIAog
ICAgIC8vIFdlYlZpZXdJbXBsCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77967</attachid>
            <date>2011-01-04 21:19:40 -0800</date>
            <delta_ts>2011-01-11 21:28:10 -0800</delta_ts>
            <desc>Updated ToT.</desc>
            <filename>bug-51013-20110105141938.patch</filename>
            <type>text/plain</type>
            <size>26260</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA5M2U0NWZmNmQ5NDQwMmZiMGExYzMzOTM4MmY5MDE2YjI2MWUxNDJmLi44NmI5ZTE5
ODgyYTQ0OGJkYTAwZjc5NjY4MDRhNzRkZGUzNGY4ZWQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDEtMDQgIEtlbnQg
VGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHRlc3Qg
ZXhwZWN0YXRpb24gdXBkYXRlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggYjcyMTVkY2M2MzliYWI1NDJjMjJhOGMyMmQ5
Mzc0ODQ3NDcyNjIxZS4uZmRlZWY1YTI2ZTM5YTNmYTQzYTQ4ZjVjN2FlNmNiY2E3YzY1MTllMiAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRp
b25zLnR4dApAQCAtMjI2MCwxMCArMjI2MCw2IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFz
dC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBX
SU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdF
CiBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUw
OS5odG1sID0gSU1BR0UKIAotLy8gTmVlZCB0byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1
ZXN0Q2hlY2tpbmdPZlN0cmluZygpCi0vLyBPdmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0
MTQyMyBXSU4gTElOVVggOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9
IFRFWFQKLQogLy8gRmxha3kgdGVzdHMuCiBCVUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4
dC96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVY
IDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBA
IC0zMDAxLDcgKzI5OTcsNiBAQCBCVUdDUjY2NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYv
YXJyYXktbmVzdGVkLWxvb3AuaHRtbCA9IFBBU1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcg
OiBmYXN0L2pzL2tkZS9lbmNvZGVfZGVjb2RlX3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdD
UjY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52
YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUdDUjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5n
L3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4
NiA6IGZhc3QvbG9hZGVyL3VzZXItc3R5bGVzaGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAog
QlVHQ1I2Njc1MSA6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXIt
cHJlbG9hZC5odG1sID0gVEVYVCBUSU1FT1VUIFBBU1MKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBlOThjYzNmN2Q0ZGM2YzgwMDYxMGNlODZhYjJm
ZTI2ZWExMjVkMzNhLi43YTRlMjY0ZjVlMzRkZjA2MTI2OGUyN2NiZTE1NzczYjliNjJkYjcyIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjEgQEAKKzIwMTAtMTItMTQgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9t
aXVtXSBTaG91bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09m
U3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTUxMDEzCisKKyAgICAgICAgR2F2ZSBEUlQgaW1wbGVtZW50YXRpb24gZm9yIHJlcXVlc3RUZXh0
Q2hlY2soKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RD
b250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEltcGxlbWVudGVkLgorICAgICAgICAqIER1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAgICogRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoaW52b2tlUmVzcG9uZExh
c3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENo
ZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzcG9uZExhc3RUZXh0Q2hlY2sp
OiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
OgorCiAyMDExLTAxLTA0ICBTw7hyZW4gR2plc3NlICA8c2dqZXNzZUBjaHJvbWl1bS5vcmc+CiAK
ICAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFuZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA4M2UyMzg5
Y2E0N2ZlNWQwZWRmZmVkYWNmNGI3YWMxMGM2NjBiNTEyLi42NGQ3ODk1OTE1NGE3NjE3ODFmZDgy
OWQ2ODM1ZjEwMjhhNTliMzE5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjQsOSArNjI0LDExIEBAIHZv
aWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3Bw
QXJndW1lbnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJn
dW1lbnRMaXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhN
RTogSW1wbGVtZW50IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3Vt
ZW50c1swXS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5ncygp
LT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29sKGFy
Z3VtZW50c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91dFRl
c3RDb250cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENw
cFZhcmlhbnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL01vY2tTcGVsbENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2Nr
U3BlbGxDaGVjay5oCmluZGV4IGRjZDM3ZjNlYjA1M2I1NDczY2MxYjk2NDI4NWRmOGI1N2RlY2Rk
ZGYuLjZmNWFkZTJlNTdlZTVjNTVjNTcwMTc3NTIwNWQxNDE0OGQ0NWY1NGYgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5n
dGgpOwogCiAgICAgdm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmIHdvcmQsIFZlY3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAK
IHByaXZhdGU6CiAgICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdl
IG5lZWQgdG8gaW5pdGlhbGl6ZSBpdC4KICAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3Qg
bWF5IHRha2UgbG9uZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDg0OTMxMmM0YjA1ZWRi
ODIzNGZjMGM3NTYxNGJhOTYxZDAyOGYxMGEuLjNmN2U3YTIzMzJkZDA2Y2ZmMGUyZmQ3YjgzZTcy
NTIyMTdmYjdmZWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5jcHAKQEAgLTU2LDYgKzU2LDcgQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVk
ZSAiV2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VO
YW1lc3BhY2UuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1
ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1
ZGUgIldlYlZpZXcuaCIKQEAgLTY0LDYgKzY1LDcgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9y
dC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQxMyw2ICs0MTUs
NDAgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQs
IGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50JgogICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNr
V29yZCh0ZXh0LCAmbWlzc3BlbGxlZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogfQogCitz
dGF0aWMgdm9pZCBpbnZva2VSZXNwb25kTGFzdFRleHRDaGVjayh2b2lkKiBjb250ZXh0KQorewor
ICAgIFdlYlZpZXdIb3N0KiB3dmggPSBzdGF0aWNfY2FzdDxXZWJWaWV3SG9zdCo+KGNvbnRleHQp
OworICAgIHd2aC0+cmVzcG9uZExhc3RUZXh0Q2hlY2soKTsKK30KKwordm9pZCBXZWJWaWV3SG9z
dDo6cmVxdWVzdFRleHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYlN0cmluZyYgdGV4dCkK
K3sKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTZXF1ZW5jZSA9IHNlcXVlbmNlOworICAg
IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZyA9IHRleHQ7CisgICAgd2Via2l0X3N1cHBv
cnQ6OlBvc3REZWxheWVkVGFzayhpbnZva2VSZXNwb25kTGFzdFRleHRDaGVjaywgc3RhdGljX2Nh
c3Q8dm9pZCo+KHRoaXMpLCAwKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVzcG9uZExhc3RU
ZXh0Q2hlY2soKQoreworICAgIFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7
CisgICAgLy8gRklYTUU6IERvIHRoZSBncmFtbWFyIGNoZWNrLgorICAgIGludCBvZmZzZXQgPSAw
OworICAgIFN0cmluZyB0ZXh0KG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5kYXRhKCks
IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5sZW5ndGgoKSk7CisgICAgd2hpbGUgKHRl
eHQubGVuZ3RoKCkpIHsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRQb3NpdGlvbiA9IDA7CisgICAg
ICAgIGludCBtaXNzcGVsbGVkTGVuZ3RoID0gMDsKKyAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxs
Q2hlY2tXb3JkKFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSksICZt
aXNzcGVsbGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtaXNz
cGVsbGVkTGVuZ3RoKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJlc3VsdHMuYXBwZW5k
KFdlYlRleHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3NwZWxsaW5n
LCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpKTsKKyAgICAg
ICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRM
ZW5ndGgpOworICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9uOworICAgIH0KKwor
ICAgIHdlYlZpZXcoKS0+cmVzcG9uZFRleHRDaGVjayhXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSht
X2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTZXF1ZW5jZSwgcmVzdWx0cykpOworfQorCisKIFdlYlN0
cmluZyBXZWJWaWV3SG9zdDo6YXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYlN0cmluZyYpCiB7CiAg
ICAgLy8gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgYXMgTWFjIFdlYktpdCAoJ1dlYktpdFN1cHBv
cnQvV2ViRWRpdG9yQ2xpZW50Lm1tJykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVl
L2Nocm9taXVtL1dlYlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oCmluZGV4IDIwYjI5YzBkOWNiNjEwOWVmNTU1YTAwODQ3MGIzY2VkMTUwOGU5
ODguLjMwYjg1MDk3MGYzNjEzMmM3ZDIxNGM4NzRlNDU1ODNmMTIxZGVmNjEgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTI2LDYgKzEyNiw3IEBA
IGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGlj
IFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmco
KTsKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc3BlbGxDaGVjayhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCYgb2Zm
c2V0LCBpbnQmIGxlbmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RUZXh0Q2hlY2soaW50
IHNlcXVlbmNlLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmly
bURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKQEAg
LTIwOCw3ICsyMDksMTAgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJW
aWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZv
aWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3Rl
bTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAvLyBTcGVsbGNo
ZWNrIHJlbGF0ZWQgaGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxsQ2hl
Y2soKTsKKyAgICB2b2lkIHJlc3BvbmRMYXN0VGV4dENoZWNrKCk7CiAKICNpZiBFTkFCTEUoQ0xJ
RU5UX0JBU0VEX0dFT0xPQ0FUSU9OKQogICAgIC8vIEdlb2xvY2F0aW9uIGNsaWVudCBtb2NrcyBm
b3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKQEAgLTMyNyw2ICszMzEsOSBAQCBwcml2YXRlOgogICAg
IE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2s+IG1fc3BlZWNoSW5w
dXRDb250cm9sbGVyTW9jazsKIAogICAgIE93blB0cjxUZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIq
PiBtX25hdmlnYXRpb25Db250cm9sbGVyOworCisgICAgV2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0
UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nOworICAgIGludCBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hl
Y2tTZXF1ZW5jZTsKIH07CiAKICNlbmRpZiAvLyBXZWJWaWV3SG9zdF9oCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRl
eCAxYjM5MTQ5NzJmNjJiNmZiYjcyZjU1OWJhOGFjZjZjOTEzNjVlMzNkLi4xYzg2N2RjZDEwYmJh
NGVhZDI4ZTZjNDA0M2JlMzI1ZGE2MDZmOTBhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0MiBA
QAorMjAxMC0xMi0xNCAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNo
b3VsZCBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmco
KQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMK
KworICAgICAgICAtIEFkZGVkIFdlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0Q2hlY2soKSBhbmQg
cmVsYXRlZCBjbGFzc2VzLgorICAgICAgICAtIEFkZGVkIFdlYlZpZXc6OnJlc3BvbmRUZXh0Q2hl
Y2soKS4KKyAgICAgICAgLSBJbXBsZW1lbnRlZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZygpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJs
aWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9u
c2UuaDogQWRkZWQgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UgY2xhc3MuCisgICAgICAgIChXZWJL
aXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpzZXF1ZW5jZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpyZXN1bHRzKToKKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OnR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQ6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNr
aW5nUmVzdWx0OjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAgICAgICogcHVibGljL1dlYlZpZXcuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVmlld0NsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJW
aWV3Q2xpZW50OjpyZXF1ZXN0VGV4dENoZWNrKToKKyAgICAgICAgKiBzcmMvQXNzZXJ0TWF0Y2hp
bmdFbnVtcy5jcHA6ICAgICAgICAKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3Ry
aW5nKTogR2F2ZSBhbiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgKFdlYktpdDo6dG9Db3JlUmVz
dWx0cyk6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGllbnRJbXBsOjpkaWRSZXNw
b25kQ2hlY2tpbmdPZlN0cmluZyk6IEFkZWQuCisgICAgICAgICogc3JjL0VkaXRvckNsaWVudElt
cGwuaDoKKyAgICAgICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6
IEFkZGVkLgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAgICAgKiBzcmMv
V2ViVGV4dENoZWNraW5nUmVzdWx0LmNwcDogQWRkZWQgV2ViVGV4dENoZWNraW5nUmVzdWx0IGNs
YXNzLgorICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6Oldl
YlZpZXdJbXBsOjpyZXNwb25kVGV4dENoZWNrKToKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwu
aDoKKwogMjAxMS0wMS0wNCAgRGFyaW4gRmlzaGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IERhdmlkIExldmluLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9t
aXVtL1dlYktpdC5neXAgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCBkZTM5YWMz
NDM4OTNhMDUxNzhiNjYxNWNiZjA5ODY5NzBjMWJiNGE3Li41MTdhY2VhY2Y1MGY2Nzc4YzM2Yzhm
NDA2NTAzMTliMjlmYWFjMjgzIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5
cAorKysgYi9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjczLDYgKzI3Myw4IEBACiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdHJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
Q2FzZVNlbnNpdGl2aXR5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNr
aW5nUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlNldHRpbmdzLmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdz
LmgKaW5kZXggMDQ2N2M5NjZhYTVmZGEyM2RkZTM0NzhkMDRkMjlkYWIyNzE2NmE3Yy4uNTVkYjQ3
NWE4MmZmNjBhN2FjNmY3YjI4ZGZkMTBjYTUzNzNiMjVkZSAxMDA2NDQKLS0tIGEvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaApAQCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0QWNjZWxlcmF0ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNl
dEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNl
dEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogCiBwcm90ZWN0ZWQ6CmRp
ZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNl
LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYWE3MTIzYjM5YjRlZTVjZGI0ZWJiOWVlYzJiMzY0ZmVjYThhNWY3YwotLS0gL2Rl
di9udWxsCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9u
c2UuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAq
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9oCisj
ZGVmaW5lIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlX2gKKworI2luY2x1ZGUgIldlYlRleHRDaGVj
a2luZ1Jlc3VsdC5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGV4dENoZWNr
aW5nUmVzcG9uc2UgeworcHVibGljOgorICAgIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKGludCBz
ZXF1ZW5jZSwgY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMp
CisgICAgICAgIDogbV9zZXF1ZW5jZShzZXF1ZW5jZSkKKyAgICAgICAgLCBtX3Jlc3VsdHMocmVz
dWx0cykKKyAgICB7CisgICAgfQorCisgICAgaW50IHNlcXVlbmNlKCkgY29uc3QgeyByZXR1cm4g
bV9zZXF1ZW5jZTsgfQorICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+
JiByZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRzOyB9CisKK3ByaXZhdGU6CisgICAg
aW50IG1fc2VxdWVuY2U7CisgICAgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gbV9y
ZXN1bHRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCBiL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVl
NjkyYzBmNWUzMTYyOTgwMGQxNzYzYzgwMzNiMTI2Y2U1N2UwZgotLS0gL2Rldi9udWxsCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKQEAgLTAsMCAr
MSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nUmVzdWx0X2gKKyNkZWZpbmUgV2ViVGV4dENo
ZWNraW5nUmVzdWx0X2gKKworI2luY2x1ZGUgIldlYkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZl
Y3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gQSBjaGVja2VkIGVudHJ5IG9mIHRl
eHQgY2hlY2tpbmcuCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQgeworcHVibGljOgorICAg
IGVudW0gVHlwZSB7CisgICAgICAgIE1pc3NwZWxsaW5nID0gMSA8PCAwLAorICAgICAgICBCYWRH
cmFtbWFyID0gMSA8PCAxCisgICAgfTsKKworICAgIFR5cGUgdHlwZSgpIGNvbnN0IHsgcmV0dXJu
IG1fdHlwZTsgfQorICAgIGludCBwb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fcG9zaXRpb247
IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9sZW5ndGg7IH0KKworICAgIFdl
YlRleHRDaGVja2luZ1Jlc3VsdChUeXBlIHR5cGUsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCkg
CisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikK
KyAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgeworICAgIH0KKyAgICAKK3ByaXZhdGU6
CisgICAgVHlwZSBtX3R5cGU7CisgICAgaW50IG1fcG9zaXRpb247CisgICAgaW50IG1fbGVuZ3Ro
OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlZpZXcuaAppbmRleCBhMThhNjRlNTAxMmEzMmE5OWQyODU1ODYxOGI1MTlkNmRlZWUwMDk2Li4w
YTY3NGE4ZTc1ODkwZTc4NWFkNmQwNjNiZWMyNjQ5Yzc0OTg3Yjk0IDEwMDY0NAotLS0gYS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXcuaApAQCAtNDgsNiArNDgsNyBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRleHQzRDsK
IGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlN0cmluZzsKK2Ns
YXNzIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlOwogY2xhc3MgV2ViVmlld0NsaWVudDsKIHN0cnVj
dCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKQEAgLTMxOSw2ICszMjAs
OSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlaXIgbGlua3MuCiAgICAgV0VCS0lUX0FQSSBzdGF0aWMg
dm9pZCByZXNldFZpc2l0ZWRMaW5rU3RhdGUoKTsKIAorICAgIC8vIFNwZWxsIGNoZWNraW5nIC0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
KworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRDaGVja2lu
Z1Jlc3BvbnNlJikgPSAwOwogCiAgICAgLy8gQ3VzdG9tIGNvbG9ycyAtLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggMDMzZTEyMDYxNjY5YzhiMWQ5OWEzYTQ2NDZhMzVj
ZjRmNzEzYWI3Mi4uMWExOTg5OGNjZWZmYTZlNGVlN2VhODJmZjIxZDNhMDk3ODgxODhhOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKQEAgLTE3Myw3ICsxNzMsOSBAQCBw
dWJsaWM6CiAgICAgLy8gZXJyb3IsIHRoZW4gdXBvbiByZXR1cm4gbWlzc3BlbGxlZExlbmd0aCBp
cyAwLgogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENoZWNrKAogICAgICAgICBjb25zdCBXZWJTdHJp
bmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50JiBtaXNzcGVsbGVkTGVuZ3RoKSB7
IH0KLQorICAgIC8vIFJlcXVlc3RzIGFzeW5jaHJvbm91cyBzcGVsbCBhbmQgZ3JhbW1hciBjaGVj
a2luZy4gVGhlIHJlc3VsdCBzaG91bGQgYmUgcmV0dXJuZWQgYnkgCisgICAgLy8gV2ViVmlldzo6
cmVzcG9uZFRleHRDaGVjaygpCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RUZXh0Q2hlY2soaW50
IHNlcXVlbmNlLCBjb25zdCBXZWJTdHJpbmcmKSB7IH0KICAgICAvLyBDb21wdXRlcyBhbiBhdXRv
LWNvcnJlY3RlZCByZXBsYWNlbWVudCBmb3IgYSBtaXNzcGVsbGVkIHdvcmQuICBJZiBubwogICAg
IC8vIHJlcGxhY2VtZW50IGlzIGZvdW5kLCB0aGVuIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5l
ZC4KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBhdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5n
JiBtaXNzcGVsbGVkV29yZCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCmluZGV4IDkzNmI4ZGJjMTZhMjRiNDNiNWRm
M2VjNTA0MGRjZTU2OTNiODEyM2MuLjVlM2RkMGJlYzViMTE3MTc1OGI3YzRlYTA2ZWIxYWYyYWYx
NzU1MDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApA
QCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNs
dWRlICJBcHBsaWNhdGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5o
IgorI2luY2x1ZGUgIkRvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiRWRpdG9ySW5zZXJ0QWN0
aW9uLmgiCiAjaW5jbHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgi
CkBAIC03NCw2ICs3NSw3IEBACiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJX
ZWJUZXh0QWZmaW5pdHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCisj
aW5jbHVkZSAiV2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFt
ZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpA
QCAtMzk0LDYgKzM5Niw5IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZUVy
cm9yUXVvdGFFeGNlZWRlZCwgRmlsZUVycm9yOjpRVU9UQV9FWENFRURFCiBDT01QSUxFX0FTU0VS
VF9NQVRDSElOR19FTlVNKFdlYkZpbGVFcnJvclR5cGVNaXNtYXRjaCwgRmlsZUVycm9yOjpUWVBF
X01JU01BVENIX0VSUik7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVFcnJv
clBhdGhFeGlzdHMsIEZpbGVFcnJvcjo6UEFUSF9FWElTVFNfRVJSKTsKIAorQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3NwZWxsaW5nLCBEb2N1
bWVudE1hcmtlcjo6U3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ6OkJhZEdyYW1tYXIsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsK
KwogI2lmIEVOQUJMRShDTElFTlRfQkFTRURfR0VPTE9DQVRJT04pCiBDT01QSUxFX0FTU0VSVF9N
QVRDSElOR19FTlVNKFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZCwg
R2VvbG9jYXRpb25FcnJvcjo6UGVybWlzc2lvbkRlbmllZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZSwg
R2VvbG9jYXRpb25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSk7CmRpZmYgLS1naXQgYS9XZWJL
aXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCA2ZjE3MzlmMjE1OWNlYTQ4Yjk4OWE2MDQ4ZGIy
MTVjNGEyNzY1NzY0Li4yNjNlZmVhYWEwNzQ5M2FlNzI5NzU2ZTQ1YjBhN2FmMzgzZTFiNzMyIDEw
MDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKQEAgLTQwLDYgKzQwLDcg
QEAKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9y
bVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNwZWxsQ2hl
Y2tlci5oIgogCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldl
YkVkaXRpbmdBY3Rpb24uaCIKQEAgLTg3Nyw2ICs4NzgsMzAgQEAgdm9pZCBFZGl0b3JDbGllbnRJ
bXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgs
CiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCit2b2lkIEVk
aXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2Vu
ZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBBU1NFUlQoIW1f
cmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5jb250YWlucyhzZXF1ZW5jZSkpOworICAgIG1fcmVxdWVz
dGluZ1NwZWxsQ2hlY2tlci5zZXQoc2VxdWVuY2UsIHNlbmRlcik7CisgICAgbV93ZWJWaWV3LT5j
bGllbnQoKS0+cmVxdWVzdFRleHRDaGVjayhzZXF1ZW5jZSwgdGV4dCk7Cit9CisKK3N0YXRpYyBW
ZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8
V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBWZWN0b3I8U3BlbGxDaGVj
a2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1
bHRzLnNpemUoKTsgKytpKQorICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoU3BlbGxDaGVja2lu
Z1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4ocmVzdWx0c1tp
XS50eXBlKCkpLCByZXN1bHRzW2ldLnBvc2l0aW9uKCksIHJlc3VsdHNbaV0ubGVuZ3RoKCkpKTsK
KyAgICByZXR1cm4gY29yZVJlc3VsdHM7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlk
UmVzcG9uZENoZWNraW5nT2ZTdHJpbmcoY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmIHJl
c3BvbnNlKQoreworICAgIEhhc2hNYXA8aW50LCBTcGVsbENoZWNrZXIqPjo6aXRlcmF0b3IgZm91
bmQgPSBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuZmluZChyZXNwb25zZS5zZXF1ZW5jZSgpKTsK
KyAgICBpZiAobV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmVuZCgpID09IGZvdW5kKQorICAgICAg
ICByZXR1cm47CisgICAgZm91bmQtPnNlY29uZC0+ZGlkQ2hlY2socmVzcG9uc2Uuc2VxdWVuY2Uo
KSwgdG9Db3JlUmVzdWx0cyhyZXNwb25zZS5yZXN1bHRzKCkpKTsKKyAgICBtX3JlcXVlc3RpbmdT
cGVsbENoZWNrZXIucmVtb3ZlKGZvdW5kKTsKK30KKwogU3RyaW5nIEVkaXRvckNsaWVudEltcGw6
OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYg
bWlzc3BlbGxlZFdvcmQpCiB7CiAgICAgaWYgKCEoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0Vu
YWJsZWQoKSAmJiBtX3dlYlZpZXctPmNsaWVudCgpKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmgKaW5kZXggOWRiZDZhZmIzNzFkNjQxMmEwYWYyMGU4ZGI3Yjg1MThjNzg4N2Uw
ZS4uYmJjYTMyZDNjMWU3YjljN2NlZWFmOWM5MDlkMDllYzRmOGU5MDc1NCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTMyLDExICszMiwxNCBAQAogI2RlZmluZSBF
ZGl0b3JDbGllbnRJbXBsX2gKIAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2luY2x1ZGUg
IldlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgU3BlbGxDaGVja2VyOwogfQog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMSw3ICsxMTQsOCBAQCBwdWJsaWM6CiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgZ3Vl
c3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2aXJ0
dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwg
aW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJp
bmcmKTsKKyAgICB2b2lkIGRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKGNvbnN0IFdlYlRleHRD
aGVja2luZ1Jlc3BvbnNlJik7CiAKICAgICAvLyBTaG93cyB0aGUgZm9ybSBhdXRvZmlsbCBwb3B1
cCBmb3IgfG5vZGV8IGlmIGl0IGlzIGFuIEhUTUxJbnB1dEVsZW1lbnQgYW5kCiAgICAgLy8gaXQg
aXMgZW1wdHkuICBUaGlzIGlzIGNhbGxlZCB3aGVuIHlvdSBwcmVzcyB0aGUgdXAgb3IgZG93biBh
cnJvdyBpbiBhCkBAIC0xOTAsNiArMTk0LDggQEAgcHJpdmF0ZToKICAgICAgICAgYm9vbCBiYWNr
c3BhY2VPckRlbGV0ZVByZXNzZWQ7CiAgICAgfTsKICAgICBPd25QdHI8QXV0b2ZpbGxBcmdzPiBt
X2F1dG9maWxsQXJnczsKKworICAgIEhhc2hNYXA8aW50LCBXZWJDb3JlOjpTcGVsbENoZWNrZXIq
PiBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBlNjA1NjJjMDUxYjll
MTc0OTlhMDUzYTEwMWI0MzNmYTNmMThjNzhkLi4xMWNmYjU5MGFhMmQ5ODQ5NTc1MGUxZWQ5YjE3
OTgyNmIyZGE2MWQyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdz
SW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBA
IC0zMjQsNiArMzI0LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRIeXBlcmxpbmtBdWRp
dGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEh5cGVybGlua0F1
ZGl0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFz
eW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3Nl
dHRpbmdzLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChlbmFibGVkKTsKK30K
Kwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgZW5h
YmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGVk
KTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGZmZGM4ZDM5MzE3MDE2
NDliNzk1MTNmNjJlYTY1Y2E5MGMxMjJlNzIuLjBhNjQ3M2ZhMGUwMWEyYmE4ZWRkZDNiNzMwZjcz
MDllMWNjMjlkMWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtOTYs
NiArOTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52
YXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wp
OworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAK
IHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IGU0N2M4OWU4YTA0
MmNhMmVmMzk5YWRhNDA2Mzc1MThmYjk1YWViNDUuLjhkNDRjZGI5M2M1NzA4YTcxNzJjZGRiZjA1
M2ZmZTE3ODY4NDM3ZTUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBAIC0xOTk5
LDYgKzE5OTksMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGVyZm9ybUN1c3RvbUNvbnRleHRNZW51
QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxl
cigpLT5jbGVhckNvbnRleHRNZW51KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJlc3BvbmRU
ZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IG1fZWRpdG9yQ2xpZW50SW1wbC5kaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhyZXNwb25zZSk7
Cit9CisKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogYm9vbCBXZWJWaWV3SW1wbDo6c2V0RHJv
cEVmZmVjdChib29sIGFjY2VwdCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBjYzI1
Yzg0NjcxOTM3MzRkMWM4YTY4YmYzOWQyNTVjNTBlOWQ1NjA5Li4xYThkMzNiNTgwMWQ4MDVmYTVl
NWVhMDFiMTY1MzQyMDA4MzRjNzI0IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dl
YlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0x
OTcsNiArMTk3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAg
dmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rp
b24pOworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRDaGVj
a2luZ1Jlc3BvbnNlJik7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78649</attachid>
            <date>2011-01-11 21:28:16 -0800</date>
            <delta_ts>2011-01-11 22:31:25 -0800</delta_ts>
            <desc>updated ToT</desc>
            <filename>bug-51013-20110112142814.patch</filename>
            <type>text/plain</type>
            <size>26266</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OGM1NTMxMGQ0OGRkNzczYjc1ZDMwYmQ4YzkxZTk5YjM1ZGI0ZWU5Li42ZWVlNzZi
OTY5Mjk0YWJlMDFjZmE0ZTNkNTBiNGI3M2Y4MmQyZWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDEtMTEgIEp1c3Rp
biBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJv
bWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDg0Yjg1N2M4Y2NjNjE2ZGRkYzAz
MmRkY2VlOWU0NzZmNDNiNzExNTUuLmViZTQ0MGQ3NjFjNTMxNDliOGQ1N2M1ZDljNTM4YjhmNzJk
NjdmMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKQEAgLTIyMjksMTAgKzIyMjksNiBAQCBCVUdXSzQxMzExIFdJTiBMSU5V
WCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1BR0UKIEJVR1dL
NDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA4Lmh0bWwg
PSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVz
RG91YmxlMDkuaHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVkaXRvckNsaWVu
dDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGggNjY2ODIKLS8v
IEJVR1dLNDE0MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3Rl
Lmh0bWwgPSBURVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHQ1I0NDM0NSBMSU5VWCA6IHN2Zy96
b29tL3RleHQvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwogQlVHQ1I0NDM0
NiBMSU5VWCA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0Ug
UEFTUwpAQCAtMjk3Miw3ICsyOTY4LDYgQEAgQlVHQ1I2NjQ2NiBNQUMgV0lOIERFQlVHIFNMT1cg
OiBwZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNjY1NTQgV0lO
IERFQlVHIDogZmFzdC9qcy9rZGUvZW5jb2RlX2RlY29kZV91cmkuaHRtbCA9IENSQVNIIFBBU1MK
IAogQlVHQ1I2NjY4MyBXSU4gTElOVVggOiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhdy1jYW52YXMt
b24tY2FudmFzLXNoYWRvdy5odG1sID0gVEVYVAotQlVHQ1I2NjY4MiBXSU4gTElOVVggTUFDIDog
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQKIEJV
R0NSNjY2ODYgOiBmYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtZmFzdC1wYXRoLmh0bWwgPSBU
RVhUCiAKIEJVR0NSNjY3NTEgOiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2Fk
LW9yZGVyLXByZWxvYWQuaHRtbCA9IFRFWFQgVElNRU9VVCBQQVNTCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmYwOTUwMDQyMGE5ZTI1NThhZmZi
NzgxMWZlMWYxNDdiODI3YjNmYy4uMzgzNDJhZGM2MGMwMTVhZmY4OGQyODhmY2RjNmI4MGQwNjhj
OTI0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDExLTAxLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTAxMworCisgICAgICAgIEdhdmUgRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1
ZXN0VGV4dENoZWNrKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJl
c3BvbmRMYXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVxdWVz
dFRleHRDaGVjayk6IEFkZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc3BvbmRMYXN0VGV4
dENoZWNrKTogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaDoKKwogMjAxMS0wMS0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwYjJjZmM5YWU0MDg2ZWZhMTMz
MWJiOGU0YmJjZTk4ZDJhYzc3Mzc5Li4xNjdkMDNjOTVkZjFmYTE1MWYwZWJkYTBjZTg3NmIzYWQ5
OWRhOTliIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjAsOSArNjIwLDExIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jv
b2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1swXSkp
OworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5o
CmluZGV4IGRjZDM3ZjNlYjA1M2I1NDczY2MxYjk2NDI4NWRmOGI1N2RlY2RkZGYuLjZmNWFkZTJl
NTdlZTVjNTVjNTcwMTc3NTIwNWQxNDE0OGQ0NWY1NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAg
dm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFZl
Y3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAKIHByaXZhdGU6CiAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8gaW5p
dGlhbGl6ZSBpdC4KICAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2UgbG9u
ZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGY1ZGQ3ZmRiYzUzOWMxNGMzOGYxYWJhZmJj
NmFjZmFlNzM3NWZhMzkuLmRiZWQyMjc0YzZlOWY2NzE0ODQwODE3OTM3YWFiOWUzM2E4YmY5NDgg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIK
KyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlVSTFJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKQEAgLTYwLDYgKzYxLDcgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3Vw
cG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQwOSw2ICs0MTEsNDAgQEAgdm9pZCBX
ZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3Bl
bGxlZE9mZnNldCwgaW50JgogICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0LCAm
bWlzc3BlbGxlZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogfQogCitzdGF0aWMgdm9pZCBp
bnZva2VSZXNwb25kTGFzdFRleHRDaGVjayh2b2lkKiBjb250ZXh0KQoreworICAgIFdlYlZpZXdI
b3N0KiB3dmggPSBzdGF0aWNfY2FzdDxXZWJWaWV3SG9zdCo+KGNvbnRleHQpOworICAgIHd2aC0+
cmVzcG9uZExhc3RUZXh0Q2hlY2soKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVxdWVzdFRl
eHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYlN0cmluZyYgdGV4dCkKK3sKKyAgICBtX2xh
c3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTZXF1ZW5jZSA9IHNlcXVlbmNlOworICAgIG1fbGFzdFJlcXVl
c3RlZFRleHRDaGVja1N0cmluZyA9IHRleHQ7CisgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxh
eWVkVGFzayhpbnZva2VSZXNwb25kTGFzdFRleHRDaGVjaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHRo
aXMpLCAwKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVzcG9uZExhc3RUZXh0Q2hlY2soKQor
eworICAgIFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAgLy8gRklY
TUU6IERvIHRoZSBncmFtbWFyIGNoZWNrLgorICAgIGludCBvZmZzZXQgPSAwOworICAgIFN0cmlu
ZyB0ZXh0KG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5kYXRhKCksIG1fbGFzdFJlcXVl
c3RlZFRleHRDaGVja1N0cmluZy5sZW5ndGgoKSk7CisgICAgd2hpbGUgKHRleHQubGVuZ3RoKCkp
IHsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRQb3NpdGlvbiA9IDA7CisgICAgICAgIGludCBtaXNz
cGVsbGVkTGVuZ3RoID0gMDsKKyAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKFdl
YlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSksICZtaXNzcGVsbGVkUG9z
aXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtaXNzcGVsbGVkTGVuZ3Ro
KQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdlYlRleHRDaGVj
a2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3NwZWxsaW5nLCBvZmZzZXQgKyBt
aXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpKTsKKyAgICAgICAgdGV4dCA9IHRl
eHQuc3Vic3RyaW5nKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgpOworICAg
ICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9uOworICAgIH0KKworICAgIHdlYlZpZXco
KS0+cmVzcG9uZFRleHRDaGVjayhXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZShtX2xhc3RSZXF1ZXN0
ZWRUZXh0Q2hlY2tTZXF1ZW5jZSwgcmVzdWx0cykpOworfQorCisKIFdlYlN0cmluZyBXZWJWaWV3
SG9zdDo6YXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYlN0cmluZyYpCiB7CiAgICAgLy8gUmV0dXJu
cyBhbiBlbXB0eSBzdHJpbmcgYXMgTWFjIFdlYktpdCAoJ1dlYktpdFN1cHBvcnQvV2ViRWRpdG9y
Q2xpZW50Lm1tJykKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5o
CmluZGV4IDg2YzIzYTU2MDdiZDgwMjE4NTJiNWIxZTlhNGFkZTAxNmRjOThlNzUuLjg3YjI4OWZm
MzQ4OTBmMGRkZTY2OTA4OThiYzkxNzA5N2I0MTYyYTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNsYXNzIFdlYlZp
ZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2Vi
RnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKICAgICB2aXJ0
dWFsIGJvb2wgaGFuZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
c3BlbGxDaGVjayhjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCYgb2Zmc2V0LCBpbnQmIGxl
bmd0aCk7CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RUZXh0Q2hlY2soaW50IHNlcXVlbmNlLCBj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcg
YXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCB2
b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6
V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJL
aXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKQEAgLTIwNCw3ICsyMDUs
MTAgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBw
dWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVT
eXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9u
ZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3Mq
KTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VP
cmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAvLyBTcGVsbGNoZWNrIHJlbGF0ZWQg
aGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxsQ2hlY2soKTsKKyAgICB2
b2lkIHJlc3BvbmRMYXN0VGV4dENoZWNrKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQg
bW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCiAgICAgV2ViS2l0OjpXZWJHZW9sb2NhdGlv
bkNsaWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwpAQCAtMzE3LDYgKzMyMSw5IEBA
IHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9j
az4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAgICAgT3duUHRyPFRlc3ROYXZpZ2F0
aW9uQ29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xsZXI7CisKKyAgICBXZWJLaXQ6Oldl
YlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmc7CisgICAgaW50IG1fbGFzdFJl
cXVlc3RlZFRleHRDaGVja1NlcXVlbmNlOwogfTsKIAogI2VuZGlmIC8vIFdlYlZpZXdIb3N0X2gK
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCmluZGV4IGM5OGYxNWJhMWUxZTExYWQ0ODg0YjcwMjI5YzEyNzU4ZjBiNzAwODYu
LjdmNjJmZWZmZDM3YjlhZTMzMTlkMWMyYjAyNDY0ZTkzYTUwZGQ1OTcgMTAwNjQ0Ci0tLSBhL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDQyIEBACisyMDExLTAxLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTAxMworCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVudDo6cmVxdWVzdFRl
eHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisgICAgICAgIC0gQWRkZWQgV2ViVmlldzo6
cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAgICAtIEltcGxlbWVudGVkIEVkaXRvckNsaWVudElt
cGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkuCisKKyAgICAgICAgKiBXZWJLaXQuZ3lwOgor
ICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0
Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSBjbGFzcy4K
KyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OldlYlRleHRDaGVja2lu
Z1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OnNl
cXVlbmNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OnJlc3Vs
dHMpOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaDogQWRkZWQuCisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6dHlwZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6cG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0
OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6OldlYlRl
eHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0KToKKyAgICAgICAgKiBwdWJs
aWMvV2ViVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAgICAg
IChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0Q2hlY2spOgorICAgICAgICAqIHNy
Yy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogICAgICAgIAorICAgICAgICAqIHNyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcpOiBHYXZlIGFuIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoV2Vi
S2l0Ojp0b0NvcmVSZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVu
dEltcGw6OmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKTogQWRlZC4KKyAgICAgICAgKiBzcmMv
RWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwOiBBZGRlZCBXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQgY2xhc3MuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc3BvbmRUZXh0Q2hlY2spOgorICAgICAgICAqIHNy
Yy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTAxLTExICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cCBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCmlu
ZGV4IGNkNDk5ZWIzZjIzNzNjMWQ3NDRmMmQ2ZGU3MjA3Mjg2YTkzNjRmMDkuLjMwYWJlNWU1YjIw
ZTJiOTJkMmYzMjZiYzIwYWJkN2E2YWVlNmUwZmUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1
bS9XZWJLaXQuZ3lwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNzIsNiAr
MjcyLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0cmluZy5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dlYlRl
eHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHREaXJl
Y3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViU2V0dGluZ3MuaAppbmRleCAwNDY3Yzk2NmFhNWZkYTIzZGRlMzQ3OGQwNGQyOWRhYjI3MTY2
YTdjLi41NWRiNDc1YTgyZmY2MGE3YWM2ZjdiMjhkZmQxMGNhNTM3M2IyNWRlIDEwMDY0NAotLS0g
YS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKKysrIGIvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMDEsNiArMTAxLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sKSA9IDA7CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSA9IDA7CiAKIHBy
b3RlY3RlZDoKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNr
aW5nUmVzcG9uc2UuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVz
cG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5hYTcxMjNiMzliNGVlNWNkYjRlYmI5ZWVjMmIzNjRmZWNhOGE1
ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hl
Y2tpbmdSZXNwb25zZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwor
ICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5P
IEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
ICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NT
SUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jl
c3BvbnNlX2gKKyNkZWZpbmUgV2ViVGV4dENoZWNraW5nUmVzcG9uc2VfaAorCisjaW5jbHVkZSAi
V2ViVGV4dENoZWNraW5nUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBX
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViVGV4dENoZWNraW5nUmVz
cG9uc2UoaW50IHNlcXVlbmNlLCBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0
PiYgcmVzdWx0cykKKyAgICAgICAgOiBtX3NlcXVlbmNlKHNlcXVlbmNlKQorICAgICAgICAsIG1f
cmVzdWx0cyhyZXN1bHRzKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgc2VxdWVuY2UoKSBjb25z
dCB7IHJldHVybiBtX3NlcXVlbmNlOyB9CisgICAgY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVj
a2luZ1Jlc3VsdD4mIHJlc3VsdHMoKSBjb25zdCB7IHJldHVybiBtX3Jlc3VsdHM7IH0KKworcHJp
dmF0ZToKKyAgICBpbnQgbV9zZXF1ZW5jZTsKKyAgICBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5n
UmVzdWx0PiBtX3Jlc3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3Vs
dC5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4yZWU2OTJjMGY1ZTMxNjI5ODAwZDE3NjNjODAzM2IxMjZjZTU3ZTBmCi0tLSAvZGV2
L251bGwKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQu
aApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
CisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9y
cyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9t
CisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAq
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAorI2RlZmlu
ZSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5j
bHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCisvLyBBIGNoZWNrZWQg
ZW50cnkgb2YgdGV4dCBjaGVja2luZy4KK2NsYXNzIFdlYlRleHRDaGVja2luZ1Jlc3VsdCB7Citw
dWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAgTWlzc3BlbGxpbmcgPSAxIDw8IDAsCisg
ICAgICAgIEJhZEdyYW1tYXIgPSAxIDw8IDEKKyAgICB9OworCisgICAgVHlwZSB0eXBlKCkgY29u
c3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgaW50IHBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4g
bV9wb3NpdGlvbjsgfQorICAgIGludCBsZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2xlbmd0aDsg
fQorCisgICAgV2ViVGV4dENoZWNraW5nUmVzdWx0KFR5cGUgdHlwZSwgaW50IHBvc2l0aW9uLCBp
bnQgbGVuZ3RoKSAKKyAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX3Bvc2l0aW9u
KHBvc2l0aW9uKQorICAgICAgICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7CisgICAgfQorICAg
IAorcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAgICBpbnQgbV9wb3NpdGlvbjsKKyAgICBp
bnQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXcuaCBiL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDQyNDM5OThlYzIxMjk0MDRjZDVhZDgxZGY5NDY2NWMz
NmQ3OWU4MjUuLjdmNTI1ZjhmZjE1MWYyNGQ4MzllNzI1NWI4NTA4ZjJiYjRkMmJlNTkgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlldy5oCkBAIC01Miw2ICs1Miw3IEBAIGNsYXNzIFdlYkdyYXBoaWNz
Q29udGV4dDNEOwogY2xhc3MgV2ViTm9kZTsKIGNsYXNzIFdlYlNldHRpbmdzOwogY2xhc3MgV2Vi
U3RyaW5nOworY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzcG9uc2U7CiBjbGFzcyBXZWJWaWV3Q2xp
ZW50Owogc3RydWN0IFdlYk1lZGlhUGxheWVyQWN0aW9uOwogc3RydWN0IFdlYlBvaW50OwpAQCAt
MzI1LDYgKzMyNiw5IEBAIHB1YmxpYzoKICAgICAvLyB0aGVpciBsaW5rcy4KICAgICBXRUJLSVRf
QVBJIHN0YXRpYyB2b2lkIHJlc2V0VmlzaXRlZExpbmtTdGF0ZSgpOwogCisgICAgLy8gU3BlbGwg
Y2hlY2tpbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQorCisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2Vi
VGV4dENoZWNraW5nUmVzcG9uc2UmKSA9IDA7CiAKICAgICAvLyBDdXN0b20gY29sb3JzIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCBhM2FkOWI0NGZkMzM2YTBjOGYy
MDA3OTg4N2ZmYWJhY2M5MWQ0YTM5Li4zYTJhMWNjYmExOWU1OTk0MjM5YTA3YmFjODYzNDZhY2Q3
YjZmNzg1IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQu
aAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtMTg1LDcg
KzE4NSw5IEBAIHB1YmxpYzoKICAgICAvLyBlcnJvciwgdGhlbiB1cG9uIHJldHVybiBtaXNzcGVs
bGVkTGVuZ3RoIGlzIDAuCiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soCiAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmIG1pc3NwZWxs
ZWRMZW5ndGgpIHsgfQotCisgICAgLy8gUmVxdWVzdHMgYXN5bmNocm9ub3VzIHNwZWxsIGFuZCBn
cmFtbWFyIGNoZWNraW5nLiBUaGUgcmVzdWx0IHNob3VsZCBiZSByZXR1cm5lZCBieSAKKyAgICAv
LyBXZWJWaWV3OjpyZXNwb25kVGV4dENoZWNrKCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRl
eHRDaGVjayhpbnQgc2VxdWVuY2UsIGNvbnN0IFdlYlN0cmluZyYpIHsgfQogICAgIC8vIENvbXB1
dGVzIGFuIGF1dG8tY29ycmVjdGVkIHJlcGxhY2VtZW50IGZvciBhIG1pc3NwZWxsZWQgd29yZC4g
IElmIG5vCiAgICAgLy8gcmVwbGFjZW1lbnQgaXMgZm91bmQsIHRoZW4gYW4gZW1wdHkgc3RyaW5n
IGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25z
dCBXZWJTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSB7IHJldHVybiBXZWJTdHJpbmcoKTsgfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcCBiL1dl
YktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggZTFlZTRhMTE1
YTcwY2M1MzEyOTcxZGIwNDJhZjhiOTNjODMyMDMwYi4uNzc3YTNmZTQ5NmM3YjM3ZGViYmM5NTMz
ZGQ4NTRjMmY5YmU5ZjUxMiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRN
YXRjaGluZ0VudW1zLmNwcAorKysgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCkBAIC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVj
dC5oIgogI2luY2x1ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXN5bmNG
aWxlU3lzdGVtLmgiCisjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0
b3JJbnNlcnRBY3Rpb24uaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxl
TWV0YWRhdGEuaCIKQEAgLTc0LDYgKzc1LDcgQEAKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgog
I2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0
aXZpdHkuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKICNpbmNsdWRlICJX
ZWJWaWRlb0ZyYW1lLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3Nl
cnRpb25zLmg+CkBAIC0zOTcsNiArMzk5LDkgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJGaWxlRXJyb3JQYXRoRXhpc3RzLCBGaWxlRXJyb3I6OlBBVEhfRVhJU1RTX0VSUikKIENP
TVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJt
aXNzaW9uRGVuaWVkLCBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkKTsKIENPTVBJ
TEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQb3NpdGlv
blVuYXZhaWxhYmxlLCBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlKTsKIAor
Q09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3Nw
ZWxsaW5nLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJ
TkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkJhZEdyYW1tYXIsIERvY3VtZW50TWFya2Vy
OjpHcmFtbWFyKTsKKwogI2lmIE9TKERBUldJTikKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VO
VU0oV2ViVGhlbWVFbmdpbmU6OlN0YXRlRGlzYWJsZWQsIENocm9taXVtQnJpZGdlOjpTdGF0ZURp
c2FibGVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGhlbWVFbmdpbmU6OlN0
YXRlSW5hY3RpdmUsIENocm9taXVtQnJpZGdlOjpTdGF0ZUluYWN0aXZlKTsKZGlmZiAtLWdpdCBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDE5YjU4NzMwOTIzMDVjODEwNjcwNGMx
M2ZjODIyZDMwYTg1MjBiMGQuLjQwMDljMWM2MWEyZDgyZjE0Mjc5ZjVhZWZlOWI0ODc4MThlMDQ4
MWUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAK
KysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAtNDAsNiAr
NDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIlBs
YXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVkZSAiU3Bl
bGxDaGVja2VyLmgiCiAKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCiAjaW5jbHVk
ZSAiV2ViQXV0b0ZpbGxDbGllbnQuaCIKQEAgLTg3MCw2ICs4NzEsMzAgQEAgdm9pZCBFZGl0b3JD
bGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRleHQsIGludCBs
ZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3RoOwogfQogCit2
b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tl
ciogc2VuZGVyLCBpbnQgc2VxdWVuY2UsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBBU1NF
UlQoIW1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5jb250YWlucyhzZXF1ZW5jZSkpOworICAgIG1f
cmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5zZXQoc2VxdWVuY2UsIHNlbmRlcik7CisgICAgbV93ZWJW
aWV3LT5jbGllbnQoKS0+cmVxdWVzdFRleHRDaGVjayhzZXF1ZW5jZSwgdGV4dCk7Cit9CisKK3N0
YXRpYyBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJW
ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBWZWN0b3I8U3Bl
bGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCByZXN1bHRzLnNpemUoKTsgKytpKQorICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoU3BlbGxD
aGVja2luZ1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4ocmVz
dWx0c1tpXS50eXBlKCkpLCByZXN1bHRzW2ldLnBvc2l0aW9uKCksIHJlc3VsdHNbaV0ubGVuZ3Ro
KCkpKTsKKyAgICByZXR1cm4gY29yZVJlc3VsdHM7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SW1w
bDo6ZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcoY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9u
c2UmIHJlc3BvbnNlKQoreworICAgIEhhc2hNYXA8aW50LCBTcGVsbENoZWNrZXIqPjo6aXRlcmF0
b3IgZm91bmQgPSBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuZmluZChyZXNwb25zZS5zZXF1ZW5j
ZSgpKTsKKyAgICBpZiAobV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmVuZCgpID09IGZvdW5kKQor
ICAgICAgICByZXR1cm47CisgICAgZm91bmQtPnNlY29uZC0+ZGlkQ2hlY2socmVzcG9uc2Uuc2Vx
dWVuY2UoKSwgdG9Db3JlUmVzdWx0cyhyZXNwb25zZS5yZXN1bHRzKCkpKTsKKyAgICBtX3JlcXVl
c3RpbmdTcGVsbENoZWNrZXIucmVtb3ZlKGZvdW5kKTsKK30KKwogU3RyaW5nIEVkaXRvckNsaWVu
dEltcGw6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0
cmluZyYgbWlzc3BlbGxlZFdvcmQpCiB7CiAgICAgaWYgKCEoaXNDb250aW51b3VzU3BlbGxDaGVj
a2luZ0VuYWJsZWQoKSAmJiBtX3dlYlZpZXctPmNsaWVudCgpKSkKZGlmZiAtLWdpdCBhL1dlYktp
dC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmgKaW5kZXggOWRiZDZhZmIzNzFkNjQxMmEwYWYyMGU4ZGI3Yjg1MThj
Nzg4N2UwZS4uYmJjYTMyZDNjMWU3YjljN2NlZWFmOWM5MDlkMDllYzRmOGU5MDc1NCAxMDA2NDQK
LS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKQEAgLTMyLDExICszMiwxNCBAQAogI2Rl
ZmluZSBFZGl0b3JDbGllbnRJbXBsX2gKIAogI2luY2x1ZGUgIkVkaXRvckNsaWVudC5oIgorI2lu
Y2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNp
bmNsdWRlIDx3dGYvRGVxdWUuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgU3BlbGxDaGVja2Vy
OwogfQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMSw3ICsxMTQsOCBAQCBwdWJsaWM6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5n
PiYgZ3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7
CiAgICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVj
a2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RG
OjpTdHJpbmcmKTsKKyAgICB2b2lkIGRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKGNvbnN0IFdl
YlRleHRDaGVja2luZ1Jlc3BvbnNlJik7CiAKICAgICAvLyBTaG93cyB0aGUgZm9ybSBhdXRvZmls
bCBwb3B1cCBmb3IgfG5vZGV8IGlmIGl0IGlzIGFuIEhUTUxJbnB1dEVsZW1lbnQgYW5kCiAgICAg
Ly8gaXQgaXMgZW1wdHkuICBUaGlzIGlzIGNhbGxlZCB3aGVuIHlvdSBwcmVzcyB0aGUgdXAgb3Ig
ZG93biBhcnJvdyBpbiBhCkBAIC0xOTAsNiArMTk0LDggQEAgcHJpdmF0ZToKICAgICAgICAgYm9v
bCBiYWNrc3BhY2VPckRlbGV0ZVByZXNzZWQ7CiAgICAgfTsKICAgICBPd25QdHI8QXV0b2ZpbGxB
cmdzPiBtX2F1dG9maWxsQXJnczsKKworICAgIEhhc2hNYXA8aW50LCBXZWJDb3JlOjpTcGVsbENo
ZWNrZXIqPiBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCBlNjA1NjJj
MDUxYjllMTc0OTlhMDUzYTEwMWI0MzNmYTNmMThjNzhkLi4xMWNmYjU5MGFhMmQ5ODQ5NTc1MGUx
ZWQ5YjE3OTgyNmIyZGE2MWQyIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwu
Y3BwCkBAIC0zMjQsNiArMzI0LDExIEBAIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRIeXBlcmxp
bmtBdWRpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEh5cGVy
bGlua0F1ZGl0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAg
ICBtX3NldHRpbmdzLT5zZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChlbmFibGVk
KTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChl
bmFibGVkKTsKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmggYi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IGZmZGM4ZDM5
MzE3MDE2NDliNzk1MTNmNjJlYTY1Y2E5MGMxMjJlNzIuLjBhNjQ3M2ZhMGUwMWEyYmE4ZWRkZDNi
NzMwZjczMDllMWNjMjlkMWQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApA
QCAtOTYsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVk
MmRDYW52YXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9v
bCk7CiAKIHByaXZhdGU6CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJ
bXBsLmNwcCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDQ0ZWZl
ZWE2MmEyNGIyODQxNzZhN2Y2MWNiOTRlYzg2MjYzZTQ4ZjAuLjk0ODg1ZTQxMzIwM2Y0YzFmY2Fh
MDE2ZjU3NDExMDA4ZTYyNzQwY2EgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC0xOTk1LDYgKzE5OTUsMTEgQEAgdm9pZCBXZWJWaWV3SW1wbDo6cGVyZm9ybUN1c3RvbUNvbnRl
eHRNZW51QWN0aW9uKHVuc2lnbmVkIGFjdGlvbikKICAgICBtX3BhZ2UtPmNvbnRleHRNZW51Q29u
dHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiB9CiAKK3ZvaWQgV2ViVmlld0ltcGw6OnJl
c3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmIHJlc3BvbnNlKQor
eworICAgIG1fZWRpdG9yQ2xpZW50SW1wbC5kaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhyZXNw
b25zZSk7Cit9CisKIC8vIFdlYlZpZXcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogYm9vbCBXZWJWaWV3SW1wbDo6
c2V0RHJvcEVmZmVjdChib29sIGFjY2VwdCkKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRl
eCBjOWVjYzE2Y2NhMGMwNjMwMWEwOWNkNDA3MGEzODIwYWM2MThlODRjLi4wZGRmOTQzYTQzYjlh
MTdkY2VlOGJjNmY5NDJmOWMxMzY3OTMzYWU5IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CkBAIC0xOTcsNiArMTk3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgdW5zaWduZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7
CiAgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25l
ZCBhY3Rpb24pOworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRl
eHRDaGVja2luZ1Jlc3BvbnNlJik7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>78656</attachid>
            <date>2011-01-11 22:31:32 -0800</date>
            <delta_ts>2011-01-17 04:44:37 -0800</delta_ts>
            <desc>addressed some feedback that is missed at the last patch</desc>
            <filename>bug-51013-20110112153130.patch</filename>
            <type>text/plain</type>
            <size>26306</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA3OGM1NTMxMGQ0OGRkNzczYjc1ZDMwYmQ4YzkxZTk5YjM1ZGI0ZWU5Li42ZWVlNzZi
OTY5Mjk0YWJlMDFjZmE0ZTNkNTBiNGI3M2Y4MmQyZWRhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDEtMTEgIEp1c3Rp
biBTY2h1aCAgPGpzY2h1aEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBjaHJv
bWl1bSBleHBlY3RhdGlvbnMgdXBkYXRlLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CmluZGV4IDg0Yjg1N2M4Y2NjNjE2ZGRkYzAz
MmRkY2VlOWU0NzZmNDNiNzExNTUuLmViZTQ0MGQ3NjFjNTMxNDliOGQ1N2M1ZDljNTM4YjhmNzJk
NjdmMzMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhw
ZWN0YXRpb25zLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKQEAgLTIyMjksMTAgKzIyMjksNiBAQCBCVUdXSzQxMzExIFdJTiBMSU5V
WCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwNy5odG1sID0gSU1BR0UKIEJVR1dL
NDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA4Lmh0bWwg
PSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVz
RG91YmxlMDkuaHRtbCA9IElNQUdFCiAKLS8vIE5lZWQgdG8gaW1wbGVtZW50IEVkaXRvckNsaWVu
dDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQotLy8gT3ZlcnJpZGVuIHdpdGggNjY2ODIKLS8v
IEJVR1dLNDE0MjMgV0lOIExJTlVYIDogZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3Rl
Lmh0bWwgPSBURVhUCi0KIC8vIEZsYWt5IHRlc3RzLgogQlVHQ1I0NDM0NSBMSU5VWCA6IHN2Zy96
b29tL3RleHQvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0UgUEFTUwogQlVHQ1I0NDM0
NiBMSU5VWCA6IHN2Zy96b29tL3BhZ2Uvem9vbS1oaXhpZS1taXhlZC0wMDkueG1sID0gSU1BR0Ug
UEFTUwpAQCAtMjk3Miw3ICsyOTY4LDYgQEAgQlVHQ1I2NjQ2NiBNQUMgV0lOIERFQlVHIFNMT1cg
OiBwZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgPSBQQVNTIFRFWFQKIEJVR0NSNjY1NTQgV0lO
IERFQlVHIDogZmFzdC9qcy9rZGUvZW5jb2RlX2RlY29kZV91cmkuaHRtbCA9IENSQVNIIFBBU1MK
IAogQlVHQ1I2NjY4MyBXSU4gTElOVVggOiBmYXN0L2NhbnZhcy9jYW52YXMtZHJhdy1jYW52YXMt
b24tY2FudmFzLXNoYWRvdy5odG1sID0gVEVYVAotQlVHQ1I2NjY4MiBXSU4gTElOVVggTUFDIDog
ZWRpdGluZy9zcGVsbGluZy9zcGVsbGNoZWNrLXBhc3RlLmh0bWwgPSBURVhUIFRJTUVPVVQKIEJV
R0NSNjY2ODYgOiBmYXN0L2xvYWRlci91c2VyLXN0eWxlc2hlZXQtZmFzdC1wYXRoLmh0bWwgPSBU
RVhUCiAKIEJVR0NSNjY3NTEgOiBodHRwL3Rlc3RzL2xvY2FsL2xpbmstc3R5bGVzaGVldC1sb2Fk
LW9yZGVyLXByZWxvYWQuaHRtbCA9IFRFWFQgVElNRU9VVCBQQVNTCmRpZmYgLS1naXQgYS9Ub29s
cy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZmYwOTUwMDQyMGE5ZTI1NThhZmZi
NzgxMWZlMWYxNDdiODI3YjNmYy4uMzgzNDJhZGM2MGMwMTVhZmY4OGQyODhmY2RjNmI4MGQwNjhj
OTI0NyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpA
QCAtMSwzICsxLDIxIEBACisyMDExLTAxLTExICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29n
bGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hl
Y2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD01MTAxMworCisgICAgICAgIEdhdmUgRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1
ZXN0VGV4dENoZWNrKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJl
c3BvbmRMYXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVxdWVz
dFRleHRDaGVjayk6IEFkZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc3BvbmRMYXN0VGV4
dENoZWNrKTogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmll
d0hvc3QuaDoKKwogMjAxMS0wMS0xMSAgRXJpYyBTZWlkZWwgIDxlcmljQHdlYmtpdC5vcmc+CiAK
ICAgICAgICAgVW5yZXZpZXdlZC4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCAwYjJjZmM5YWU0MDg2ZWZhMTMz
MWJiOGU0YmJjZTk4ZDJhYzc3Mzc5Li4xNjdkMDNjOTVkZjFmYTE1MWYwZWJkYTBjZTg3NmIzYWQ5
OWRhOTliIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjAsOSArNjIwLDExIEBAIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJndW1lbnRMaXN0
JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFy
Z3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiBh
cmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1wbGVtZW50
IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1swXS5pc0Jv
b2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50c1swXSkp
OworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250cm9sbGVy
OjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqIHJl
c3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVs
bENoZWNrLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5o
CmluZGV4IGRjZDM3ZjNlYjA1M2I1NDczY2MxYjk2NDI4NWRmOGI1N2RlY2RkZGYuLjZmNWFkZTJl
NTdlZTVjNTVjNTcwMTc3NTIwNWQxNDE0OGQ0NWY1NGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBS
ZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRl
clRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaApAQCAtNjMsNiArNjMsNyBAQCBwdWJsaWM6
CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQqIG1pc3NwZWxsZWRMZW5ndGgpOwogCiAgICAg
dm9pZCBmaWxsU3VnZ2VzdGlvbkxpc3QoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmIHdvcmQsIFZl
Y3RvcjxXZWJLaXQ6OldlYlN0cmluZz4qIHN1Z2dlc3Rpb25zKTsKKyAgICAKIHByaXZhdGU6CiAg
ICAgLy8gSW5pdGlhbGl6ZSB0aGUgaW50ZXJuYWwgcmVzb3VyY2VzIGlmIHdlIG5lZWQgdG8gaW5p
dGlhbGl6ZSBpdC4KICAgICAvLyBJbml0aWFsaXppbmcgdGhpcyBvYmplY3QgbWF5IHRha2UgbG9u
ZyB0aW1lLiBUbyBwcmV2ZW50IGZyb20gaHVydGluZwpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IGY1ZGQ3ZmRiYzUzOWMxNGMzOGYxYWJhZmJj
NmFjZmFlNzM3NWZhMzkuLjljZTJkMGQwNDkyMmMzZmQzYzE4YTIxYWQ2MTkxZDVhNmE2ZjMyN2Mg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAg
LTUyLDYgKzUyLDcgQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNo
SW5wdXRDb250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIK
KyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlVSTFJl
cXVlc3QuaCIKICNpbmNsdWRlICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcu
aCIKQEAgLTYwLDYgKzYxLDcgQEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3Vw
cG9ydC5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NP
d25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwogdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKQEAgLTQwOSw2ICs0MTEsNDAgQEAgdm9pZCBX
ZWJWaWV3SG9zdDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3Bl
bGxlZE9mZnNldCwgaW50JgogICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0LCAm
bWlzc3BlbGxlZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogfQogCitzdGF0aWMgdm9pZCBp
bnZva2VSZXNwb25kTGFzdFRleHRDaGVjayh2b2lkKiBjb250ZXh0KQoreworICAgIFdlYlZpZXdI
b3N0KiB3dmggPSBzdGF0aWNfY2FzdDxXZWJWaWV3SG9zdCo+KGNvbnRleHQpOworICAgIHd2aC0+
cmVzcG9uZExhc3RUZXh0Q2hlY2soKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVxdWVzdFRl
eHRDaGVjayhpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViU3RyaW5nJiB0ZXh0KQoreworICAgIG1f
bGFzdFJlcXVlc3RlZFRleHRDaGVja0lkZW50aWZpZXIgPSBpZGVudGlmaWVyOworICAgIG1fbGFz
dFJlcXVlc3RlZFRleHRDaGVja1N0cmluZyA9IHRleHQ7CisgICAgd2Via2l0X3N1cHBvcnQ6OlBv
c3REZWxheWVkVGFzayhpbnZva2VSZXNwb25kTGFzdFRleHRDaGVjaywgc3RhdGljX2Nhc3Q8dm9p
ZCo+KHRoaXMpLCAwKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVzcG9uZExhc3RUZXh0Q2hl
Y2soKQoreworICAgIFZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IHJlc3VsdHM7CisgICAg
Ly8gRklYTUU6IERvIHRoZSBncmFtbWFyIGNoZWNrLgorICAgIGludCBvZmZzZXQgPSAwOworICAg
IFN0cmluZyB0ZXh0KG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5kYXRhKCksIG1fbGFz
dFJlcXVlc3RlZFRleHRDaGVja1N0cmluZy5sZW5ndGgoKSk7CisgICAgd2hpbGUgKHRleHQubGVu
Z3RoKCkpIHsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRQb3NpdGlvbiA9IDA7CisgICAgICAgIGlu
dCBtaXNzcGVsbGVkTGVuZ3RoID0gMDsKKyAgICAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tX
b3JkKFdlYlN0cmluZyh0ZXh0LmNoYXJhY3RlcnMoKSwgdGV4dC5sZW5ndGgoKSksICZtaXNzcGVs
bGVkUG9zaXRpb24sICZtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgaWYgKCFtaXNzcGVsbGVk
TGVuZ3RoKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIHJlc3VsdHMuYXBwZW5kKFdlYlRl
eHRDaGVja2luZ1Jlc3VsdChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3NwZWxsaW5nLCBvZmZz
ZXQgKyBtaXNzcGVsbGVkUG9zaXRpb24sIG1pc3NwZWxsZWRMZW5ndGgpKTsKKyAgICAgICAgdGV4
dCA9IHRleHQuc3Vic3RyaW5nKG1pc3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgp
OworICAgICAgICBvZmZzZXQgKz0gbWlzc3BlbGxlZFBvc2l0aW9uOworICAgIH0KKworICAgIHdl
YlZpZXcoKS0+cmVzcG9uZFRleHRDaGVjayhXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZShtX2xhc3RS
ZXF1ZXN0ZWRUZXh0Q2hlY2tJZGVudGlmaWVyLCByZXN1bHRzKSk7Cit9CisKKwogV2ViU3RyaW5n
IFdlYlZpZXdIb3N0OjphdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJikKIHsKICAgICAv
LyBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBhcyBNYWMgV2ViS2l0ICgnV2ViS2l0U3VwcG9ydC9X
ZWJFZGl0b3JDbGllbnQubW0nKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZp
ZXdIb3N0LmgKaW5kZXggODZjMjNhNTYwN2JkODAyMTg1MmI1YjFlOWE0YWRlMDE2ZGM5OGU3NS4u
YzM3N2ZkN2EyNTc2ZTBkNmVmYTNkY2UzNmFhMTUzN2Q0ZTNlNzdjMiAxMDA2NDQKLS0tIGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xh
c3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2Vi
S2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwog
ICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDdXJyZW50S2V5Ym9hcmRFdmVudCgpOwogICAgIHZpcnR1
YWwgdm9pZCBzcGVsbENoZWNrKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50JiBvZmZzZXQs
IGludCYgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhpbnQgaWRl
bnRpZmllciwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFdlYktpdDo6
V2ViU3RyaW5nIGF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAg
IHZpcnR1YWwgdm9pZCBydW5Nb2RhbEFsZXJ0RGlhbG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgYm9vbCBydW5Nb2RhbENvbmZpcm1E
aWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CkBAIC0y
MDQsNyArMjA1LDEwIEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVibGljIFdlYktpdDo6V2ViVmll
d0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQsCiAgICAgdmlydHVhbCB2b2lk
IG9wZW5GaWxlU3lzdGVtKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW06
OlR5cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViS2l0OjpXZWJGaWxlU3lzdGVt
Q2FsbGJhY2tzKik7CiAKICAgICBXZWJLaXQ6OldlYkRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9j
ayogZGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKCk7CisgICAgCisgICAgLy8gU3BlbGxjaGVj
ayByZWxhdGVkIGhlbHBlciBBUElzCiAgICAgTW9ja1NwZWxsQ2hlY2sqIG1vY2tTcGVsbENoZWNr
KCk7CisgICAgdm9pZCByZXNwb25kTGFzdFRleHRDaGVjaygpOwogCiAgICAgLy8gR2VvbG9jYXRp
b24gY2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgogICAgIFdlYktpdDo6V2Vi
R2VvbG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKQEAgLTMxNyw2
ICszMjEsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29u
dHJvbGxlck1vY2s+IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIAogICAgIE93blB0cjxU
ZXN0TmF2aWdhdGlvbkNvbnRyb2xsZXIqPiBtX25hdmlnYXRpb25Db250cm9sbGVyOworCisgICAg
V2ViS2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nOworICAgIGlu
dCBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tJZGVudGlmaWVyOwogfTsKIAogI2VuZGlmIC8vIFdl
YlZpZXdIb3N0X2gKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9XZWJL
aXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGM5OGYxNWJhMWUxZTExYWQ0ODg0YjcwMjI5YzEy
NzU4ZjBiNzAwODYuLjlkM2QyNDdlYTJhYTdlODJjYTdhNzFiMWJkZWRjYjAzODVjYWEyNjAgMTAw
NjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTAxLTExICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBs
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVu
dDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisgICAgICAgIC0gQWRk
ZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAgICAtIEltcGxlbWVudGVkIEVk
aXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHB1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6Oldl
YlRleHRDaGVja2luZ1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5n
UmVzcG9uc2U6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdS
ZXNwb25zZTo6cmVzdWx0cyk6CisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3Vs
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0Ojp0eXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0Ojpwb3NpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjayk6
CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiAgICAgICAgCisgICAgICAg
ICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6IEdhdmUgYW4gaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50SW1wbDo6ZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcpOiBBZGVkLgor
ICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHA6IEFk
ZGVkIFdlYlRleHRDaGVja2luZ1Jlc3VsdCBjbGFzcy4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMDEtMTEgIFRvbnkgQ2hhbmcg
IDx0b255QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4K
ZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwIGIvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKaW5kZXggY2Q0OTllYjNmMjM3M2MxZDc0NGYyZDZkZTcyMDcyODZhOTM2NGYw
OS4uMzBhYmU1ZTViMjBlMmI5MmQyZjMyNmJjMjBhYmQ3YTZhZWU2ZTBmZSAxMDA2NDQKLS0tIGEv
V2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKKysrIGIvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAKQEAgLTI3Miw2ICsyNzIsOCBAQAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViU3RyaW5n
LmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dEFmZmluaXR5LmgnLAogICAgICAg
ICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oJywKKyAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgnLAorICAgICAgICAgICAgICAg
ICdwdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgnLAogICAgICAgICAgICAgICAgICdwdWJs
aWMvV2ViVGV4dERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJ
bnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApkaWZm
IC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IDA0NjdjOTY2YWE1ZmRhMjNkZGUzNDc4
ZDA0ZDI5ZGFiMjcxNjZhN2MuLjU1ZGI0NzVhODJmZjYwYTdhYzZmN2IyOGRmZDEwY2E1MzczYjI1
ZGUgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEwMSw2ICsxMDEsNyBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCkg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCkg
PSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJv
b2wpID0gMDsKIAogcHJvdGVjdGVkOgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwNjNiYjk3N2M0YTUyMjU0ZmNkYmZk
NDg5ZjQxYzUxMDEzYzM3YzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2Vi
VGV4dENoZWNraW5nUmVzcG9uc2VfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9o
CisKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKKworbmFtZXNwYWNlIFdlYktp
dCB7CisKK2NsYXNzIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlIHsKK3B1YmxpYzoKKyAgICBXZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZShpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViVmVjdG9yPFdlYlRl
eHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50
aWZpZXIpCisgICAgICAgICwgbV9yZXN1bHRzKHJlc3VsdHMpCisgICAgeworICAgIH0KKworICAg
IGludCBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgY29u
c3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mIHJlc3VsdHMoKSBjb25zdCB7IHJl
dHVybiBtX3Jlc3VsdHM7IH0KKworcHJpdmF0ZToKKyAgICBpbnQgbV9pZGVudGlmaWVyOworICAg
IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IG1fcmVzdWx0czsKK307CisKK30gLy8g
bmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9w
dWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmggYi9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDaGVja2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlZTY5MmMwZjVlMzE2Mjk4MDBkMTc2
M2M4MDMzYjEyNmNlNTdlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0
aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRl
eHRDaGVja2luZ1Jlc3VsdF9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisKKyNp
bmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNl
IFdlYktpdCB7CisKKy8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0IGNoZWNraW5nLgorY2xhc3Mg
V2ViVGV4dENoZWNraW5nUmVzdWx0IHsKK3B1YmxpYzoKKyAgICBlbnVtIFR5cGUgeworICAgICAg
ICBNaXNzcGVsbGluZyA9IDEgPDwgMCwKKyAgICAgICAgQmFkR3JhbW1hciA9IDEgPDwgMQorICAg
IH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KKyAgICBpbnQg
cG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgaW50IGxlbmd0aCgp
IGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQo
VHlwZSB0eXBlLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpIAorICAgICAgICA6IG1fdHlwZSh0
eXBlKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisgICAgICAgICwgbV9sZW5ndGgo
bGVuZ3RoKQorICAgIHsKKyAgICB9CisgICAgCitwcml2YXRlOgorICAgIFR5cGUgbV90eXBlOwor
ICAgIGludCBtX3Bvc2l0aW9uOworICAgIGludCBtX2xlbmd0aDsKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlldy5oIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKaW5kZXggNDI0Mzk5
OGVjMjEyOTQwNGNkNWFkODFkZjk0NjY1YzM2ZDc5ZTgyNS4uN2Y1MjVmOGZmMTUxZjI0ZDgzOWU3
MjU1Yjg1MDhmMmJiNGQyYmU1OSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJWaWV3LmgKKysrIGIvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgKQEAgLTUyLDYg
KzUyLDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBXZWJOb2RlOwogY2xh
c3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdS
ZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdDbGllbnQ7CiBzdHJ1Y3QgV2ViTWVkaWFQbGF5ZXJBY3Rp
b247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC0zMjUsNiArMzI2LDkgQEAgcHVibGljOgogICAgIC8v
IHRoZWlyIGxpbmtzLgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVzZXRWaXNpdGVkTGlu
a1N0YXRlKCk7CiAKKyAgICAvLyBTcGVsbCBjaGVja2luZyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2aXJ0dWFsIHZvaWQg
cmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpID0gMDsKIAog
ICAgIC8vIEN1c3RvbSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vcHVibGlj
L1dlYlZpZXdDbGllbnQuaCBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CmluZGV4IGEzYWQ5YjQ0ZmQzMzZhMGM4ZjIwMDc5ODg3ZmZhYmFjYzkxZDRhMzkuLjI5ZDZmMjMw
Yjc2Mzk3YjdkY2JhMTZkYjM3Y2JlMDg3Zjc5NWUzZDEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVmlld0NsaWVudC5oCkBAIC0xODUsNyArMTg1LDkgQEAgcHVibGljOgogICAgIC8vIGVycm9y
LCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRMZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZv
aWQgc3BlbGxDaGVjaygKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3Nw
ZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExlbmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0
cyBhc3luY2hyb25vdXMgc3BlbGwgYW5kIGdyYW1tYXIgY2hlY2tpbmcuIFRoZSByZXN1bHQgc2hv
dWxkIGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdlYlZpZXc6OnJlc3BvbmRUZXh0Q2hlY2soKQor
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNrKGludCBpZGVudGlmaWVyLCBjb25zdCBX
ZWJTdHJpbmcmKSB7IH0KICAgICAvLyBDb21wdXRlcyBhbiBhdXRvLWNvcnJlY3RlZCByZXBsYWNl
bWVudCBmb3IgYSBtaXNzcGVsbGVkIHdvcmQuICBJZiBubwogICAgIC8vIHJlcGxhY2VtZW50IGlz
IGZvdW5kLCB0aGVuIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIFdl
YlN0cmluZyBhdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkg
eyByZXR1cm4gV2ViU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAgYi9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNo
aW5nRW51bXMuY3BwCmluZGV4IGUxZWU0YTExNWE3MGNjNTMxMjk3MWRiMDQyYWY4YjkzYzgzMjAz
MGIuLjc3N2EzZmU0OTZjN2IzN2RlYmJjOTUzM2RkODU0YzJmOWJlOWY1MTIgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvV2ViS2l0
L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMzYsNiArMzYsNyBAQAog
I2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJBcHBsaWNhdGlvbkNh
Y2hlSG9zdC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUgIkRvY3Vt
ZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiRWRpdG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5jbHVkZSAi
RmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCkBAIC03NCw2ICs3NSw3IEBA
CiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIK
ICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCisjaW5jbHVkZSAiV2ViVGV4dENo
ZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1ZGUgIldl
YlZpZXcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzk3LDYgKzM5OSw5IEBA
IENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZUVycm9yUGF0aEV4aXN0cywgRmls
ZUVycm9yOjpQQVRIX0VYSVNUU19FUlIpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
Ykdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZCwgR2VvbG9jYXRpb25FcnJv
cjo6UGVybWlzc2lvbkRlbmllZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkdl
b2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZSwgR2VvbG9jYXRpb25FcnJv
cjo6UG9zaXRpb25VbmF2YWlsYWJsZSk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0o
V2ViVGV4dENoZWNraW5nUmVzdWx0OjpNaXNzcGVsbGluZywgRG9jdW1lbnRNYXJrZXI6OlNwZWxs
aW5nKTsKK0NPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0
OjpCYWRHcmFtbWFyLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1hcik7CisKICNpZiBPUyhEQVJXSU4p
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRoZW1lRW5naW5lOjpTdGF0ZURpc2Fi
bGVkLCBDaHJvbWl1bUJyaWRnZTo6U3RhdGVEaXNhYmxlZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRD
SElOR19FTlVNKFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0aXZlLCBDaHJvbWl1bUJyaWRnZTo6
U3RhdGVJbmFjdGl2ZSk7CmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwIGIvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApp
bmRleCAxOWI1ODczMDkyMzA1YzgxMDY3MDRjMTNmYzgyMmQzMGE4NTIwYjBkLi42YTkwMmNmM2Jk
MjY2YmY4ZTMyZDQ3MjU2ZDg4MjNmNDBhOGRiMWU2IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5jcHAKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUtl
eWJvYXJkRXZlbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJl
bmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogCiAjaW5jbHVkZSAiRE9N
VXRpbGl0aWVzUHJpdmF0ZS5oIgogI2luY2x1ZGUgIldlYkF1dG9GaWxsQ2xpZW50LmgiCkBAIC04
NzAsNiArODcxLDMwIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3Ry
aW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdM
ZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tl
ci5jb250YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnNl
dChpZGVudGlmaWVyLCBzZW5kZXIpOworICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVlc3RU
ZXh0Q2hlY2soaWRlbnRpZmllciwgdGV4dCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3BlbGxDaGVj
a2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5n
UmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gY29y
ZVJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytp
KQorICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoU3BlbGxDaGVja2luZ1Jlc3VsdChzdGF0aWNf
Y2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4ocmVzdWx0c1tpXS50eXBlKCkpLCByZXN1
bHRzW2ldLnBvc2l0aW9uKCksIHJlc3VsdHNbaV0ubGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gY29y
ZVJlc3VsdHM7Cit9CisKK3ZvaWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkUmVzcG9uZENoZWNraW5n
T2ZTdHJpbmcoY29uc3QgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAg
IEhhc2hNYXA8aW50LCBTcGVsbENoZWNrZXIqPjo6aXRlcmF0b3IgZm91bmQgPSBtX3JlcXVlc3Rp
bmdTcGVsbENoZWNrZXIuZmluZChyZXNwb25zZS5pZGVudGlmaWVyKCkpOworICAgIGlmIChtX3Jl
cXVlc3RpbmdTcGVsbENoZWNrZXIuZW5kKCkgPT0gZm91bmQpCisgICAgICAgIHJldHVybjsKKyAg
ICBmb3VuZC0+c2Vjb25kLT5kaWRDaGVjayhyZXNwb25zZS5pZGVudGlmaWVyKCksIHRvQ29yZVJl
c3VsdHMocmVzcG9uc2UucmVzdWx0cygpKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2Vy
LnJlbW92ZShmb3VuZCk7Cit9CisKIFN0cmluZyBFZGl0b3JDbGllbnRJbXBsOjpnZXRBdXRvQ29y
cmVjdFN1Z2dlc3Rpb25Gb3JNaXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRX
b3JkKQogewogICAgIGlmICghKGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYg
bV93ZWJWaWV3LT5jbGllbnQoKSkpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL0Vk
aXRvckNsaWVudEltcGwuaCBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5o
CmluZGV4IDlkYmQ2YWZiMzcxZDY0MTJhMGFmMjBlOGRiN2I4NTE4Yzc4ODdlMGUuLmJiY2EzMmQz
YzFlN2I5YzdjZWVhZjljOTA5ZDA5ZWM0ZjhlOTA3NTQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRp
dG9yQ2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQgQEAKICNkZWZpbmUgRWRpdG9yQ2xpZW50
SW1wbF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hl
Y2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVl
Lmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xh
c3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKIH0KIAogbmFtZXNwYWNl
IFdlYktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJl
cXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3Qg
V1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmlu
ZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAg
dm9pZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0gYXV0b2ZpbGwgcG9wdXAgZm9yIHxub2Rl
fCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFuZAogICAgIC8vIGl0IGlzIGVtcHR5LiAg
VGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhlIHVwIG9yIGRvd24gYXJyb3cgaW4gYQpA
QCAtMTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAgICAgIGJvb2wgYmFja3NwYWNlT3JEZWxl
dGVQcmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1dG9maWxsQXJncz4gbV9hdXRvZmlsbEFy
Z3M7CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6U3BlbGxDaGVja2VyKj4gbV9yZXF1ZXN0
aW5nU3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAgYi9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXggZTYwNTYyYzA1MWI5ZTE3NDk5YTA1M2Ex
MDFiNDMzZmEzZjE4Yzc4ZC4uMTFjZmI1OTBhYTJkOTg0OTU3NTBlMWVkOWIxNzk4MjZiMmRhNjFk
MiAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisr
KyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMzI0LDYgKzMy
NCwxMSBAQCB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKICAgICBtX3NldHRpbmdzLT5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJs
ZWQoZW5hYmxlZCk7CiB9CiAKK3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgV2Vi
U2V0dGluZ3NJbXBsOjpzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAg
ICAgbV9zZXR0aW5ncy0+c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1n
aXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZmRjOGQzOTMxNzAxNjQ5Yjc5NTEzZjYy
ZWE2NWNhOTBjMTIyZTcyLi4wYTY0NzNmYTBlMDFhMmJhOGVkZGQzYjczMGY3MzA5ZTFjYzI5ZDFk
IDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisrKyBi
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTk2LDYgKzk2LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChi
b29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKTsKKyAgICB2aXJ0
dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCk7CiAgICAg
dmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogCiBwcml2YXRlOgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAgYi9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCA0NGVmZWVhNjJhMjRiMjg0MTc2YTdm
NjFjYjk0ZWM4NjI2M2U0OGYwLi45NDg4NWU0MTMyMDNmNGMxZmNhYTAxNmY1NzQxMTAwOGU2Mjc0
MGNhIDEwMDY0NAotLS0gYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAorKysg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTk5NSw2ICsxOTk1LDEx
IEBAIHZvaWQgV2ViVmlld0ltcGw6OnBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNp
Z25lZCBhY3Rpb24pCiAgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJD
b250ZXh0TWVudSgpOwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpyZXNwb25kVGV4dENoZWNrKGNv
bnN0IFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2VkaXRvckNs
aWVudEltcGwuZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcocmVzcG9uc2UpOworfQorCiAvLyBX
ZWJWaWV3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIGJvb2wgV2ViVmlld0ltcGw6OnNldERyb3BFZmZlY3QoYm9v
bCBhY2NlcHQpCmRpZmYgLS1naXQgYS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgg
Yi9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggYzllY2MxNmNjYTBjMDYz
MDFhMDljZDQwNzBhMzgyMGFjNjE4ZTg0Yy4uMGRkZjk0M2E0M2I5YTE3ZGNlZThiYzZmOTQyZjlj
MTM2NzkzM2FlOSAxMDA2NDQKLS0tIGEvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5o
CisrKyBiL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaApAQCAtMTk3LDYgKzE5Nyw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVk
IGluYWN0aXZlQmFja2dyb3VuZENvbG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5zaWduZWQgaW5hY3RpdmVGb3JlZ3JvdW5kQ29sb3IpOwogICAgIHZpcnR1YWwgdm9p
ZCBwZXJmb3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKTsKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZSYpOwogCiAgICAgLy8gV2ViVmlld0ltcGwKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79153</attachid>
            <date>2011-01-17 04:44:42 -0800</date>
            <delta_ts>2011-01-26 01:01:08 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20110117214440.patch</filename>
            <type>text/plain</type>
            <size>26846</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1ODU0MWE1MGJiYTVkZGQ2YTdhNWM5YTA2YzllNTAxNzJmMTVhNmQyLi5jZDk3M2Qw
YTEzYWY2MDk2MTQxZjkxYTYwNmY0NDhkYTQ1NzllODhlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDEtMTQgIElseWEg
VGlraG9ub3Zza3kgIDxsb2lzbG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IFBhdmVsIEZlbGRtYW4uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90
ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5kZXggZjA5NmU5Y2E1ZTFkZTQyZjIyNGU0YWQzZDNhMjA4
YTA0MDgxOTAyZC4uNzZkYTViZDFmYjQyNWUyZDBlZDg0MTI0Y2FjYzg4MDFlZjJjNmZhMyAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMu
dHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25z
LnR4dApAQCAtMjIyOSwxMCArMjIyOSw2IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9i
b3JkZXJzL2JvcmRlclJhZGl1c0RvdWJsZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4g
TElOVVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdFCiBC
VUdXSzQxMzExIFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOS5o
dG1sID0gSU1BR0UKIAotLy8gTmVlZCB0byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0
Q2hlY2tpbmdPZlN0cmluZygpCi0vLyBPdmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0MTQy
MyBXSU4gTElOVVggOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRF
WFQKLQogLy8gRmxha3kgdGVzdHMuCiBCVUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96
b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVYIDog
c3ZnL3pvb20vcGFnZS96b29tLWhpeGllLW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBAIC0y
OTU4LDcgKzI5NTQsNiBAQCBCVUdDUjY2NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYvYXJy
YXktbmVzdGVkLWxvb3AuaHRtbCA9IFBBU1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcgOiBm
YXN0L2pzL2tkZS9lbmNvZGVfZGVjb2RlX3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdDUjY2
NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2FudmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52YXMt
c2hhZG93Lmh0bWwgPSBURVhUCi1CVUdDUjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4NiA6
IGZhc3QvbG9hZGVyL3VzZXItc3R5bGVzaGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAogQlVH
Q1I2Njc1MSA6IGh0dHAvdGVzdHMvbG9jYWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJl
bG9hZC5odG1sID0gVEVYVCBUSU1FT1VUIFBBU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5k
ZXggMDhiNWI2OGZhODMxZGY3ZTRmMWYyNDI2YTk2Mjk3MmNhNTU4YjJhOS4uNTljODRlNTc5NzQz
ZDVmZDIzOGFjNTQ0YmIzNTk1NmZlMzY5NjBjZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw0MiBAQAorMjAxMS0wMS0xNyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29v
Z2xlLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBbQ2hyb21pdW1dIFNob3VsZCBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENo
ZWNraW5nT2ZTdHJpbmcoKQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTEwMTMKKworICAgICAgICAtIEFkZGVkIFdlYlZpZXdDbGllbnQ6OnJlcXVlc3RU
ZXh0Q2hlY2soKSBhbmQgcmVsYXRlZCBjbGFzc2VzLgorICAgICAgICAtIEFkZGVkIFdlYlZpZXc6
OnJlc3BvbmRUZXh0Q2hlY2soKS4KKyAgICAgICAgLSBJbXBsZW1lbnRlZCBFZGl0b3JDbGllbnRJ
bXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpLgorCisgICAgICAgICogV2ViS2l0Lmd5cDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAgKiBwdWJsaWMvV2ViVGV4
dENoZWNraW5nUmVzcG9uc2UuaDogQWRkZWQgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UgY2xhc3Mu
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpXZWJUZXh0Q2hlY2tp
bmdSZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpp
ZGVudGlmaWVyKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6OnJl
c3VsdHMpOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaDogQWRkZWQu
CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6dHlwZSk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6cG9zaXRpb24pOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Omxlbmd0aCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlRleHRDaGVja2luZ1Jlc3VsdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0KToKKyAgICAgICAgKiBw
dWJsaWMvV2ViVmlldy5oOgorICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Q2xpZW50Lmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlZpZXdDbGllbnQ6OnJlcXVlc3RUZXh0Q2hlY2spOgorICAgICAgICAq
IHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDogICAgICAgIAorICAgICAgICAqIHNyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVx
dWVzdENoZWNraW5nT2ZTdHJpbmcpOiBHYXZlIGFuIGltcGxlbWVudGF0aW9uLgorICAgICAgICAo
V2ViS2l0Ojp0b0NvcmVSZXN1bHRzKTogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNs
aWVudEltcGw6OmRpZFJlc3BvbmRDaGVja2luZ09mU3RyaW5nKTogQWRlZC4KKyAgICAgICAgKiBz
cmMvRWRpdG9yQ2xpZW50SW1wbC5oOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKTogQWRkZWQuCisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5o
OgorICAgICAgICAqIHNyYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuY3BwOiBBZGRlZCBXZWJUZXh0
Q2hlY2tpbmdSZXN1bHQgY2xhc3MuCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnJlc3BvbmRUZXh0Q2hlY2spOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5oOgorCiAyMDExLTAxLTE3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdl
YmtpdC5vcmc+CiAKICAgICAgICAgVXBkYXRlIHBhdGggdG8gcmVmbGVjdCBuZXcgV2ViS2l0IGRp
cmVjdG9yeSBsb2NhdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2Vi
S2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCA4NWY2NzFk
Y2RiMGY2NGJjNWMxYjZlNjZhNTUxNzdhMzY2YmFjN2JkLi5jNDEzYzkxMDBmMTIzNGNkN2IxZDFi
ZWQ4NGFhZGNlODZlZDhiMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dl
YktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0yNzIs
NiArMjcyLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0cmluZy5oJywKICAgICAg
ICAgICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAgICAn
cHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCisgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oJywKKyAgICAgICAgICAgICAgICAncHVibGljL1dl
YlRleHRDaGVja2luZ1Jlc3VsdC5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRE
aXJlY3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgn
LAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmggYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCmluZGV4IGNjZmYyOGI4NmNiZDk4NDYxMzQz
M2NlMGE2MjExZDBhMzQxMmQ2NDguLjJjZWNmNGIzZTZiMzhhN2VlMDI1MDc2MDVjY2FkMTNmYWUz
NDQ2OTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRp
bmdzLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaApA
QCAtMTAxLDYgKzEwMSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0
ZWQyZENhbnZhc0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJ
bmZvRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0
aW5nRW5hYmxlZChib29sKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHNldEFzeW5jaHJvbm91c1Nw
ZWxsQ2hlY2tpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRC
cm93c2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2
ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKSA9IDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmggYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjUwNjNiYjk3N2M0YTUyMjU0ZmNkYmZkNDg5ZjQxYzUxMDEzYzM3YzgKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZS5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cyBhcmUKKyAqIG1ldDoKKyAqCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICog
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorICogaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJp
YnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVk
IGZyb20KKyAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisgKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQor
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlX2gK
KyNkZWZpbmUgV2ViVGV4dENoZWNraW5nUmVzcG9uc2VfaAorCisjaW5jbHVkZSAiV2ViVGV4dENo
ZWNraW5nUmVzdWx0LmgiCisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUZXh0Q2hl
Y2tpbmdSZXNwb25zZSB7CitwdWJsaWM6CisgICAgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UoaW50
IGlkZW50aWZpZXIsIGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1
bHRzKQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKQorICAgICAgICAsIG1fcmVz
dWx0cyhyZXN1bHRzKQorICAgIHsKKyAgICB9CisKKyAgICBpbnQgaWRlbnRpZmllcigpIGNvbnN0
IHsgcmV0dXJuIG1faWRlbnRpZmllcjsgfQorICAgIGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKCkgY29uc3QgeyByZXR1cm4gbV9yZXN1bHRzOyB9CisKK3By
aXZhdGU6CisgICAgaW50IG1faWRlbnRpZmllcjsKKyAgICBXZWJWZWN0b3I8V2ViVGV4dENoZWNr
aW5nUmVzdWx0PiBtX3Jlc3VsdHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVj
a2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlZTY5MmMwZjVlMzE2Mjk4MDBkMTc2M2M4MDMzYjEy
NmNlNTdlMGYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0
Q2hlY2tpbmdSZXN1bHRfaAorI2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAorCisjaW5j
bHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBX
ZWJLaXQgeworCisvLyBBIGNoZWNrZWQgZW50cnkgb2YgdGV4dCBjaGVja2luZy4KK2NsYXNzIFdl
YlRleHRDaGVja2luZ1Jlc3VsdCB7CitwdWJsaWM6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAg
TWlzc3BlbGxpbmcgPSAxIDw8IDAsCisgICAgICAgIEJhZEdyYW1tYXIgPSAxIDw8IDEKKyAgICB9
OworCisgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9CisgICAgaW50IHBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgV2ViVGV4dENoZWNraW5nUmVzdWx0KFR5
cGUgdHlwZSwgaW50IHBvc2l0aW9uLCBpbnQgbGVuZ3RoKSAKKyAgICAgICAgOiBtX3R5cGUodHlw
ZSkKKyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAgICAsIG1fbGVuZ3RoKGxl
bmd0aCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBUeXBlIG1fdHlwZTsKKyAg
ICBpbnQgbV9wb3NpdGlvbjsKKyAgICBpbnQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJWaWV3LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3LmgK
aW5kZXggNDI0Mzk5OGVjMjEyOTQwNGNkNWFkODFkZjk0NjY1YzM2ZDc5ZTgyNS4uN2Y1MjVmOGZm
MTUxZjI0ZDgzOWU3MjU1Yjg1MDhmMmJiNGQyYmU1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYlZpZXcuaApAQCAtNTIsNiArNTIsNyBAQCBjbGFzcyBXZWJHcmFwaGljc0NvbnRl
eHQzRDsKIGNsYXNzIFdlYk5vZGU7CiBjbGFzcyBXZWJTZXR0aW5nczsKIGNsYXNzIFdlYlN0cmlu
ZzsKK2NsYXNzIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlOwogY2xhc3MgV2ViVmlld0NsaWVudDsK
IHN0cnVjdCBXZWJNZWRpYVBsYXllckFjdGlvbjsKIHN0cnVjdCBXZWJQb2ludDsKQEAgLTMyNSw2
ICszMjYsOSBAQCBwdWJsaWM6CiAgICAgLy8gdGhlaXIgbGlua3MuCiAgICAgV0VCS0lUX0FQSSBz
dGF0aWMgdm9pZCByZXNldFZpc2l0ZWRMaW5rU3RhdGUoKTsKIAorICAgIC8vIFNwZWxsIGNoZWNr
aW5nIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KKworICAgIHZpcnR1YWwgdm9pZCByZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRD
aGVja2luZ1Jlc3BvbnNlJikgPSAwOwogCiAgICAgLy8gQ3VzdG9tIGNvbG9ycyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCAwOGZiOTQyNmE5
ODg3M2UzMGFlZjAzMmEwZGQ4OGNhNDZhMTIzYTRiLi5mMTFhZTNjNTYyYTg2MTUxMmRiOTIxZWE1
YTcxM2U4MTI2YjdmNDJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Vmlld0NsaWVudC5oCkBAIC0xNzMsNyArMTczLDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yLCB0
aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRMZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZvaWQg
c3BlbGxDaGVjaygKICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxs
ZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExlbmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0cyBh
c3luY2hyb25vdXMgc3BlbGwgYW5kIGdyYW1tYXIgY2hlY2tpbmcuIFRoZSByZXN1bHQgc2hvdWxk
IGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdlYlZpZXc6OnJlc3BvbmRUZXh0Q2hlY2soKQorICAg
IHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNrKGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJT
dHJpbmcmKSB7IH0KICAgICAvLyBDb21wdXRlcyBhbiBhdXRvLWNvcnJlY3RlZCByZXBsYWNlbWVu
dCBmb3IgYSBtaXNzcGVsbGVkIHdvcmQuICBJZiBubwogICAgIC8vIHJlcGxhY2VtZW50IGlzIGZv
dW5kLCB0aGVuIGFuIGVtcHR5IHN0cmluZyBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIFdlYlN0
cmluZyBhdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkgeyBy
ZXR1cm4gV2ViU3RyaW5nKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
QXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKaW5kZXggZTFlZTRhMTE1YTcwY2M1MzEyOTcxZGIwNDJh
ZjhiOTNjODMyMDMwYi4uNzc3YTNmZTQ5NmM3YjM3ZGViYmM5NTMzZGQ4NTRjMmY5YmU5ZjUxMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0Lmgi
CiAjaW5jbHVkZSAiQXBwbGljYXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBc3luY0ZpbGVT
eXN0ZW0uaCIKKyNpbmNsdWRlICJEb2N1bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIkVkaXRvcklu
c2VydEFjdGlvbi5oIgogI2luY2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVNZXRh
ZGF0YS5oIgpAQCAtNzQsNiArNzUsNyBAQAogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5j
bHVkZSAiV2ViVGV4dEFmZmluaXR5LmgiCiAjaW5jbHVkZSAiV2ViVGV4dENhc2VTZW5zaXRpdml0
eS5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlZp
ZGVvRnJhbWUuaCIKICNpbmNsdWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlv
bnMuaD4KQEAgLTM5Nyw2ICszOTksOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YkZpbGVFcnJvclBhdGhFeGlzdHMsIEZpbGVFcnJvcjo6UEFUSF9FWElTVFNfRVJSKQogQ09NUElM
RV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBlcm1pc3Np
b25EZW5pZWQsIEdlb2xvY2F0aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5h
dmFpbGFibGUsIEdlb2xvY2F0aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUpOwogCitDT01Q
SUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxp
bmcsIERvY3VtZW50TWFya2VyOjpTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6QmFkR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6Okdy
YW1tYXIpOworCiAjaWYgT1MoREFSV0lOKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShX
ZWJUaGVtZUVuZ2luZTo6U3RhdGVEaXNhYmxlZCwgQ2hyb21pdW1CcmlkZ2U6OlN0YXRlRGlzYWJs
ZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUaGVtZUVuZ2luZTo6U3RhdGVJ
bmFjdGl2ZSwgQ2hyb21pdW1CcmlkZ2U6OlN0YXRlSW5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCAxOWI1ODczMDkyMzA1
YzgxMDY3MDRjMTNmYzgyMmQzMGE4NTIwYjBkLi42YTkwMmNmM2JkMjY2YmY4ZTMyZDQ3MjU2ZDg4
MjNmNDBhOGRiMWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcApAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9h
cmRFdmVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVy
T2JqZWN0LmgiCisjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCiAKICNpbmNsdWRlICJET01VdGls
aXRpZXNQcml2YXRlLmgiCiAjaW5jbHVkZSAiV2ViQXV0b0ZpbGxDbGllbnQuaCIKQEAgLTg3MCw2
ICs4NzEsMzAgQEAgdm9pZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmco
Y29uc3QgVUNoYXIqIHRleHQsIGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0
aCA9IHNwZWxsTGVuZ3RoOwogfQogCit2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVj
a2luZ09mU3RyaW5nKFNwZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiB0ZXh0KQoreworICAgIEFTU0VSVCghbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuc2V0KGlk
ZW50aWZpZXIsIHNlbmRlcik7CisgICAgbV93ZWJWaWV3LT5jbGllbnQoKS0+cmVxdWVzdFRleHRD
aGVjayhpZGVudGlmaWVyLCB0ZXh0KTsKK30KKworc3RhdGljIFZlY3RvcjxTcGVsbENoZWNraW5n
UmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1
bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiBjb3JlUmVz
dWx0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyArK2kpCisg
ICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZChTcGVsbENoZWNraW5nUmVzdWx0KHN0YXRpY19jYXN0
PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPihyZXN1bHRzW2ldLnR5cGUoKSksIHJlc3VsdHNb
aV0ucG9zaXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSkpOworICAgIHJldHVybiBjb3JlUmVz
dWx0czsKK30KKwordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpkaWRSZXNwb25kQ2hlY2tpbmdPZlN0
cmluZyhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYgcmVzcG9uc2UpCit7CisgICAgSGFz
aE1hcDxpbnQsIFNwZWxsQ2hlY2tlcio+OjppdGVyYXRvciBmb3VuZCA9IG1fcmVxdWVzdGluZ1Nw
ZWxsQ2hlY2tlci5maW5kKHJlc3BvbnNlLmlkZW50aWZpZXIoKSk7CisgICAgaWYgKG1fcmVxdWVz
dGluZ1NwZWxsQ2hlY2tlci5lbmQoKSA9PSBmb3VuZCkKKyAgICAgICAgcmV0dXJuOworICAgIGZv
dW5kLT5zZWNvbmQtPmRpZENoZWNrKHJlc3BvbnNlLmlkZW50aWZpZXIoKSwgdG9Db3JlUmVzdWx0
cyhyZXNwb25zZS5yZXN1bHRzKCkpKTsKKyAgICBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIucmVt
b3ZlKGZvdW5kKTsKK30KKwogU3RyaW5nIEVkaXRvckNsaWVudEltcGw6OmdldEF1dG9Db3JyZWN0
U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmluZyYgbWlzc3BlbGxlZFdvcmQp
CiB7CiAgICAgaWYgKCEoaXNDb250aW51b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoKSAmJiBtX3dl
YlZpZXctPmNsaWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuaAppbmRleCA5ZGJkNmFmYjM3MWQ2NDEyYTBhZjIwZThkYjdiODUxOGM3ODg3ZTBl
Li5iYmNhMzJkM2MxZTdiOWM3Y2VlYWY5YzkwOWQwOWVjNGY4ZTkwNzU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCkBAIC0zMiwxMSArMzIsMTQg
QEAKICNkZWZpbmUgRWRpdG9yQ2xpZW50SW1wbF9oCiAKICNpbmNsdWRlICJFZGl0b3JDbGllbnQu
aCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIgogI2luY2x1ZGUgIlRpbWVy
LmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KIAog
bmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxs
Q2hlY2tlcjsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMTEsNyArMTE0LDggQEAgcHVi
bGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6
OlN0cmluZz4mIGd1ZXNzZXMpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RT
dGF0ZSgpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxl
ZCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNw
ZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9p
ZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNv
bnN0IFdURjo6U3RyaW5nJik7CisgICAgdm9pZCBkaWRSZXNwb25kQ2hlY2tpbmdPZlN0cmluZyhj
b25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZSYpOwogCiAgICAgLy8gU2hvd3MgdGhlIGZvcm0g
YXV0b2ZpbGwgcG9wdXAgZm9yIHxub2RlfCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRFbGVtZW50IGFu
ZAogICAgIC8vIGl0IGlzIGVtcHR5LiAgVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3UgcHJlc3MgdGhl
IHVwIG9yIGRvd24gYXJyb3cgaW4gYQpAQCAtMTkwLDYgKzE5NCw4IEBAIHByaXZhdGU6CiAgICAg
ICAgIGJvb2wgYmFja3NwYWNlT3JEZWxldGVQcmVzc2VkOwogICAgIH07CiAgICAgT3duUHRyPEF1
dG9maWxsQXJncz4gbV9hdXRvZmlsbEFyZ3M7CisKKyAgICBIYXNoTWFwPGludCwgV2ViQ29yZTo6
U3BlbGxDaGVja2VyKj4gbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJT
ZXR0aW5nc0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJ
bXBsLmNwcAppbmRleCBjNjZhNTdiOTFiMDc4NjI3NjA0MzYxYjFjM2FjNjQ0NmRiNmZlYTNmLi44
NjQwYzU4NWE0YTgzNjgwYjgxY2M4NDcwODUyY2ZlNWVlMDkwYTU2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKQEAgLTMyNCw2ICszMjQsMTEg
QEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29s
IGVuYWJsZWQpCiAgICAgbV9zZXR0aW5ncy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVu
YWJsZWQpOwogfQogCit2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIG1fc2V0dGluZ3MtPnNldEFzeW5j
aHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGVuYWJsZWQpOworfQorCiB2b2lkIFdlYlNldHRp
bmdzSW1wbDo6c2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1f
c2V0dGluZ3MtPnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAppbmRleCBmZWJjOTU5OGIwZTZhYjdj
NjVkMjI0NTU3ODQxMDFkODEzNTc0ZDY0Li5jNGMxZjEyNjFmOTE0NjhhNTM0MWYyYmM3ZmIzMzBk
ZGZmYjZjN2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0lt
cGwuaApAQCAtOTYsNiArOTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2Vs
ZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJ
bmZvRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdF
bmFibGVkKGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNr
aW5nRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJs
ZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25F
bmFibGVkKGJvb2wpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5j
cHAKaW5kZXggYmNkOTdjNDlkNjMzZjhmZTI2M2RmMzUxYWNjMDcwMjcxZmZlMDcxZC4uYzg4ZTY5
MTM4OTZhZDUxNDZhYzBjN2VhNzA2ODE3NzlmNThmOTVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcApAQCAtMTk5NCw2ICsxOTk0LDExIEBAIHZvaWQgV2Vi
Vmlld0ltcGw6OnBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24p
CiAgICAgbV9wYWdlLT5jb250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgp
OwogfQogCit2b2lkIFdlYlZpZXdJbXBsOjpyZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRD
aGVja2luZ1Jlc3BvbnNlJiByZXNwb25zZSkKK3sKKyAgICBtX2VkaXRvckNsaWVudEltcGwuZGlk
UmVzcG9uZENoZWNraW5nT2ZTdHJpbmcocmVzcG9uc2UpOworfQorCiAvLyBXZWJWaWV3IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIGJvb2wgV2ViVmlld0ltcGw6OnNldERyb3BFZmZlY3QoYm9vbCBhY2NlcHQpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAppbmRleCBiYzc5ZWMxZWYzZmYz
YmMzNzgyNzJhNGNmZDI5NzZkNDMzMWZiODkzLi5kNWZiMjU4ZGE0NTE3MWY3ZGY0MmExNDRmOWUw
YWQyMmEwZmEwYzhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmgK
QEAgLTE5Niw2ICsxOTYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUJhY2tncm91bmRDb2xvciwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGluYWN0aXZlRm9yZWdyb3VuZENvbG9yKTsK
ICAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybUN1c3RvbUNvbnRleHRNZW51QWN0aW9uKHVuc2lnbmVk
IGFjdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHJlc3BvbmRUZXh0Q2hlY2soY29uc3QgV2ViVGV4
dENoZWNraW5nUmVzcG9uc2UmKTsKIAogICAgIC8vIFdlYlZpZXdJbXBsCiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyYTAxZTgxMWU4NTg1Yjg2
NjQ4N2NhMmQ1MWRjYmY5YmU3YzZhNGNmLi42MjY5ZTg0ODI0OTExNTY4N2JlMTA3ZTFmOTdiNzZl
YmRhMTg0ZTFhIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRh
QGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgW0Nocm9taXVtXSBTaG91bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUxMDEzCisKKyAgICAgICAgR2F2ZSBEUlQgaW1wbGVtZW50YXRpb24gZm9y
IHJlcXVlc3RUZXh0Q2hlY2soKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVy
OjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEltcGxlbWVudGVkLgorICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmg6CisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwOgorICAgICAgICAoaW52
b2tlUmVzcG9uZExhc3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdIb3N0Ojpy
ZXF1ZXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVzcG9uZExh
c3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9X
ZWJWaWV3SG9zdC5oOgorCiAyMDExLTAxLTE2ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5v
cmc+CiAKICAgICAgICAgVXBkYXRlIG1vcmUgaW5jbHVkZSBwYXRocyB0byByZWZsZWN0IFdlYktp
dCBtb3ZlLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDBiMmNmYzlhZTQwODZlZmExMzMxYmI4ZTRiYmNlOThk
MmFjNzczNzkuLjE2N2QwM2M5NWRmMWZhMTUxZjBlYmRhMGNlODc2YjNhZDk5ZGE5OWIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAKQEAgLTYyMCw5ICs2MjAsMTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW4KICAg
ICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0Jiwg
Q3BwVmFyaWFudCopCit2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vdXNT
cGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3Bw
VmFyaWFudCogcmVzdWx0KQogewotICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBp
ZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAg
ICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCktPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGNwcFZhcmlhbnRUb0Jvb2woYXJndW1lbnRzWzBdKSk7CisgICAgcmVzdWx0
LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNw
ZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaCBiL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tTcGVsbENoZWNrLmgKaW5kZXggZGNkMzdm
M2ViMDUzYjU0NzNjYzFiOTY0Mjg1ZGY4YjU3ZGVjZGRkZi4uNmY1YWRlMmU1N2VlNWM1NWM1NzAx
Nzc1MjA1ZDE0MTQ4ZDQ1ZjU0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrU3BlbGxDaGVjay5oCkBAIC02Myw2ICs2Myw3IEBAIHB1YmxpYzoKICAgICAgICAgICAg
ICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZExlbmd0aCk7CiAKICAgICB2b2lkIGZpbGxTdWdn
ZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYgd29yZCwgVmVjdG9yPFdlYktpdDo6
V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMpOworICAgIAogcHJpdmF0ZToKICAgICAvLyBJbml0aWFs
aXplIHRoZSBpbnRlcm5hbCByZXNvdXJjZXMgaWYgd2UgbmVlZCB0byBpbml0aWFsaXplIGl0Lgog
ICAgIC8vIEluaXRpYWxpemluZyB0aGlzIG9iamVjdCBtYXkgdGFrZSBsb25nIHRpbWUuIFRvIHBy
ZXZlbnQgZnJvbSBodXJ0aW5nCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJW
aWV3SG9zdC5jcHAKaW5kZXggNjJkZjM5MGNjZGMwOTE0MDYzNWJjZDFhM2JlZDVjMjA1OTYwNDU3
MS4uNzU3ZmJiYzkwZDhjNmRhNjI1MzQ1ZDU1MmJiYzUyYmRiYjg3M2I1MyAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcApAQCAtNTIsNiArNTIsNyBA
QAogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRlICJXZWJTcGVlY2hJbnB1dENvbnRyb2xs
ZXJNb2NrLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5hbWVzcGFjZS5oIgorI2luY2x1ZGUgIldl
YlRleHRDaGVja2luZ1Jlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2lu
Y2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgpAQCAtNjAsNiAr
NjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5j
bHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBu
YW1lc3BhY2UgV2ViS2l0OwpAQCAtNDA5LDYgKzQxMSw0MCBAQCB2b2lkIFdlYlZpZXdIb3N0Ojpz
cGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBp
bnQmCiAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tXb3JkKHRleHQsICZtaXNzcGVsbGVkT2Zm
c2V0LCAmbWlzc3BlbGxlZExlbmd0aCk7CiB9CiAKK3N0YXRpYyB2b2lkIGludm9rZVJlc3BvbmRM
YXN0VGV4dENoZWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViVmlld0hvc3QqIHd2aCA9IHN0
YXRpY19jYXN0PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7CisgICAgd3ZoLT5yZXNwb25kTGFzdFRl
eHRDaGVjaygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXF1ZXN0VGV4dENoZWNrKGludCBp
ZGVudGlmaWVyLCBjb25zdCBXZWJTdHJpbmcmIHRleHQpCit7CisgICAgbV9sYXN0UmVxdWVzdGVk
VGV4dENoZWNrSWRlbnRpZmllciA9IGlkZW50aWZpZXI7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRfc3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNr
KGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDAp
OworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRDaGVjaygpCit7CisgICAg
VmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAvLyBGSVhNRTogRG8g
dGhlIGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7CisgICAgU3RyaW5nIHRleHQo
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4
dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4dC5sZW5ndGgoKSkgeworICAg
ICAgICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRM
ZW5ndGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5n
KHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwg
Jm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoV2ViVGV4dENoZWNraW5nUmVz
dWx0KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcsIG9mZnNldCArIG1pc3NwZWxs
ZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpOworICAgICAgICB0ZXh0ID0gdGV4dC5zdWJz
dHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0aCk7CisgICAgICAgIG9m
ZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb247CisgICAgfQorCisgICAgd2ViVmlldygpLT5yZXNw
b25kVGV4dENoZWNrKFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKG1fbGFzdFJlcXVlc3RlZFRleHRD
aGVja0lkZW50aWZpZXIsIHJlc3VsdHMpKTsKK30KKworCiBXZWJTdHJpbmcgV2ViVmlld0hvc3Q6
OmF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmKQogewogICAgIC8vIFJldHVybnMgYW4g
ZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdXZWJLaXRTdXBwb3J0L1dlYkVkaXRvckNsaWVu
dC5tbScpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAppbmRl
eCAwYTM2YWVjMGY0ZGQ4ZjFjMDQyMzgzODJjN2QxMWRhNjRhZDdiM2ZjLi45ZTVmN2QxYzA2NDI3
NTZiYjkzODk0YTM4M2I0ZTJjMjk5MDVkOGEzIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEyNiw2ICsxMjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9z
dCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1l
Q2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRFZGl0aW5nKCk7CiAgICAgdmlydHVhbCBi
b29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7CiAgICAgdmlydHVhbCB2b2lkIHNwZWxs
Q2hlY2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBpbnQmIG9mZnNldCwgaW50JiBsZW5ndGgp
OworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENoZWNrKGludCBpZGVudGlmaWVyLCBjb25z
dCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJTdHJpbmcgYXV0
b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lk
IHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNvbnN0IFdlYktpdDo6V2Vi
U3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmlybURpYWxvZyhXZWJLaXQ6
OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKQEAgLTIwNCw3ICsyMDUsMTAg
QEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJs
aWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0
ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBs
b25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsK
IAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrKiBkZXZpY2VPcmll
bnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAvLyBTcGVsbGNoZWNrIHJlbGF0ZWQgaGVs
cGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxsQ2hlY2soKTsKKyAgICB2b2lk
IHJlc3BvbmRMYXN0VGV4dENoZWNrKCk7CiAKICAgICAvLyBHZW9sb2NhdGlvbiBjbGllbnQgbW9j
a3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCiAgICAgV2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNs
aWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwpAQCAtMzE3LDYgKzMyMSw5IEBAIHBy
aXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyTW9jaz4g
bV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAgICAgT3duUHRyPFRlc3ROYXZpZ2F0aW9u
Q29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xsZXI7CisKKyAgICBXZWJLaXQ6OldlYlN0
cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmc7CisgICAgaW50IG1fbGFzdFJlcXVl
c3RlZFRleHRDaGVja0lkZW50aWZpZXI7CiB9OwogCiAjZW5kaWYgLy8gV2ViVmlld0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>80175</attachid>
            <date>2011-01-26 01:01:14 -0800</date>
            <delta_ts>2011-02-03 03:15:47 -0800</delta_ts>
            <desc>updated to ToT</desc>
            <filename>bug-51013-20110126180112.patch</filename>
            <type>text/plain</type>
            <size>26813</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA0NTk0YzkyMmZkNDcwMjE0N2MxMGQzNDRmMmU1ZGJkNTZjYzQxNTQzLi5iYjI5Mjgw
MGEyMjkyOTM3NzhhODc5NGZkZDdjNTZhOWRmZWUzODAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDEtMjUgIFl1em8g
RnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQ2hyb21p
dW0gdGVzdCBleHBlY3RhdGlvbiBjaGFuZ2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAppbmRleCAyMDg4ZjNiNWM1NjlhNGIzNzY4
YzA2MTlmMmYyYjdlNzRhODJhYmUyLi5mMjg2YTIzNTA4ZTZjYjY4ZjRmNzVmNGFjNjI5YzFlZWVm
NDY1N2VlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4
cGVjdGF0aW9ucy50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0CkBAIC0yMjEzLDEwICsyMjEzLDYgQEAgQlVHV0s0MTMxMSBXSU4gTElO
VVggOiBmYXN0L2JvcmRlcnMvYm9yZGVyUmFkaXVzRG91YmxlMDcuaHRtbCA9IElNQUdFCiBCVUdX
SzQxMzExIFdJTiBMSU5VWCA6IGZhc3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOC5odG1s
ID0gSU1BR0UKIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1
c0RvdWJsZTA5Lmh0bWwgPSBJTUFHRQogCi0vLyBOZWVkIHRvIGltcGxlbWVudCBFZGl0b3JDbGll
bnQ6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkKLS8vIE92ZXJyaWRlbiB3aXRoIDY2NjgyCi0v
LyBCVUdXSzQxNDIzIFdJTiBMSU5VWCA6IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0
ZS5odG1sID0gVEVYVAotCiAvLyBGbGFreSB0ZXN0cy4KIEJVR0NSNDQzNDUgTElOVVggOiBzdmcv
em9vbS90ZXh0L3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdFIFBBU1MKIEJVR0NSNDQz
NDYgTElOVVggOiBzdmcvem9vbS9wYWdlL3pvb20taGl4aWUtbWl4ZWQtMDA5LnhtbCA9IElNQUdF
IFBBU1MKQEAgLTI5NDAsNyArMjkzNiw2IEBAIEJVR0NSNjY0NjYgTUFDIFdJTiBERUJVRyBTTE9X
IDogcGVyZi9hcnJheS1uZXN0ZWQtbG9vcC5odG1sID0gUEFTUyBURVhUCiBCVUdDUjY2NTU0IFdJ
TiBERUJVRyA6IGZhc3QvanMva2RlL2VuY29kZV9kZWNvZGVfdXJpLmh0bWwgPSBDUkFTSCBQQVNT
CiAKIEJVR0NSNjY2ODMgV0lOIExJTlVYIDogZmFzdC9jYW52YXMvY2FudmFzLWRyYXctY2FudmFz
LW9uLWNhbnZhcy1zaGFkb3cuaHRtbCA9IFRFWFQKLUJVR0NSNjY2ODIgV0lOIExJTlVYIE1BQyA6
IGVkaXRpbmcvc3BlbGxpbmcvc3BlbGxjaGVjay1wYXN0ZS5odG1sID0gVEVYVCBUSU1FT1VUCiBC
VUdDUjY2Njg2IDogZmFzdC9sb2FkZXIvdXNlci1zdHlsZXNoZWV0LWZhc3QtcGF0aC5odG1sID0g
VEVYVAogCiBCVUdDUjY2NzUxIDogaHR0cC90ZXN0cy9sb2NhbC9saW5rLXN0eWxlc2hlZXQtbG9h
ZC1vcmRlci1wcmVsb2FkLmh0bWwgPSBURVhUIFRJTUVPVVQgUEFTUwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwppbmRleCBiYzkxZTY3OWY4ZGE2NTg2ZjY3Mjc3NWFkNzc4YjExOTEwZDFlYjAxLi4w
ODg0NjI0OWVkM2E5ZmM5MjNjNTE5MTY5OWYwOTI3ZWZiMzZlNWVkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDQyIEBACisyMDExLTAxLTE3ICBNT1JJVEEgSGFqaW1lICA8
bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBs
OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVu
dDo6cmVxdWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisgICAgICAgIC0gQWRk
ZWQgV2ViVmlldzo6cmVzcG9uZFRleHRDaGVjaygpLgorICAgICAgICAtIEltcGxlbWVudGVkIEVk
aXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkuCisKKyAgICAgICAgKiBX
ZWJLaXQuZ3lwOgorICAgICAgICAqIHB1YmxpYy9XZWJTZXR0aW5ncy5oOgorICAgICAgICAqIHB1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZCBXZWJUZXh0Q2hlY2tpbmdSZXNw
b25zZSBjbGFzcy4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6Oldl
YlRleHRDaGVja2luZ1Jlc3BvbnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5n
UmVzcG9uc2U6OmlkZW50aWZpZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdS
ZXNwb25zZTo6cmVzdWx0cyk6CisgICAgICAgICogcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3Vs
dC5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0Ojp0eXBl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0Ojpwb3NpdGlvbik6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6bGVuZ3RoKToKKyAgICAgICAg
KFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQpOgor
ICAgICAgICAqIHB1YmxpYy9XZWJWaWV3Lmg6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGll
bnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjayk6
CisgICAgICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOiAgICAgICAgCisgICAgICAg
ICogc3JjL0VkaXRvckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpFZGl0b3JDbGll
bnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyk6IEdhdmUgYW4gaW1wbGVtZW50YXRpb24u
CisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3VsdHMpOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6RWRpdG9yQ2xpZW50SW1wbDo6ZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcpOiBBZGVkLgor
ICAgICAgICAqIHNyYy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNldHRp
bmdzSW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNo
cm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBBZGRlZC4KKyAgICAgICAgKiBzcmMvV2ViU2V0
dGluZ3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5jcHA6IEFk
ZGVkIFdlYlRleHRDaGVja2luZ1Jlc3VsdCBjbGFzcy4KKyAgICAgICAgKiBzcmMvV2ViVmlld0lt
cGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayk6
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmg6CisKIDIwMTEtMDEtMjUgIEtlbnQgVGFtdXJh
ICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdHJpdmlhbCBjaGFu
Z2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggNTc3NTViMjliYTk3NGYwNzk2Y2Zl
N2MyZWFiNjA1MTE4ZGNlZmQ2Ni4uNGM1ODdlYjA3NzRhM2VkNTY0MDUzODllMDUxYzM1NzMyNTkw
YTZhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjczLDYgKzI3Myw4IEBACiAg
ICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdHJpbmcuaCcsCiAgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0
Q2FzZVNlbnNpdGl2aXR5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENoZWNr
aW5nUmVzcG9uc2UuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0RGlyZWN0aW9uLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dElucHV0VHlwZS5oJywKICAgICAgICAgICAg
ICAgICAncHVibGljL1dlYlRleHRSdW4uaCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJs
aWMvV2ViU2V0dGluZ3MuaAppbmRleCBlNGZkNTRkZTg5MDAyMmZlNjU5NmEwNTY2NjRlOTVmNDQ4
NmRiMTE3Li44MzRmMDVhZWI5YTgxZDY1ZmNhZjdhZTAzNzhhYTU0ZTI1NjdkMzhhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKQEAgLTEwNCw2ICsxMDQs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFi
bGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9v
bCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9v
bCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5h
YmxlZChib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlv
bkVuYWJsZWQoYm9vbCkgPSAwOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDYzYmI5Nzdj
NGE1MjI1NGZjZGJmZDQ4OWY0MWM1MTAxM2MzN2M4Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaApAQCAtMCww
ICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9oCisjZGVmaW5lIFdlYlRl
eHRDaGVja2luZ1Jlc3BvbnNlX2gKKworI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5o
IgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzcG9uc2Ug
eworcHVibGljOgorICAgIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKGludCBpZGVudGlmaWVyLCBj
b25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKKyAgICAgICAg
OiBtX2lkZW50aWZpZXIoaWRlbnRpZmllcikKKyAgICAgICAgLCBtX3Jlc3VsdHMocmVzdWx0cykK
KyAgICB7CisgICAgfQorCisgICAgaW50IGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2lk
ZW50aWZpZXI7IH0KKyAgICBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYg
cmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitwcml2YXRlOgorICAgIGlu
dCBtX2lkZW50aWZpZXI7CisgICAgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gbV9y
ZXN1bHRzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0Lmgg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZWU2OTJjMGY1ZTMxNjI5ODAwZDE3NjNjODAzM2IxMjZjZTU3ZTBmCi0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
CisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nUmVzdWx0
X2gKKyNkZWZpbmUgV2ViVGV4dENoZWNraW5nUmVzdWx0X2gKKworI2luY2x1ZGUgIldlYkNvbW1v
bi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8g
QSBjaGVja2VkIGVudHJ5IG9mIHRleHQgY2hlY2tpbmcuCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdS
ZXN1bHQgeworcHVibGljOgorICAgIGVudW0gVHlwZSB7CisgICAgICAgIE1pc3NwZWxsaW5nID0g
MSA8PCAwLAorICAgICAgICBCYWRHcmFtbWFyID0gMSA8PCAxCisgICAgfTsKKworICAgIFR5cGUg
dHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHlwZTsgfQorICAgIGludCBwb3NpdGlvbigpIGNvbnN0
IHsgcmV0dXJuIG1fcG9zaXRpb247IH0KKyAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4g
bV9sZW5ndGg7IH0KKworICAgIFdlYlRleHRDaGVja2luZ1Jlc3VsdChUeXBlIHR5cGUsIGludCBw
b3NpdGlvbiwgaW50IGxlbmd0aCkgCisgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwg
bV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBtX2xlbmd0aChsZW5ndGgpCisgICAgewor
ICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgVHlwZSBtX3R5cGU7CisgICAgaW50IG1fcG9zaXRp
b247CisgICAgaW50IG1fbGVuZ3RoOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5o
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlldy5oCmluZGV4IDQyNDM5OThl
YzIxMjk0MDRjZDVhZDgxZGY5NDY2NWMzNmQ3OWU4MjUuLjdmNTI1ZjhmZjE1MWYyNGQ4MzllNzI1
NWI4NTA4ZjJiYjRkMmJlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
LmgKQEAgLTUyLDYgKzUyLDcgQEAgY2xhc3MgV2ViR3JhcGhpY3NDb250ZXh0M0Q7CiBjbGFzcyBX
ZWJOb2RlOwogY2xhc3MgV2ViU2V0dGluZ3M7CiBjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJU
ZXh0Q2hlY2tpbmdSZXNwb25zZTsKIGNsYXNzIFdlYlZpZXdDbGllbnQ7CiBzdHJ1Y3QgV2ViTWVk
aWFQbGF5ZXJBY3Rpb247CiBzdHJ1Y3QgV2ViUG9pbnQ7CkBAIC0zMjUsNiArMzI2LDkgQEAgcHVi
bGljOgogICAgIC8vIHRoZWlyIGxpbmtzLgogICAgIFdFQktJVF9BUEkgc3RhdGljIHZvaWQgcmVz
ZXRWaXNpdGVkTGlua1N0YXRlKCk7CiAKKyAgICAvLyBTcGVsbCBjaGVja2luZyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICB2
aXJ0dWFsIHZvaWQgcmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZSYpID0gMDsKIAogICAgIC8vIEN1c3RvbSBjb2xvcnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggZmNjOTZlOTFkNGVkMDE3ZjE5ZDE4ZjJl
ZDU3OWYxMjEyOTRmMmE5OC4uYTZiNTNmOGYwMDJlZWM3M2JmMWIzMzBjOTdmZDE1MWQwN2Q0MDBi
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApA
QCAtMTc4LDcgKzE3OCw5IEBAIHB1YmxpYzoKICAgICAvLyBlcnJvciwgdGhlbiB1cG9uIHJldHVy
biBtaXNzcGVsbGVkTGVuZ3RoIGlzIDAuCiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soCiAg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQm
IG1pc3NwZWxsZWRMZW5ndGgpIHsgfQotCisgICAgLy8gUmVxdWVzdHMgYXN5bmNocm9ub3VzIHNw
ZWxsIGFuZCBncmFtbWFyIGNoZWNraW5nLiBUaGUgcmVzdWx0IHNob3VsZCBiZSByZXR1cm5lZCBi
eSAKKyAgICAvLyBXZWJWaWV3OjpyZXNwb25kVGV4dENoZWNrKCkKKyAgICB2aXJ0dWFsIHZvaWQg
cmVxdWVzdFRleHRDaGVjayhpbnQgaWRlbnRpZmllciwgY29uc3QgV2ViU3RyaW5nJikgeyB9CiAg
ICAgLy8gQ29tcHV0ZXMgYW4gYXV0by1jb3JyZWN0ZWQgcmVwbGFjZW1lbnQgZm9yIGEgbWlzc3Bl
bGxlZCB3b3JkLiAgSWYgbm8KICAgICAvLyByZXBsYWNlbWVudCBpcyBmb3VuZCwgdGhlbiBhbiBl
bXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgYXV0b0NvcnJl
Y3RXb3JkKGNvbnN0IFdlYlN0cmluZyYgbWlzc3BlbGxlZFdvcmQpIHsgcmV0dXJuIFdlYlN0cmlu
ZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRj
aGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwCmluZGV4IGU4OWZiNzQ1ZTk4NjZiMzNhYzgwNTQ5MzRlZGMwZjRjNDcyNzY1NjYu
LjA1ZDU3NGMwZGZjNDgzNTBjZTdkNzJhNzU5ZmU4NTMwM2Q2ZDE4MzYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBAIC0zNiw2
ICszNiw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1ZGUgIkFw
cGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgiCisjaW5j
bHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rpb24uaCIK
ICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIKQEAgLTc0
LDYgKzc1LDcgQEAKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldlYlRleHRB
ZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIKKyNpbmNsdWRl
ICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJWaWRlb0ZyYW1lLmgiCiAj
aW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBAIC0zOTcs
NiArMzk5LDkgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJyb3JQYXRo
RXhpc3RzLCBGaWxlRXJyb3I6OlBBVEhfRVhJU1RTX0VSUikKIENPTVBJTEVfQVNTRVJUX01BVENI
SU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVkLCBHZW9s
b2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkKTsKIENPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxlLCBHZW9s
b2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlKTsKIAorQ09NUElMRV9BU1NFUlRfTUFU
Q0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Ok1pc3NwZWxsaW5nLCBEb2N1bWVudE1h
cmtlcjo6U3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ6OkJhZEdyYW1tYXIsIERvY3VtZW50TWFya2VyOjpHcmFtbWFyKTsKKwogI2lm
IE9TKERBUldJTikKIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGhlbWVFbmdpbmU6
OlN0YXRlRGlzYWJsZWQsIFBsYXRmb3JtQnJpZGdlOjpTdGF0ZURpc2FibGVkKTsKIENPTVBJTEVf
QVNTRVJUX01BVENISU5HX0VOVU0oV2ViVGhlbWVFbmdpbmU6OlN0YXRlSW5hY3RpdmUsIFBsYXRm
b3JtQnJpZGdlOjpTdGF0ZUluYWN0aXZlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAKaW5kZXggNjg2OTRjMmVmZTMxNGQxOGRiOTViOTAxNGQ3
M2JlOGZkNTdiZWExZC4uYTljNTc2MGExMDU4Mjk2OWFjODZlMWNlNDE0OGU5NWY5OWExNDJlZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5j
cHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAK
QEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJQbGF0Zm9ybUtleWJvYXJkRXZlbnQuaCIKICNp
bmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2lu
Y2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgogCiAjaW5jbHVkZSAiRE9NVXRpbGl0aWVzUHJpdmF0ZS5o
IgogI2luY2x1ZGUgIldlYkF1dG9GaWxsQ2xpZW50LmgiCkBAIC04NzYsNiArODc3LDMwIEBAIHZv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0
ZXh0LCBpbnQgbGVuZ3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0
aDsKIH0KIAordm9pZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhT
cGVsbENoZWNrZXIqIHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCkK
K3sKKyAgICBBU1NFUlQoIW1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlci5jb250YWlucyhpZGVudGlm
aWVyKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnNldChpZGVudGlmaWVyLCBzZW5k
ZXIpOworICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVlc3RUZXh0Q2hlY2soaWRlbnRpZmll
ciwgdGV4dCk7Cit9CisKK3N0YXRpYyBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gdG9Db3Jl
UmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVzdWx0cykK
K3sKKyAgICBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3VsdD4gY29yZVJlc3VsdHM7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUoKTsgKytpKQorICAgICAgICBjb3JlUmVz
dWx0cy5hcHBlbmQoU3BlbGxDaGVja2luZ1Jlc3VsdChzdGF0aWNfY2FzdDxEb2N1bWVudE1hcmtl
cjo6TWFya2VyVHlwZT4ocmVzdWx0c1tpXS50eXBlKCkpLCByZXN1bHRzW2ldLnBvc2l0aW9uKCks
IHJlc3VsdHNbaV0ubGVuZ3RoKCkpKTsKKyAgICByZXR1cm4gY29yZVJlc3VsdHM7Cit9CisKK3Zv
aWQgRWRpdG9yQ2xpZW50SW1wbDo6ZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcoY29uc3QgV2Vi
VGV4dENoZWNraW5nUmVzcG9uc2UmIHJlc3BvbnNlKQoreworICAgIEhhc2hNYXA8aW50LCBTcGVs
bENoZWNrZXIqPjo6aXRlcmF0b3IgZm91bmQgPSBtX3JlcXVlc3RpbmdTcGVsbENoZWNrZXIuZmlu
ZChyZXNwb25zZS5pZGVudGlmaWVyKCkpOworICAgIGlmIChtX3JlcXVlc3RpbmdTcGVsbENoZWNr
ZXIuZW5kKCkgPT0gZm91bmQpCisgICAgICAgIHJldHVybjsKKyAgICBmb3VuZC0+c2Vjb25kLT5k
aWRDaGVjayhyZXNwb25zZS5pZGVudGlmaWVyKCksIHRvQ29yZVJlc3VsdHMocmVzcG9uc2UucmVz
dWx0cygpKSk7CisgICAgbV9yZXF1ZXN0aW5nU3BlbGxDaGVja2VyLnJlbW92ZShmb3VuZCk7Cit9
CisKIFN0cmluZyBFZGl0b3JDbGllbnRJbXBsOjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JN
aXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQogewogICAgIGlmICgh
KGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgbV93ZWJWaWV3LT5jbGllbnQo
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKaW5k
ZXggOWRiZDZhZmIzNzFkNjQxMmEwYWYyMGU4ZGI3Yjg1MThjNzg4N2UwZS4uYmJjYTMyZDNjMWU3
YjljN2NlZWFmOWM5MDlkMDllYzRmOGU5MDc1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMzIsMTEgKzMyLDE0IEBACiAjZGVmaW5lIEVk
aXRvckNsaWVudEltcGxfaAogCiAjaW5jbHVkZSAiRWRpdG9yQ2xpZW50LmgiCisjaW5jbHVkZSAi
V2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaCIKICNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUg
PHd0Zi9EZXF1ZS5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIGNsYXNzIEhUTUxJbnB1dEVsZW1lbnQ7CitjbGFzcyBTcGVsbENoZWNrZXI7CiB9CiAK
IG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtMTExLDcgKzExNCw4IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVz
c2VzKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SW5wdXRNZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1
YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBp
bnQsIGNvbnN0IFdURjo6U3RyaW5nJikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNr
aW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmlu
ZyYpOworICAgIHZvaWQgZGlkUmVzcG9uZENoZWNraW5nT2ZTdHJpbmcoY29uc3QgV2ViVGV4dENo
ZWNraW5nUmVzcG9uc2UmKTsKIAogICAgIC8vIFNob3dzIHRoZSBmb3JtIGF1dG9maWxsIHBvcHVw
IGZvciB8bm9kZXwgaWYgaXQgaXMgYW4gSFRNTElucHV0RWxlbWVudCBhbmQKICAgICAvLyBpdCBp
cyBlbXB0eS4gIFRoaXMgaXMgY2FsbGVkIHdoZW4geW91IHByZXNzIHRoZSB1cCBvciBkb3duIGFy
cm93IGluIGEKQEAgLTE5MCw2ICsxOTQsOCBAQCBwcml2YXRlOgogICAgICAgICBib29sIGJhY2tz
cGFjZU9yRGVsZXRlUHJlc3NlZDsKICAgICB9OwogICAgIE93blB0cjxBdXRvZmlsbEFyZ3M+IG1f
YXV0b2ZpbGxBcmdzOworCisgICAgSGFzaE1hcDxpbnQsIFdlYkNvcmU6OlNwZWxsQ2hlY2tlcio+
IG1fcmVxdWVzdGluZ1NwZWxsQ2hlY2tlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNw
cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKaW5kZXgg
MDQ1N2Y3NzY4ODUyZTEyM2I3NTc0M2ZjYTE2YWZhOTZkYjA1ODlkNC4uNTQxNTVkZGZlM2QwMWMx
NmY4OTY2M2QyMTIzMmRhMTQ0ZmE0ZjlkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBAIHZvaWQgV2ViU2V0
dGluZ3NJbXBsOjpzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCBlbmFibGVkKQogICAg
IG1fc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChlbmFibGVkKTsKIH0KIAor
dm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVk
KGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRBc3luY2hyb25vdXNTcGVsbENo
ZWNraW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldENh
cmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3NldHRpbmdzLT5zZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNDk2MGJiOTNhNTk3N2FjZjk2MDc3ZmZjM2FkZTY2
NmM3YTI0NTZiOC4uYTAzMGNkM2FhMTYxZjFiY2U4ZmMxMGY4ZTMyZmJjOTUyMjkzMDZkOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKKysr
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKQEAgLTk3LDYg
Kzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFz
RW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sKTsK
KyAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9v
bCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpOwogICAg
IHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5hYmxlZChib29sKTsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDc5OGU1
ZmZlMjc3ZDllOTIwMDBiNDdhNWE4NjlhMjVmOGY1OWM2MTUuLjAyYTE4ODc3M2ZkMzdjMTFlYzg3
M2IxOWI5MDMyNDQ3ZTVjODM0NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJW
aWV3SW1wbC5jcHAKQEAgLTIwMDYsNiArMjAwNiwxMSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpwZXJm
b3JtQ3VzdG9tQ29udGV4dE1lbnVBY3Rpb24odW5zaWduZWQgYWN0aW9uKQogICAgIG1fcGFnZS0+
Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIH0KIAordm9pZCBX
ZWJWaWV3SW1wbDo6cmVzcG9uZFRleHRDaGVjayhjb25zdCBXZWJUZXh0Q2hlY2tpbmdSZXNwb25z
ZSYgcmVzcG9uc2UpCit7CisgICAgbV9lZGl0b3JDbGllbnRJbXBsLmRpZFJlc3BvbmRDaGVja2lu
Z09mU3RyaW5nKHJlc3BvbnNlKTsKK30KKwogLy8gV2ViVmlldyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBib29s
IFdlYlZpZXdJbXBsOjpzZXREcm9wRWZmZWN0KGJvb2wgYWNjZXB0KQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlZpZXdJbXBsLmgKaW5kZXggZDE2NGE0OGU5YWRiYTdiMzhmMTQ4YjIwNDU1
YWRhZDA3M2M3YjZjNy4uNzVkZTllYzEyMzQxMGE4NDcwY2ZlY2I1ZWI0ZmE1NWEwZTYxZTVmNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5oCkBAIC0xOTcsNiArMTk3
LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWdu
ZWQgaW5hY3RpdmVCYWNrZ3JvdW5kQ29sb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1bnNpZ25lZCBpbmFjdGl2ZUZvcmVncm91bmRDb2xvcik7CiAgICAgdmlydHVhbCB2
b2lkIHBlcmZvcm1DdXN0b21Db250ZXh0TWVudUFjdGlvbih1bnNpZ25lZCBhY3Rpb24pOworICAg
IHZpcnR1YWwgdm9pZCByZXNwb25kVGV4dENoZWNrKGNvbnN0IFdlYlRleHRDaGVja2luZ1Jlc3Bv
bnNlJik7CiAKICAgICAvLyBXZWJWaWV3SW1wbAogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYzVmNzE3OGRkNzU3ODAyZDcwODlmY2VmZmY0NjA1
YTI2MzNmNDE5My4uMTc3Nzg1YmFmN2M2MDViNDFlOWU3NmQxZWIxNmE0Y2Q0ZDNiNjViYSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIxIEBACisyMDExLTAxLTE3ICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1
bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01
MTAxMworCisgICAgICAgIEdhdmUgRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1ZXN0VGV4dENo
ZWNrKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9u
b3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oOgorICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZVJlc3BvbmRMYXN0
VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVxdWVzdFRleHRDaGVj
ayk6IEFkZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OnJlc3BvbmRMYXN0VGV4dENoZWNrKTog
QWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoK
KwogMjAxMS0wMS0yNSAgUGF0cmljayBHYW5zdGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IDdjMThkYTc5
NjQwNDdkNmE2Yzg2NGM2ZTc3NjA5NzI0MTUxZmQ1ZWYuLmE0NzlmMDM5ODNmMDdhNjkxNGYyNTQ3
OTA2MzRhMDBlZGYwNjUxZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTYyNyw5ICs2MjcsMTEgQEAgdm9p
ZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhjb25zdCBDcHBB
cmd1bWVudExpc3QmIGFyZ3VtZW4KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0KIAotdm9pZCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQo
Y29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopCit2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1
bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAgJiYgYXJndW1l
bnRzWzBdLmlzQm9vbCgpKQorICAgICAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNldHRpbmdzKCkt
PnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNwcFZhcmlhbnRUb0Jvb2woYXJn
dW1lbnRzWzBdKSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQgTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3Bw
VmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTW9ja1NwZWxsQ2hlY2suaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01vY2tT
cGVsbENoZWNrLmgKaW5kZXggZGNkMzdmM2ViMDUzYjU0NzNjYzFiOTY0Mjg1ZGY4YjU3ZGVjZGRk
Zi4uNmY1YWRlMmU1N2VlNWM1NWM1NzAxNzc1MjA1ZDE0MTQ4ZDQ1ZjU0ZiAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaAorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oCkBAIC02Myw2ICs2Myw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgIGludCogbWlzc3BlbGxlZExlbmd0
aCk7CiAKICAgICB2b2lkIGZpbGxTdWdnZXN0aW9uTGlzdChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYgd29yZCwgVmVjdG9yPFdlYktpdDo6V2ViU3RyaW5nPiogc3VnZ2VzdGlvbnMpOworICAgIAog
cHJpdmF0ZToKICAgICAvLyBJbml0aWFsaXplIHRoZSBpbnRlcm5hbCByZXNvdXJjZXMgaWYgd2Ug
bmVlZCB0byBpbml0aWFsaXplIGl0LgogICAgIC8vIEluaXRpYWxpemluZyB0aGlzIG9iamVjdCBt
YXkgdGFrZSBsb25nIHRpbWUuIFRvIHByZXZlbnQgZnJvbSBodXJ0aW5nCmRpZmYgLS1naXQgYS9U
b29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAgYi9Ub29scy9EdW1w
UmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKaW5kZXggMThiMTA3ZmY1OTJjZjZl
NzY0MjMzZWMyYmFmODk1ZWEzOGM5MTJjZS4uMWI0NzdmOTFhYWIzZGUyYjAyNjhlM2Y2NmQ1Yjg2
Zjk5MTJmYTA2MiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2Vi
Vmlld0hvc3QuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2luY2x1ZGUgIldlYlNpemUuaCIKICNpbmNsdWRl
ICJXZWJTcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrLmgiCiAjaW5jbHVkZSAiV2ViU3RvcmFnZU5h
bWVzcGFjZS5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlVSTFJlc3BvbnNlLmgiCiAjaW5jbHVk
ZSAiV2ViVmlldy5oIgpAQCAtNjAsNiArNjEsNyBAQAogI2luY2x1ZGUgIndlYmtpdC9zdXBwb3J0
L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KICNpbmNsdWRl
IDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogdXNpbmcgbmFt
ZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwpAQCAtNDA5LDYgKzQxMSw0
MCBAQCB2b2lkIFdlYlZpZXdIb3N0OjpzcGVsbENoZWNrKGNvbnN0IFdlYlN0cmluZyYgdGV4dCwg
aW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmCiAgICAgbV9zcGVsbGNoZWNrLnNwZWxsQ2hlY2tX
b3JkKHRleHQsICZtaXNzcGVsbGVkT2Zmc2V0LCAmbWlzc3BlbGxlZExlbmd0aCk7CiB9CiAKK3N0
YXRpYyB2b2lkIGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrKHZvaWQqIGNvbnRleHQpCit7Cisg
ICAgV2ViVmlld0hvc3QqIHd2aCA9IHN0YXRpY19jYXN0PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7
CisgICAgd3ZoLT5yZXNwb25kTGFzdFRleHRDaGVjaygpOworfQorCit2b2lkIFdlYlZpZXdIb3N0
OjpyZXF1ZXN0VGV4dENoZWNrKGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJTdHJpbmcmIHRleHQp
Cit7CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrSWRlbnRpZmllciA9IGlkZW50aWZpZXI7
CisgICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRf
c3VwcG9ydDo6UG9zdERlbGF5ZWRUYXNrKGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0
aWNfY2FzdDx2b2lkKj4odGhpcyksIDApOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25k
TGFzdFRleHRDaGVjaygpCit7CisgICAgVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVz
dWx0czsKKyAgICAvLyBGSVhNRTogRG8gdGhlIGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNl
dCA9IDA7CisgICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRh
dGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGls
ZSAodGV4dC5sZW5ndGgoKSkgeworICAgICAgICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsK
KyAgICAgICAgaW50IG1pc3NwZWxsZWRMZW5ndGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2su
c3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgp
KSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAo
IW1pc3NwZWxsZWRMZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5h
cHBlbmQoV2ViVGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3Bl
bGxpbmcsIG9mZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpOwor
ICAgICAgICB0ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3Bl
bGxlZExlbmd0aCk7CisgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb247CisgICAg
fQorCisgICAgd2ViVmlldygpLT5yZXNwb25kVGV4dENoZWNrKFdlYlRleHRDaGVja2luZ1Jlc3Bv
bnNlKG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja0lkZW50aWZpZXIsIHJlc3VsdHMpKTsKK30KKwor
CiBXZWJTdHJpbmcgV2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcm
KQogewogICAgIC8vIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdXZWJL
aXRTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbScpCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuaAppbmRleCA4M2QyMWRjNjM3ZTY3MGE3YWIwMjk0OGE0OTdlYmU4
OTk3ZWVjNjQ4Li5lM2VlMGE2ZmYzOTg0OTZjZGE5Y2VhZDhiYWYzZDAyYjNlM2M1MGM3IDEwMDY0
NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBi
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTEyNiw2ICsx
MjYsNyBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdDbGllbnQs
IHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBkaWRFbmRF
ZGl0aW5nKCk7CiAgICAgdmlydHVhbCBib29sIGhhbmRsZUN1cnJlbnRLZXlib2FyZEV2ZW50KCk7
CiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBp
bnQmIG9mZnNldCwgaW50JiBsZW5ndGgpOworICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENo
ZWNrKGludCBpZGVudGlmaWVyLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwogICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3Ry
aW5nJik7CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJG
cmFtZSosIGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1v
ZGFsQ29uZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJp
bmcmKTsKQEAgLTIwNyw3ICsyMDgsMTAgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2
aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2Vi
RmlsZVN5c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6Oldl
YkZpbGVTeXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRp
b25DbGllbnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAv
LyBTcGVsbGNoZWNrIHJlbGF0ZWQgaGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9j
a1NwZWxsQ2hlY2soKTsKKyAgICB2b2lkIHJlc3BvbmRMYXN0VGV4dENoZWNrKCk7CiAKICAgICAv
LyBHZW9sb2NhdGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCiAgICAg
V2ViS2l0OjpXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygp
OwpAQCAtMzIwLDYgKzMyNCw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3Bl
ZWNoSW5wdXRDb250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAg
ICAgT3duUHRyPFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xs
ZXI7CisKKyAgICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmc7CisgICAgaW50IG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja0lkZW50aWZpZXI7CiB9OwogCiAj
ZW5kaWYgLy8gV2ViVmlld0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81048</attachid>
            <date>2011-02-03 03:15:53 -0800</date>
            <delta_ts>2011-02-03 20:43:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20110203201551.patch</filename>
            <type>text/plain</type>
            <size>32418</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZjc4NjUwY2RlOWQyZmFkMjE0MmEyYmYzMDE1YjFmNzgwMmUzMmYxLi43NTViY2Uz
ZDk5NDM2Y2Y0NjlkMjIwNDVmZWU0MzA2YzBlYjMzYmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDItMDIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnRpbnVlIGlt
cG9ydGluZyBuZXcgZWRpdGluZyBsYXlvdXQgdGVzdCByZXN1bHRzIGZvciBHVEsuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZDk5Y2ZhOWJlNGIyYjk1NGEyZTA1OGJjODRhYjU1MzA5ZmFkOTMwZC4uNzQ1MDNhOTg2MzIx
ODk1MGRjMWMzMTY3ZTY5MzIwMjU5ZTdjNTJjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjE5MiwxMCArMjE5Miw2
IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdFCiBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOS5odG1sID0gSU1BR0UKIAotLy8gTmVlZCB0
byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCi0vLyBP
dmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0MTQyMyBXSU4gTElOVVggOiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQKLQogLy8gRmxha3kgdGVzdHMuCiBC
VUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96b29tLWhpeGllLW1peGVkLTAwOS54bWwg
PSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVYIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGll
LW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBAIC0yOTAwLDcgKzI4OTYsNiBAQCBCVUdDUjY2
NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYvYXJyYXktbmVzdGVkLWxvb3AuaHRtbCA9IFBB
U1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcgOiBmYXN0L2pzL2tkZS9lbmNvZGVfZGVjb2Rl
X3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdDUjY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUdD
UjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUu
aHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4NiA6IGZhc3QvbG9hZGVyL3VzZXItc3R5bGVz
aGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAogQlVHQ1I2Njc1MSA6IGh0dHAvdGVzdHMvbG9j
YWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sID0gVEVYVCBUSU1FT1VU
IFBBU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWJiMTM4M2ZkMDRkMzNiNjQxYWMy
ZDdkMzA4OTljZjRiYjg3ODk3Yy4uZWViOGUyMzYyMDY5ZDc0ZmRlZGVhM2VhODI5ZWZlMjZkNzIx
MGQ1NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw0NCBAQAorMjAxMS0w
Mi0wMyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNob3VsZCBpbXBs
ZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMKKworICAgICAg
ICAtIEFkZGVkIFdlYlRleHRDaGVja0NvbXBsZXRpb24gdG8gcmVjZWl2ZSB0aGUgY2hlY2tlZCBy
ZXN1bHQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVudDo6cmVx
dWVzdFRleHRDaGVjaygpIGFuZCByZWxhdGVkIGNsYXNzZXMuCisgICAgICAgIC0gSW1wbGVtZW50
ZWQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKS4KKworICAgICAg
ICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gYW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAg
ICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoKKyAgICAgICAg
KiBwdWJsaWMvV2ViVGV4dENoZWNrQ29tcGxldGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYktp
dDo6V2ViVGV4dENoZWNrQ29tcGxldGlvbjo6fldlYlRleHRDaGVja0NvbXBsZXRpb24pOgorICAg
ICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzcG9uc2U6Om1fcmVzdWx0cyk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3BvbnNlOjpyZXN1bHRzKToKKyAgICAgICAgKiBwdWJs
aWMvV2ViVGV4dENoZWNraW5nUmVzdWx0Lmg6IEFkZGVkLgorICAgICAgICAoV2ViS2l0OjpXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQ6OnR5cGUpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ6OnBvc2l0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVz
dWx0OjpsZW5ndGgpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6Oldl
YlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAgICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoK
KyAgICAgICAgKFdlYktpdDo6V2ViVmlld0NsaWVudDo6cmVxdWVzdFRleHRDaGVjayk6CisgICAg
ICAgICogc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwOgorICAgICAgICAqIHNyYy9FZGl0b3JD
bGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVz
dENoZWNraW5nT2ZTdHJpbmcpOiBHYXZlIGFuIGltcGxlbWVudGF0aW9uLgorICAgICAgICAqIHNy
Yy9FZGl0b3JDbGllbnRJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlNldHRpbmdzSW1wbC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYlNldHRpbmdzSW1wbDo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQpOgorICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuaDoKKyAgICAg
ICAgKiBzcmMvV2ViVGV4dENoZWNrQ29tcGxldGlvbkltcGwuY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYktpdDo6dG9Db3JlUmVzdWx0cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja0Nv
bXBsZXRpb25JbXBsOjpkaWRSZXNwb25kVGV4dENoZWNrKToKKyAgICAgICAgKiBzcmMvV2ViVGV4
dENoZWNrQ29tcGxldGlvbkltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRD
aGVja0NvbXBsZXRpb25JbXBsOjpXZWJUZXh0Q2hlY2tDb21wbGV0aW9uSW1wbCk6CisgICAgICAg
IChXZWJLaXQ6OldlYlRleHRDaGVja0NvbXBsZXRpb25JbXBsOjppZGVudGlmaWVyKToKKwogMjAx
MS0wMi0wMiAgRXZhbiBNYXJ0aW4gIDxldmFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJl
dmlld2VkLCBERVBTIGNoYW5nZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
V2ViS2l0Lmd5cCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cAppbmRleCAzOGFj
N2U3YWM0YTk1NjFmZGY1YjIxNTNjMzJmMDhkNzJjNmRlOWRlLi4zOTk5YWMyMTAxMGNlNTkyZDc3
MTMxZTc5NjEzZDM4MDZlN2NmMTg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L1dlYktpdC5neXAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCkBAIC0y
NzMsNiArMjczLDggQEAKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlN0cmluZy5oJywKICAg
ICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRBZmZpbml0eS5oJywKICAgICAgICAgICAgICAg
ICAncHVibGljL1dlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCcsCisgICAgICAgICAgICAgICAgJ3B1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCcsCisgICAgICAgICAgICAgICAgJ3B1YmxpYy9X
ZWJUZXh0Q2hlY2tDb21wbGV0aW9uLmgnLAogICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4
dERpcmVjdGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHRJbnB1dFR5cGUu
aCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0UnVuLmgnLApAQCAtNDAxLDYgKzQw
Myw4IEBACiAgICAgICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuY3BwJywK
ICAgICAgICAgICAgICAgICAnc3JjL1N0b3JhZ2VOYW1lc3BhY2VQcm94eS5oJywKICAgICAgICAg
ICAgICAgICAnc3JjL1RlbXBvcmFyeUdsdWUuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJU
ZXh0Q2hlY2tDb21wbGV0aW9uSW1wbC5oJywKKyAgICAgICAgICAgICAgICAnc3JjL1dlYlRleHRD
aGVja0NvbXBsZXRpb25JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1l
Q2hyb21pdW1JbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9WaWRlb0ZyYW1lQ2hyb21p
dW1JbXBsLmgnLAogICAgICAgICAgICAgICAgICdzcmMvV2ViQWNjZXNzaWJpbGl0eUNhY2hlLmNw
cCcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTZXR0aW5n
cy5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAppbmRleCBl
NGZkNTRkZTg5MDAyMmZlNjU5NmEwNTY2NjRlOTVmNDQ4NmRiMTE3Li44MzRmMDVhZWI5YTgxZDY1
ZmNhZjdhZTAzNzhhYTU0ZTI1NjdkMzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJTZXR0aW5ncy5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYlNldHRpbmdzLmgKQEAgLTEwNCw2ICsxMDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWVtb3J5SW5mb0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCkgPSAwOworICAgIHZpcnR1YWwgdm9p
ZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFs
IHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCkgPSAwOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tDb21w
bGV0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tDb21w
bGV0aW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMjg3ZDI2MDQyNmEzOTcxNGI1MDM5OGI0YTg2MjlhODllZmE0
NTMwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YlRleHRDaGVja0NvbXBsZXRpb24uaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4K
KyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBv
ZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUg
cHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hl
Y2tDb21wbGV0aW9uX2gKKyNkZWZpbmUgV2ViVGV4dENoZWNrQ29tcGxldGlvbl9oCisKKyNpbmNs
dWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKKyNp
bmNsdWRlICJXZWJWZWN0b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRl
eHRDaGVja2luZ1Jlc3BvbnNlOworCisvLyBHZXRzIGNhbGxlZCBiYWNrIHdoZW4gV2ViVmlld0Ns
aWVudCBmaW5pc2hlZCBhbiBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tpbmcuCitjbGFzcyBXZWJU
ZXh0Q2hlY2tDb21wbGV0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVy
KCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZXNwb25kVGV4dENoZWNrKGNvbnN0
IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgPSAwOworcHJvdGVjdGVkOgorICAg
IH5XZWJUZXh0Q2hlY2tDb21wbGV0aW9uKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJL
aXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJUZXh0Q2hlY2tpbmdSZXNwb25zZS5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMv
V2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZDhkMTg5Njc1YmEwNmE0Y2Zm
MGI5NDYxMDY0MDgzZmY5NmRiNTE1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzcG9uc2UuaApAQCAtMCwwICsxLDUzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICog
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
KyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
CisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZV9oCisjZGVmaW5lIFdlYlRleHRDaGVja2lu
Z1Jlc3BvbnNlX2gKKworI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ1Jlc3VsdC5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzcG9uc2UgeworcHVibGlj
OgorICAgIFdlYlRleHRDaGVja2luZ1Jlc3BvbnNlKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQ+JiByZXN1bHRzKQorICAgICAgICAsIG1fcmVzdWx0cyhyZXN1bHRzKQorICAg
IHsKKyAgICB9CisKKyAgICBjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYg
cmVzdWx0cygpIGNvbnN0IHsgcmV0dXJuIG1fcmVzdWx0czsgfQorCitwcml2YXRlOgorICAgIFdl
YlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+IG1fcmVzdWx0czsKK307CisKK30gLy8gbmFt
ZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVzdWx0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVlNjkyYzBmNWUz
MTYyOTgwMGQxNzYzYzgwMzNiMTI2Y2U1N2UwZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCkBAIC0wLDAgKzEs
NjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaWZuZGVmIFdlYlRleHRDaGVja2luZ1Jlc3VsdF9oCisjZGVmaW5lIFdlYlRleHRDaGVj
a2luZ1Jlc3VsdF9oCisKKyNpbmNsdWRlICJXZWJDb21tb24uaCIKKyNpbmNsdWRlICJXZWJWZWN0
b3IuaCIKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKy8vIEEgY2hlY2tlZCBlbnRyeSBvZiB0ZXh0
IGNoZWNraW5nLgorY2xhc3MgV2ViVGV4dENoZWNraW5nUmVzdWx0IHsKK3B1YmxpYzoKKyAgICBl
bnVtIFR5cGUgeworICAgICAgICBNaXNzcGVsbGluZyA9IDEgPDwgMCwKKyAgICAgICAgQmFkR3Jh
bW1hciA9IDEgPDwgMQorICAgIH07CisKKyAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBt
X3R5cGU7IH0KKyAgICBpbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9
CisgICAgaW50IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHQoVHlwZSB0eXBlLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpIAor
ICAgICAgICA6IG1fdHlwZSh0eXBlKQorICAgICAgICAsIG1fcG9zaXRpb24ocG9zaXRpb24pCisg
ICAgICAgICwgbV9sZW5ndGgobGVuZ3RoKQorICAgIHsKKyAgICB9CisgICAgCitwcml2YXRlOgor
ICAgIFR5cGUgbV90eXBlOworICAgIGludCBtX3Bvc2l0aW9uOworICAgIGludCBtX2xlbmd0aDsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCBmY2M5NmU5MWQ0ZWQwMTdmMTlk
MThmMmVkNTc5ZjEyMTI5NGYyYTk4Li5hMTZkOGU4ZGUxMDU2YzAzOWFmNTllMzA1Y2ZhMmVlZGIx
OWZjOTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3
Q2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVu
dC5oCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFdlYlJhbmdlOwogY2xhc3MgV2ViU3BlZWNoSW5w
dXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlN0
b3JhZ2VOYW1lc3BhY2U7CitjbGFzcyBXZWJUZXh0Q2hlY2tDb21wbGV0aW9uOwogY2xhc3MgV2Vi
VVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdlYlZpZXc7CkBAIC0xNzgsNyArMTc5
LDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yLCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRM
ZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjaygKICAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExl
bmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0cyBhc3luY2hyb25vdXMgc3BlbGwgYW5kIGdyYW1t
YXIgY2hlY2tpbmcuIFRoZSByZXN1bHQgc2hvdWxkIGJlIHJldHVybmVkIGJ5IAorICAgIC8vIFdl
YlZpZXc6OnJlc3BvbmRUZXh0Q2hlY2soKQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0VGV4dENo
ZWNrKGNvbnN0IFdlYlN0cmluZyYsIFdlYlRleHRDaGVja0NvbXBsZXRpb24qKSB7IH0KICAgICAv
LyBDb21wdXRlcyBhbiBhdXRvLWNvcnJlY3RlZCByZXBsYWNlbWVudCBmb3IgYSBtaXNzcGVsbGVk
IHdvcmQuICBJZiBubwogICAgIC8vIHJlcGxhY2VtZW50IGlzIGZvdW5kLCB0aGVuIGFuIGVtcHR5
IHN0cmluZyBpcyByZXR1cm5lZC4KICAgICB2aXJ0dWFsIFdlYlN0cmluZyBhdXRvQ29ycmVjdFdv
cmQoY29uc3QgV2ViU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkgeyByZXR1cm4gV2ViU3RyaW5nKCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5n
RW51bXMuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVt
cy5jcHAKaW5kZXggZTg5ZmI3NDVlOTg2NmIzM2FjODA1NDkzNGVkYzBmNGM0NzI3NjU2Ni4uMDVk
NTc0YzBkZmM0ODM1MGNlN2Q3MmE3NTlmZTg1MzAzZDZkMTgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdFbnVtcy5jcHAKQEAgLTM2LDYgKzM2
LDcgQEAKICNpbmNsdWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiQXBwbGlj
YXRpb25DYWNoZUhvc3QuaCIKICNpbmNsdWRlICJBc3luY0ZpbGVTeXN0ZW0uaCIKKyNpbmNsdWRl
ICJEb2N1bWVudE1hcmtlci5oIgogI2luY2x1ZGUgIkVkaXRvckluc2VydEFjdGlvbi5oIgogI2lu
Y2x1ZGUgIkZpbGVFcnJvci5oIgogI2luY2x1ZGUgIkZpbGVNZXRhZGF0YS5oIgpAQCAtNzQsNiAr
NzUsNyBAQAogI2luY2x1ZGUgIldlYlNldHRpbmdzLmgiCiAjaW5jbHVkZSAiV2ViVGV4dEFmZmlu
aXR5LmgiCiAjaW5jbHVkZSAiV2ViVGV4dENhc2VTZW5zaXRpdml0eS5oIgorI2luY2x1ZGUgIldl
YlRleHRDaGVja2luZ1Jlc3VsdC5oIgogI2luY2x1ZGUgIldlYlZpZGVvRnJhbWUuaCIKICNpbmNs
dWRlICJXZWJWaWV3LmgiCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KQEAgLTM5Nyw2ICsz
OTksOSBAQCBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYkZpbGVFcnJvclBhdGhFeGlz
dHMsIEZpbGVFcnJvcjo6UEFUSF9FWElTVFNfRVJSKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdf
RU5VTShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBlcm1pc3Npb25EZW5pZWQsIEdlb2xvY2F0
aW9uRXJyb3I6OlBlcm1pc3Npb25EZW5pZWQpOwogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5V
TShXZWJHZW9sb2NhdGlvbkVycm9yOjpFcnJvclBvc2l0aW9uVW5hdmFpbGFibGUsIEdlb2xvY2F0
aW9uRXJyb3I6OlBvc2l0aW9uVW5hdmFpbGFibGUpOwogCitDT01QSUxFX0FTU0VSVF9NQVRDSElO
R19FTlVNKFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcsIERvY3VtZW50TWFya2Vy
OjpTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRleHRDaGVja2lu
Z1Jlc3VsdDo6QmFkR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworCiAjaWYgT1Mo
REFSV0lOKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUaGVtZUVuZ2luZTo6U3Rh
dGVEaXNhYmxlZCwgUGxhdGZvcm1CcmlkZ2U6OlN0YXRlRGlzYWJsZWQpOwogQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJUaGVtZUVuZ2luZTo6U3RhdGVJbmFjdGl2ZSwgUGxhdGZvcm1C
cmlkZ2U6OlN0YXRlSW5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9F
ZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCA2ODY5NGMyZWZlMzE0ZDE4ZGI5NWI5MDE0ZDczYmU4
ZmQ1N2JlYTFkLi4yODQ2NmRjMzAyZWIxMDA1NTU4MTQwODVmMDUzZDdhMWY4ODk5OTJlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApAQCAt
NDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1
ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5jbHVk
ZSAiU3BlbGxDaGVja2VyLmgiCiAKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgiCiAj
aW5jbHVkZSAiV2ViQXV0b0ZpbGxDbGllbnQuaCIKQEAgLTU0LDYgKzU1LDcgQEAKICNpbmNsdWRl
ICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUmFuZ2Uu
aCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tD
b21wbGV0aW9uSW1wbC5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNsdWRlICJX
ZWJWaWV3SW1wbC5oIgogCkBAIC04NzYsNiArODc4LDExIEBAIHZvaWQgRWRpdG9yQ2xpZW50SW1w
bDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVuZ3RoLAog
ICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAordm9pZCBFZGl0
b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIqIHNlbmRl
ciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBtX3dlYlZpZXct
PmNsaWVudCgpLT5yZXF1ZXN0VGV4dENoZWNrKHRleHQsIG5ldyBXZWJUZXh0Q2hlY2tDb21wbGV0
aW9uSW1wbChpZGVudGlmaWVyLCBzZW5kZXIpKTsKK30KKwogU3RyaW5nIEVkaXRvckNsaWVudElt
cGw6OmdldEF1dG9Db3JyZWN0U3VnZ2VzdGlvbkZvck1pc3NwZWxsZWRXb3JkKGNvbnN0IFN0cmlu
ZyYgbWlzc3BlbGxlZFdvcmQpCiB7CiAgICAgaWYgKCEoaXNDb250aW51b3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoKSAmJiBtX3dlYlZpZXctPmNsaWVudCgpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuaAppbmRleCA5ZGJkNmFmYjM3MWQ2NDEyYTBhZjIw
ZThkYjdiODUxOGM3ODg3ZTBlLi5lNGE2YzRkMzBhMmFkZThhMzM1YjRjZjUzMmE2YWU4ZGQ3MTgx
ODUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5o
CkBAIC0zNyw2ICszNyw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIEhUTUxJbnB1
dEVsZW1lbnQ7CitjbGFzcyBTcGVsbENoZWNrZXI7CiB9CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTExLDcgKzExMiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV1RGOjpWZWN0b3I8V1RGOjpTdHJpbmc+JiBndWVzc2VzKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbFNldElucHV0TWV0aG9kU3RhdGUoKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0SW5wdXRN
ZXRob2RTdGF0ZShib29sIGVuYWJsZWQpOwotICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tp
bmdPZlN0cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5n
Jikge30KKyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6
U3BlbGxDaGVja2VyKiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpOwogCiAgICAgLy8gU2hvd3Mg
dGhlIGZvcm0gYXV0b2ZpbGwgcG9wdXAgZm9yIHxub2RlfCBpZiBpdCBpcyBhbiBIVE1MSW5wdXRF
bGVtZW50IGFuZAogICAgIC8vIGl0IGlzIGVtcHR5LiAgVGhpcyBpcyBjYWxsZWQgd2hlbiB5b3Ug
cHJlc3MgdGhlIHVwIG9yIGRvd24gYXJyb3cgaW4gYQpAQCAtMTkwLDYgKzE5MSw3IEBAIHByaXZh
dGU6CiAgICAgICAgIGJvb2wgYmFja3NwYWNlT3JEZWxldGVQcmVzc2VkOwogICAgIH07CiAgICAg
T3duUHRyPEF1dG9maWxsQXJncz4gbV9hdXRvZmlsbEFyZ3M7CisKIH07CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0
dGluZ3NJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1w
bC5jcHAKaW5kZXggMDQ1N2Y3NzY4ODUyZTEyM2I3NTc0M2ZjYTE2YWZhOTZkYjA1ODlkNC4uNTQx
NTVkZGZlM2QwMWMxNmY4OTY2M2QyMTIzMmRhMTQ0ZmE0ZjlkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCkBAIC0zMjksNiArMzI5LDExIEBA
IHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCBl
bmFibGVkKQogICAgIG1fc2V0dGluZ3MtPnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChlbmFi
bGVkKTsKIH0KIAordm9pZCBXZWJTZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hl
Y2tpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBtX3NldHRpbmdzLT5zZXRBc3luY2hy
b25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChlbmFibGVkKTsKK30KKwogdm9pZCBXZWJTZXR0aW5n
c0ltcGw6OnNldENhcmV0QnJvd3NpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKIHsKICAgICBtX3Nl
dHRpbmdzLT5zZXRDYXJldEJyb3dzaW5nRW5hYmxlZChlbmFibGVkKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmgKaW5kZXggNDk2MGJiOTNhNTk3N2FjZjk2
MDc3ZmZjM2FkZTY2NmM3YTI0NTZiOC4uYTAzMGNkM2FhMTYxZjFiY2U4ZmMxMGY4ZTMyZmJjOTUy
MjkzMDZkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGlu
Z3NJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBs
LmgKQEAgLTk3LDYgKzk3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRBY2NlbGVy
YXRlZDJkQ2FudmFzRW5hYmxlZChib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWVtb3J5SW5m
b0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldEh5cGVybGlua0F1ZGl0aW5nRW5h
YmxlZChib29sKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldENhcmV0QnJvd3NpbmdFbmFibGVk
KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRJbnRlcmFjdGl2ZUZvcm1WYWxpZGF0aW9uRW5h
YmxlZChib29sKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
VGV4dENoZWNrQ29tcGxldGlvbkltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViVGV4dENoZWNrQ29tcGxldGlvbkltcGwuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc0MjRlMWFhYTQxZmE2
MGU0MzM5ZjAyMzAwMWRhNmIyZTQ0ODVhYmEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tDb21wbGV0aW9uSW1wbC5jcHAKQEAgLTAsMCAr
MSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hlY2tDb21wbGV0
aW9uSW1wbC5oIgorCisjaW5jbHVkZSAiU3BlbGxDaGVja2VyLmgiCisKK3VzaW5nIG5hbWVzcGFj
ZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0IHsKKworc3RhdGljIFZlY3RvcjxTcGVsbENo
ZWNraW5nUmVzdWx0PiB0b0NvcmVSZXN1bHRzKGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ+JiByZXN1bHRzKQoreworICAgIFZlY3RvcjxTcGVsbENoZWNraW5nUmVzdWx0PiBj
b3JlUmVzdWx0czsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdHMuc2l6ZSgpOyAr
K2kpCisgICAgICAgIGNvcmVSZXN1bHRzLmFwcGVuZChTcGVsbENoZWNraW5nUmVzdWx0KHN0YXRp
Y19jYXN0PERvY3VtZW50TWFya2VyOjpNYXJrZXJUeXBlPihyZXN1bHRzW2ldLnR5cGUoKSksIHJl
c3VsdHNbaV0ucG9zaXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSkpOworICAgIHJldHVybiBj
b3JlUmVzdWx0czsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tDb21wbGV0aW9uSW1wbDo6ZGlkUmVz
cG9uZFRleHRDaGVjayhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYgcmVz
dWx0cykKK3sKKyAgICBtX3NwZWxsQ2hlY2tlci0+ZGlkQ2hlY2sobV9pZGVudGlmaWVyLCB0b0Nv
cmVSZXN1bHRzKHJlc3VsdHMpKTsKKyAgICBkZWxldGUgdGhpczsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0
Q2hlY2tDb21wbGV0aW9uSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVGV4
dENoZWNrQ29tcGxldGlvbkltcGwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jYzI4Zjg0ZTUzNTY4NTNiYmEzMjAz
NjZiOTczYTg2ZDk2NmJjNDAxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVGV4dENoZWNrQ29tcGxldGlvbkltcGwuaApAQCAtMCwwICsxLDU5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAq
IGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisg
KiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lm
bmRlZiBXZWJUZXh0Q2hlY2tDb21wbGV0aW9uSW1wbF9oCisjZGVmaW5lIFdlYlRleHRDaGVja0Nv
bXBsZXRpb25JbXBsX2gKKworI2luY2x1ZGUgIldlYlRleHRDaGVja0NvbXBsZXRpb24uaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworY2xhc3MgU3BlbGxDaGVja2VyOworfQorCituYW1lc3BhY2Ug
V2ViS2l0IHsKKworY2xhc3MgV2ViVGV4dENoZWNrQ29tcGxldGlvbkltcGwgOiBwdWJsaWMgV2Vi
VGV4dENoZWNrQ29tcGxldGlvbiB7CitwdWJsaWM6CisgICAgV2ViVGV4dENoZWNrQ29tcGxldGlv
bkltcGwoaW50IGlkZW50aWZpZXIsIFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogc3BlbGxjaGVja2Vy
KQorICAgICAgICA6IG1faWRlbnRpZmllcihpZGVudGlmaWVyKSwgbV9zcGVsbENoZWNrZXIoc3Bl
bGxjaGVja2VyKQorICAgIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGludCBpZGVudGlmaWVyKCkg
Y29uc3QgeyByZXR1cm4gbV9pZGVudGlmaWVyOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlc3Bv
bmRUZXh0Q2hlY2soY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKKwor
cHJpdmF0ZToKKyAgICBpbnQgbV9pZGVudGlmaWVyOworICAgIFdlYkNvcmU6OlNwZWxsQ2hlY2tl
ciogbV9zcGVsbENoZWNrZXI7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmNm
YTE5ZjYxYjNhNzNkOGMwNjQ3NWZhZTljOWI4ZWJhOWE0MGJiMy4uNGZmZjJjMmE4NzZhYjVlOTcz
ZGE5OTEyZTMwZTU1M2MyNjQ1NTljNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBi
L1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisyMDExLTAyLTAzICBNT1JJVEEgSGFq
aW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxkIGltcGxlbWVudCBFZGl0b3JDbGll
bnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisgICAgICAgIEdhdmUgRFJUIGltcGxl
bWVudGF0aW9uIGZvciByZXF1ZXN0VGV4dENoZWNrKCkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQpOiBJbXBs
ZW1lbnRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVj
ay5oOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoK
KyAgICAgICAgKGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChX
ZWJWaWV3SG9zdDo6cmVxdWVzdFRleHRDaGVjayk6IEFkZGVkLgorICAgICAgICAoV2ViVmlld0hv
c3Q6OnJlc3BvbmRMYXN0VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaDoKKwogMjAxMS0wMi0wMiAgRGlyayBQcmFua2UgIDxk
cHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBNaWhhaSBQYXJwYXJp
dGEuCmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAKaW5kZXggN2MxOGRhNzk2NDA0N2Q2YTZjODY0YzZlNzc2MDk3MjQxNTFm
ZDVlZi4uYTQ3OWYwMzk4M2YwN2E2OTE0ZjI1NDc5MDYzNGEwMGVkZjA2NTFmOSAxMDA2NDQKLS0t
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3Bw
CisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcApAQCAtNjI3LDkgKzYyNywxMSBAQCB2b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRB
bHdheXNBY2NlcHRDb29raWVzKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbgogICAgIHJl
c3VsdC0+c2V0TnVsbCgpOwogfQogCi12b2lkIExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBW
YXJpYW50KikKK3ZvaWQgTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxs
Q2hlY2tpbmdFbmFibGVkKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYgYXJndW1lbnRzLCBDcHBWYXJp
YW50KiByZXN1bHQpCiB7Ci0gICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzLgorICAgIGlmIChh
cmd1bWVudHMuc2l6ZSgpID4gMCAmJiBhcmd1bWVudHNbMF0uaXNCb29sKCkpCisgICAgICAgIG1f
c2hlbGwtPndlYlZpZXcoKS0+c2V0dGluZ3MoKS0+c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoY3BwVmFyaWFudFRvQm9vbChhcmd1bWVudHNbMF0pKTsKKyAgICByZXN1bHQtPnNl
dE51bGwoKTsKIH0KIAogdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2hvd1dlYkluc3BlY3Rv
cihjb25zdCBDcHBBcmd1bWVudExpc3QmLCBDcHBWYXJpYW50KiByZXN1bHQpCmRpZmYgLS1naXQg
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9Nb2NrU3BlbGxDaGVjay5oIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTW9ja1NwZWxsQ2hlY2suaAppbmRleCBkY2QzN2YzZWIw
NTNiNTQ3M2NjMWI5NjQyODVkZjhiNTdkZWNkZGRmLi42ZjVhZGUyZTU3ZWU1YzU1YzU3MDE3NzUy
MDVkMTQxNDhkNDVmNTRmIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9Nb2NrU3BlbGxDaGVjay5oCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL01v
Y2tTcGVsbENoZWNrLmgKQEAgLTYzLDYgKzYzLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgaW50KiBtaXNzcGVsbGVkTGVuZ3RoKTsKIAogICAgIHZvaWQgZmlsbFN1Z2dlc3Rp
b25MaXN0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiB3b3JkLCBWZWN0b3I8V2ViS2l0OjpXZWJT
dHJpbmc+KiBzdWdnZXN0aW9ucyk7CisgICAgCiBwcml2YXRlOgogICAgIC8vIEluaXRpYWxpemUg
dGhlIGludGVybmFsIHJlc291cmNlcyBpZiB3ZSBuZWVkIHRvIGluaXRpYWxpemUgaXQuCiAgICAg
Ly8gSW5pdGlhbGl6aW5nIHRoaXMgb2JqZWN0IG1heSB0YWtlIGxvbmcgdGltZS4gVG8gcHJldmVu
dCBmcm9tIGh1cnRpbmcKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L1dlYlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0LmNwcAppbmRleCAxOGIxMDdmZjU5MmNmNmU3NjQyMzNlYzJiYWY4OTVlYTM4YzkxMmNlLi5l
NTgxZGYzY2E1MzljZmI1YTAwNjg1ZTI0MWEzMDA4NjVlYThjYTk0IDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVt
cFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAj
aW5jbHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlck1v
Y2suaCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiV2ViVGV4
dENoZWNrQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTYwLDYgKzYxLDcg
QEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKQEAgLTQwOSw2ICs0MTEsNDEgQEAgdm9pZCBXZWJWaWV3SG9zdDo6c3BlbGxD
aGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNldCwgaW50Jgog
ICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0LCAmbWlzc3BlbGxlZE9mZnNldCwg
Jm1pc3NwZWxsZWRMZW5ndGgpOwogfQogCitzdGF0aWMgdm9pZCBpbnZva2VSZXNwb25kTGFzdFRl
eHRDaGVjayh2b2lkKiBjb250ZXh0KQoreworICAgIFdlYlZpZXdIb3N0KiB3dmggPSBzdGF0aWNf
Y2FzdDxXZWJWaWV3SG9zdCo+KGNvbnRleHQpOworICAgIHd2aC0+cmVzcG9uZExhc3RUZXh0Q2hl
Y2soKTsKK30KKwordm9pZCBXZWJWaWV3SG9zdDo6cmVxdWVzdFRleHRDaGVjayhjb25zdCBXZWJT
dHJpbmcmIHRleHQsIFdlYlRleHRDaGVja0NvbXBsZXRpb24qIGNvbXBsZXRpb24pCit7CisgICAg
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrQ29tcGxldGlvbiA9IGNvbXBsZXRpb247CisgICAgbV9s
YXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nID0gdGV4dDsKKyAgICB3ZWJraXRfc3VwcG9ydDo6
UG9zdERlbGF5ZWRUYXNrKGludm9rZVJlc3BvbmRMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2FzdDx2
b2lkKj4odGhpcyksIDApOworfQorCit2b2lkIFdlYlZpZXdIb3N0OjpyZXNwb25kTGFzdFRleHRD
aGVjaygpCit7CisgICAgVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAg
ICAvLyBGSVhNRTogRG8gdGhlIGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7Cisg
ICAgU3RyaW5nIHRleHQobV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9s
YXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4dC5s
ZW5ndGgoKSkgeworICAgICAgICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKKyAgICAgICAg
aW50IG1pc3NwZWxsZWRMZW5ndGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVj
a1dvcmQoV2ViU3RyaW5nKHRleHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3Nw
ZWxsZWRQb3NpdGlvbiwgJm1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3NwZWxs
ZWRMZW5ndGgpCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoV2Vi
VGV4dENoZWNraW5nUmVzdWx0KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6TWlzc3BlbGxpbmcsIG9m
ZnNldCArIG1pc3NwZWxsZWRQb3NpdGlvbiwgbWlzc3BlbGxlZExlbmd0aCkpOworICAgICAgICB0
ZXh0ID0gdGV4dC5zdWJzdHJpbmcobWlzc3BlbGxlZFBvc2l0aW9uICsgbWlzc3BlbGxlZExlbmd0
aCk7CisgICAgICAgIG9mZnNldCArPSBtaXNzcGVsbGVkUG9zaXRpb247CisgICAgfQorCisgICAg
bV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrQ29tcGxldGlvbi0+ZGlkUmVzcG9uZFRleHRDaGVjayhy
ZXN1bHRzKTsKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tDb21wbGV0aW9uID0gMDsKK30K
KworCiBXZWJTdHJpbmcgV2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJp
bmcmKQogewogICAgIC8vIFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdX
ZWJLaXRTdXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbScpCkBAIC0xMTE1LDYgKzExNTIsNyBAQCB2
b2lkIFdlYlZpZXdIb3N0OjpvcGVuRmlsZVN5c3RlbShXZWJGcmFtZSogZnJhbWUsIFdlYkZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgbG9uZwogV2ViVmlld0hvc3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVs
bCogc2hlbGwpCiAgICAgOiBtX3NoZWxsKHNoZWxsKQogICAgICwgbV93ZWJXaWRnZXQoMCkKKyAg
ICAsIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja0NvbXBsZXRpb24oMCkKIHsKICAgICByZXNldCgp
OwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hv
c3QuaCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXgg
ODNkMjFkYzYzN2U2NzBhN2FiMDI5NDhhNDk3ZWJlODk5N2VlYzY0OC4uMmRkMzM2NGEzMGY1Mzc3
YWIzZTllODMxZWRmNjMzNjE3NjZlMjVkNiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgV2ViVmlld0hvc3Qg
OiBwdWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNs
aWVudCwKICAgICB2aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogICAgIHZpcnR1YWwgYm9v
bCBoYW5kbGVDdXJyZW50S2V5Ym9hcmRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENo
ZWNrKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgaW50JiBvZmZzZXQsIGludCYgbGVuZ3RoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdFRleHRDaGVjayhjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIFdlYktpdDo6V2ViVGV4dENoZWNrQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwgV2ViS2l0
OjpXZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAg
ICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSosIGNv
bnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29uZmly
bURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKQEAg
LTIwNyw3ICsyMDgsMTAgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJW
aWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFsIHZv
aWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5c3Rl
bTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRN
b2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAvLyBTcGVsbGNo
ZWNrIHJlbGF0ZWQgaGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxsQ2hl
Y2soKTsKKyAgICB2b2lkIHJlc3BvbmRMYXN0VGV4dENoZWNrKCk7CiAKICAgICAvLyBHZW9sb2Nh
dGlvbiBjbGllbnQgbW9ja3MgZm9yIExheW91dFRlc3RDb250cm9sbGVyCiAgICAgV2ViS2l0OjpX
ZWJHZW9sb2NhdGlvbkNsaWVudE1vY2sqIGdlb2xvY2F0aW9uQ2xpZW50TW9jaygpOwpAQCAtMzIw
LDYgKzMyNCw5IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPFdlYktpdDo6V2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jaz4gbV9zcGVlY2hJbnB1dENvbnRyb2xsZXJNb2NrOwogCiAgICAgT3duUHRy
PFRlc3ROYXZpZ2F0aW9uQ29udHJvbGxlcio+IG1fbmF2aWdhdGlvbkNvbnRyb2xsZXI7CisKKyAg
ICBXZWJLaXQ6OldlYlN0cmluZyBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJpbmc7CisgICAg
V2ViS2l0OjpXZWJUZXh0Q2hlY2tDb21wbGV0aW9uKiBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tD
b21wbGV0aW9uOwogfTsKIAogI2VuZGlmIC8vIFdlYlZpZXdIb3N0X2gK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81182</attachid>
            <date>2011-02-03 20:43:20 -0800</date>
            <delta_ts>2011-02-06 20:33:58 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-51013-20110204134318.patch</filename>
            <type>text/plain</type>
            <size>29291</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZjc4NjUwY2RlOWQyZmFkMjE0MmEyYmYzMDE1YjFmNzgwMmUzMmYxLi43NTViY2Uz
ZDk5NDM2Y2Y0NjlkMjIwNDVmZWU0MzA2YzBlYjMzYmQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDEtMTcgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDItMDIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnRpbnVlIGlt
cG9ydGluZyBuZXcgZWRpdGluZyBsYXlvdXQgdGVzdCByZXN1bHRzIGZvciBHVEsuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZDk5Y2ZhOWJlNGIyYjk1NGEyZTA1OGJjODRhYjU1MzA5ZmFkOTMwZC4uNzQ1MDNhOTg2MzIx
ODk1MGRjMWMzMTY3ZTY5MzIwMjU5ZTdjNTJjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjE5MiwxMCArMjE5Miw2
IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdFCiBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOS5odG1sID0gSU1BR0UKIAotLy8gTmVlZCB0
byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCi0vLyBP
dmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0MTQyMyBXSU4gTElOVVggOiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQKLQogLy8gRmxha3kgdGVzdHMuCiBC
VUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96b29tLWhpeGllLW1peGVkLTAwOS54bWwg
PSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVYIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGll
LW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBAIC0yOTAwLDcgKzI4OTYsNiBAQCBCVUdDUjY2
NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYvYXJyYXktbmVzdGVkLWxvb3AuaHRtbCA9IFBB
U1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcgOiBmYXN0L2pzL2tkZS9lbmNvZGVfZGVjb2Rl
X3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdDUjY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUdD
UjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUu
aHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4NiA6IGZhc3QvbG9hZGVyL3VzZXItc3R5bGVz
aGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAogQlVHQ1I2Njc1MSA6IGh0dHAvdGVzdHMvbG9j
YWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sID0gVEVYVCBUSU1FT1VU
IFBBU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWJiMTM4M2ZkMDRkMzNiNjQxYWMy
ZDdkMzA4OTljZjRiYjg3ODk3Yy4uYTAyNTY2Y2JiNjVlMmFlZjZhNzBhZDZhNjQyNTNlNjFjNWRj
YmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0w
Mi0wMyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNob3VsZCBpbXBs
ZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMKKworICAgICAg
ICAtIEFkZGVkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb24gdG8gcmVjZWl2ZSB0aGUgY2hlY2tl
ZCByZXN1bHQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVudDo6
cmVxdWVzdENoZWNraW5nT2ZUZXh0KCkgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKyAgICAgICAgLSBJ
bXBsZW1lbnRlZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjo6fldlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6ZXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OnBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpsZW5ndGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KTogR2F2ZSBhbiBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3Vs
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlk
RmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbkltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsOjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCk6CisKIDIwMTEtMDItMDIg
IEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
REVQUyBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMzhhYzdlN2FjNGE5
NTYxZmRmNWIyMTUzYzMyZjA4ZDcyYzZkZTlkZS4uOGRkZWZiMjliZmQyMGYxOGIyNTQ0NGMxNWFm
NTIwMzUyYzMwZDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjczLDYgKzI3
Myw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdHJpbmcuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHREaXJl
Y3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKQEAgLTQwMSw2ICs0MDMsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFt
ZUNocm9taXVtSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
ZTRmZDU0ZGU4OTAwMjJmZTY1OTZhMDU2NjY0ZTk1ZjQ0ODZkYjExNy4uODM0ZjA1YWViOWE4MWQ2
NWZjYWY3YWUwMzc4YWE1NGUyNTY3ZDM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NDc1NTk0OWNlNTJhYWY5NTgzZTI4ZGQ4YTc3
ZTg2N2RmZmVmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbl9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgiCisjaW5jbHVkZSAiV2ViVmVjdG9yLmgiCisKK25hbWVzcGFjZSBXZWJLaXQg
eworCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXNwb25zZTsKKworLy8gR2V0cyBjYWxsZWQgYmFj
ayB3aGVuIFdlYlZpZXdDbGllbnQgZmluaXNoZWQgYW4gYXN5bmNocm9ub3VzIHNwZWxsIGNoZWNr
aW5nLgorY2xhc3MgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiB7CitwdWJsaWM6CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dChjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiYpID0gMDsKK3Byb3RlY3RlZDoKKyAgICB+V2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbigpIHsgfQorfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5nUmVz
dWx0LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1
bHQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5mODQ0MTYzODJmYTRlZmIxZmQ5YzBmZTJlZjg4MjZlNGIyNzliZWU3
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4
dENoZWNraW5nUmVzdWx0LmgKQEAgLTAsMCArMSw2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5n
UmVzdWx0X2gKKyNkZWZpbmUgV2ViVGV4dENoZWNraW5nUmVzdWx0X2gKKworI2luY2x1ZGUgIldl
YkNvbW1vbi5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsK
KworLy8gQSBjaGVja2VkIGVudHJ5IG9mIHRleHQgY2hlY2tpbmcuCitjbGFzcyBXZWJUZXh0Q2hl
Y2tpbmdSZXN1bHQgeworcHVibGljOgorICAgIGVudW0gRXJyb3IgeworICAgICAgICBFcnJvclNw
ZWxsaW5nID0gMSA8PCAwLAorICAgICAgICBFcnJvckdyYW1tYXIgPSAxIDw8IDEKKyAgICB9Owor
CisgICAgRXJyb3IgZXJyb3IoKSBjb25zdCB7IHJldHVybiBtX2Vycm9yOyB9CisgICAgaW50IHBv
c2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9wb3NpdGlvbjsgfQorICAgIGludCBsZW5ndGgoKSBj
b25zdCB7IHJldHVybiBtX2xlbmd0aDsgfQorCisgICAgV2ViVGV4dENoZWNraW5nUmVzdWx0KEVy
cm9yIGVycm9yLCBpbnQgcG9zaXRpb24sIGludCBsZW5ndGgpIAorICAgICAgICA6IG1fZXJyb3Io
ZXJyb3IpCisgICAgICAgICwgbV9wb3NpdGlvbihwb3NpdGlvbikKKyAgICAgICAgLCBtX2xlbmd0
aChsZW5ndGgpCisgICAgeworICAgIH0KKyAgICAKK3ByaXZhdGU6CisgICAgRXJyb3IgbV9lcnJv
cjsKKyAgICBpbnQgbV9wb3NpdGlvbjsKKyAgICBpbnQgbV9sZW5ndGg7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJWaWV3Q2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJWaWV3Q2xpZW50LmgKaW5kZXggZmNjOTZlOTFkNGVkMDE3ZjE5ZDE4ZjJlZDU3OWYxMjEy
OTRmMmE5OC4uYWE2Y2UwZGRiZDA2ZTJkM2E1MWQ0ZDZlOGQ5M2UyYTVmMGQ1Y2IwYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaApAQCAtNjQsNiAr
NjQsNyBAQCBjbGFzcyBXZWJSYW5nZTsKIGNsYXNzIFdlYlNwZWVjaElucHV0Q29udHJvbGxlcjsK
IGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CiBjbGFzcyBXZWJTdG9yYWdlTmFtZXNwYWNl
OworY2xhc3MgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjsKIGNsYXNzIFdlYlVSTDsKIGNsYXNz
IFdlYlVSTFJlcXVlc3Q7CiBjbGFzcyBXZWJWaWV3OwpAQCAtMTc4LDcgKzE3OSw5IEBAIHB1Ymxp
YzoKICAgICAvLyBlcnJvciwgdGhlbiB1cG9uIHJldHVybiBtaXNzcGVsbGVkTGVuZ3RoIGlzIDAu
CiAgICAgdmlydHVhbCB2b2lkIHNwZWxsQ2hlY2soCiAgICAgICAgIGNvbnN0IFdlYlN0cmluZyYg
dGV4dCwgaW50JiBtaXNzcGVsbGVkT2Zmc2V0LCBpbnQmIG1pc3NwZWxsZWRMZW5ndGgpIHsgfQot
CisgICAgLy8gUmVxdWVzdHMgYXN5bmNocm9ub3VzIHNwZWxsaW5nIGFuZCBncmFtbWFyIGNoZWNr
aW5nLCB3aG9zZSByZXN1bHQgc2hvdWxkIGJlCisgICAgLy8gcmV0dXJuZWQgYnkgcGFzc2VkIGNv
bXBsZXRpb24gb2JqZWN0LgorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlRleHQo
Y29uc3QgV2ViU3RyaW5nJiwgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopIHsgfQogICAgIC8v
IENvbXB1dGVzIGFuIGF1dG8tY29ycmVjdGVkIHJlcGxhY2VtZW50IGZvciBhIG1pc3NwZWxsZWQg
d29yZC4gIElmIG5vCiAgICAgLy8gcmVwbGFjZW1lbnQgaXMgZm91bmQsIHRoZW4gYW4gZW1wdHkg
c3RyaW5nIGlzIHJldHVybmVkLgogICAgIHZpcnR1YWwgV2ViU3RyaW5nIGF1dG9Db3JyZWN0V29y
ZChjb25zdCBXZWJTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKSB7IHJldHVybiBXZWJTdHJpbmcoKTsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvQXNzZXJ0TWF0Y2hpbmdF
bnVtcy5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1z
LmNwcAppbmRleCBlODlmYjc0NWU5ODY2YjMzYWM4MDU0OTM0ZWRjMGY0YzQ3Mjc2NTY2Li5hYWFh
NGE1ZjlkY2U0YTBkZjkwODU5ZWI3NDRkNzE0OTM5MjgxMDBiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcApAQCAtMzYsNiArMzYs
NyBAQAogI2luY2x1ZGUgIkFjY2Vzc2liaWxpdHlPYmplY3QuaCIKICNpbmNsdWRlICJBcHBsaWNh
dGlvbkNhY2hlSG9zdC5oIgogI2luY2x1ZGUgIkFzeW5jRmlsZVN5c3RlbS5oIgorI2luY2x1ZGUg
IkRvY3VtZW50TWFya2VyLmgiCiAjaW5jbHVkZSAiRWRpdG9ySW5zZXJ0QWN0aW9uLmgiCiAjaW5j
bHVkZSAiRmlsZUVycm9yLmgiCiAjaW5jbHVkZSAiRmlsZU1ldGFkYXRhLmgiCkBAIC03NCw2ICs3
NSw3IEBACiAjaW5jbHVkZSAiV2ViU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5p
dHkuaCIKICNpbmNsdWRlICJXZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgiCisjaW5jbHVkZSAiV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVmlkZW9GcmFtZS5oIgogI2luY2x1
ZGUgIldlYlZpZXcuaCIKICNpbmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMzk3LDYgKzM5
OSw5IEBAIENPTVBJTEVfQVNTRVJUX01BVENISU5HX0VOVU0oV2ViRmlsZUVycm9yUGF0aEV4aXN0
cywgRmlsZUVycm9yOjpQQVRIX0VYSVNUU19FUlIpCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19F
TlVNKFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUGVybWlzc2lvbkRlbmllZCwgR2VvbG9jYXRp
b25FcnJvcjo6UGVybWlzc2lvbkRlbmllZCk7CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVN
KFdlYkdlb2xvY2F0aW9uRXJyb3I6OkVycm9yUG9zaXRpb25VbmF2YWlsYWJsZSwgR2VvbG9jYXRp
b25FcnJvcjo6UG9zaXRpb25VbmF2YWlsYWJsZSk7CiAKK0NPTVBJTEVfQVNTRVJUX01BVENISU5H
X0VOVU0oV2ViVGV4dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nLCBEb2N1bWVudE1hcmtl
cjo6U3BlbGxpbmcpOworQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQ6OkVycm9yR3JhbW1hciwgRG9jdW1lbnRNYXJrZXI6OkdyYW1tYXIpOworCiAjaWYg
T1MoREFSV0lOKQogQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUaGVtZUVuZ2luZTo6
U3RhdGVEaXNhYmxlZCwgUGxhdGZvcm1CcmlkZ2U6OlN0YXRlRGlzYWJsZWQpOwogQ09NUElMRV9B
U1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJUaGVtZUVuZ2luZTo6U3RhdGVJbmFjdGl2ZSwgUGxhdGZv
cm1CcmlkZ2U6OlN0YXRlSW5hY3RpdmUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9FZGl0b3JDbGllbnRJbXBsLmNwcAppbmRleCA2ODY5NGMyZWZlMzE0ZDE4ZGI5NWI5MDE0ZDcz
YmU4ZmQ1N2JlYTFkLi5iMzAxNjg4ODdhMzcxNDUyNDhmNTM2ZmYyZjYxN2U4MmU0ZWUxOTNhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcApA
QCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgIlBsYXRmb3JtS2V5Ym9hcmRFdmVudC5oIgogI2lu
Y2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyT2JqZWN0LmgiCisjaW5j
bHVkZSAiU3BlbGxDaGVja2VyLmgiCiAKICNpbmNsdWRlICJET01VdGlsaXRpZXNQcml2YXRlLmgi
CiAjaW5jbHVkZSAiV2ViQXV0b0ZpbGxDbGllbnQuaCIKQEAgLTU0LDYgKzU1LDcgQEAKICNpbmNs
dWRlICJXZWJQYXNzd29yZEF1dG9jb21wbGV0ZUxpc3RlbmVyLmgiCiAjaW5jbHVkZSAiV2ViUmFu
Z2UuaCIKICNpbmNsdWRlICJXZWJUZXh0QWZmaW5pdHkuaCIKKyNpbmNsdWRlICJXZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5oIgogI2luY2x1ZGUgIldlYlZpZXdDbGllbnQuaCIKICNpbmNs
dWRlICJXZWJWaWV3SW1wbC5oIgogCkBAIC04NzYsNiArODc4LDExIEBAIHZvaWQgRWRpdG9yQ2xp
ZW50SW1wbDo6Y2hlY2tTcGVsbGluZ09mU3RyaW5nKGNvbnN0IFVDaGFyKiB0ZXh0LCBpbnQgbGVu
Z3RoLAogICAgICAgICAqbWlzc3BlbGxpbmdMZW5ndGggPSBzcGVsbExlbmd0aDsKIH0KIAordm9p
ZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZyhTcGVsbENoZWNrZXIq
IHNlbmRlciwgaW50IGlkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdGV4dCkKK3sKKyAgICBtX3dl
YlZpZXctPmNsaWVudCgpLT5yZXF1ZXN0Q2hlY2tpbmdPZlRleHQodGV4dCwgbmV3IFdlYlRleHRD
aGVja2luZ0NvbXBsZXRpb25JbXBsKGlkZW50aWZpZXIsIHNlbmRlcikpOworfQorCiBTdHJpbmcg
RWRpdG9yQ2xpZW50SW1wbDo6Z2V0QXV0b0NvcnJlY3RTdWdnZXN0aW9uRm9yTWlzc3BlbGxlZFdv
cmQoY29uc3QgU3RyaW5nJiBtaXNzcGVsbGVkV29yZCkKIHsKICAgICBpZiAoIShpc0NvbnRpbnVv
dXNTcGVsbENoZWNraW5nRW5hYmxlZCgpICYmIG1fd2ViVmlldy0+Y2xpZW50KCkpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCmluZGV4IDlkYmQ2YWZi
MzcxZDY0MTJhMGFmMjBlOGRiN2I4NTE4Yzc4ODdlMGUuLmZmMWNiNGQyNmI2NjNiYTc2NzU4ZmE2
NjBhZTQ4ZjUxYzllMTNjMDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L0VkaXRvckNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0
b3JDbGllbnRJbXBsLmgKQEAgLTM3LDYgKzM3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Y2xhc3MgSFRNTElucHV0RWxlbWVudDsKK2NsYXNzIFNwZWxsQ2hlY2tlcjsKIH0KIAogbmFtZXNw
YWNlIFdlYktpdCB7CkBAIC0xMTEsNyArMTEyLDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXVEY6OlZlY3RvcjxXVEY6OlN0cmluZz4mIGd1ZXNzZXMpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsU2V0SW5wdXRNZXRob2RTdGF0ZSgpOwogICAgIHZpcnR1YWwg
dm9pZCBzZXRJbnB1dE1ldGhvZFN0YXRlKGJvb2wgZW5hYmxlZCk7Ci0gICAgdmlydHVhbCB2b2lk
IHJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29u
c3QgV1RGOjpTdHJpbmcmKSB7fQorICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Q2hlY2tpbmdPZlN0
cmluZyhXZWJDb3JlOjpTcGVsbENoZWNrZXIqLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CiAK
ICAgICAvLyBTaG93cyB0aGUgZm9ybSBhdXRvZmlsbCBwb3B1cCBmb3IgfG5vZGV8IGlmIGl0IGlz
IGFuIEhUTUxJbnB1dEVsZW1lbnQgYW5kCiAgICAgLy8gaXQgaXMgZW1wdHkuICBUaGlzIGlzIGNh
bGxlZCB3aGVuIHlvdSBwcmVzcyB0aGUgdXAgb3IgZG93biBhcnJvdyBpbiBhCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcAppbmRleCAwNDU3Zjc3Njg4
NTJlMTIzYjc1NzQzZmNhMTZhZmE5NmRiMDU4OWQ0Li41NDE1NWRkZmUzZDAxYzE2Zjg5NjYzZDIx
MjMyZGExNDRmYTRmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJTZXR0aW5nc0ltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNl
dHRpbmdzSW1wbC5jcHAKQEAgLTMyOSw2ICszMjksMTEgQEAgdm9pZCBXZWJTZXR0aW5nc0ltcGw6
OnNldEh5cGVybGlua0F1ZGl0aW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiAgICAgbV9zZXR0aW5n
cy0+c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGVuYWJsZWQpOwogfQogCit2b2lkIFdlYlNl
dHRpbmdzSW1wbDo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCBlbmFi
bGVkKQoreworICAgIG1fc2V0dGluZ3MtPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFi
bGVkKGVuYWJsZWQpOworfQorCiB2b2lkIFdlYlNldHRpbmdzSW1wbDo6c2V0Q2FyZXRCcm93c2lu
Z0VuYWJsZWQoYm9vbCBlbmFibGVkKQogewogICAgIG1fc2V0dGluZ3MtPnNldENhcmV0QnJvd3Np
bmdFbmFibGVkKGVuYWJsZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViU2V0dGluZ3NJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0
aW5nc0ltcGwuaAppbmRleCA0OTYwYmI5M2E1OTc3YWNmOTYwNzdmZmMzYWRlNjY2YzdhMjQ1NmI4
Li5hMDMwY2QzYWExNjFmMWJjZThmYzEwZjhlMzJmYmM5NTIyOTMwNmQ5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaApAQCAtOTcsNiArOTcsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEFjY2VsZXJhdGVkMmRDYW52YXNFbmFibGVkKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRNZW1vcnlJbmZvRW5hYmxlZChib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpOworICAgIHZpcnR1
YWwgdm9pZCBzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgc2V0Q2FyZXRCcm93c2luZ0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2
b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21w
bGV0aW9uSW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDNiNGE2NTg4M2EzNzViYzMwMjJhMjg5YzI2ZDI2
OWVjNGZlYmRkNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcApAQCAtMCwwICsxLDU0IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICog
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRp
c3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
KyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgi
CisKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKKwordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitzdGF0aWMgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1
bHQ+IHRvQ29yZVJlc3VsdHMoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4m
IHJlc3VsdHMpCit7CisgICAgVmVjdG9yPFNwZWxsQ2hlY2tpbmdSZXN1bHQ+IGNvcmVSZXN1bHRz
OworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0cy5zaXplKCk7ICsraSkKKyAgICAg
ICAgY29yZVJlc3VsdHMuYXBwZW5kKFNwZWxsQ2hlY2tpbmdSZXN1bHQoc3RhdGljX2Nhc3Q8RG9j
dW1lbnRNYXJrZXI6Ok1hcmtlclR5cGU+KHJlc3VsdHNbaV0uZXJyb3IoKSksIHJlc3VsdHNbaV0u
cG9zaXRpb24oKSwgcmVzdWx0c1tpXS5sZW5ndGgoKSkpOworICAgIHJldHVybiBjb3JlUmVzdWx0
czsKK30KKwordm9pZCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlkRmluaXNoQ2hl
Y2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JiByZXN1bHRz
KQoreworICAgIG1fc3BlbGxDaGVja2VyLT5kaWRDaGVjayhtX2lkZW50aWZpZXIsIHRvQ29yZVJl
c3VsdHMocmVzdWx0cykpOworICAgIGRlbGV0ZSB0aGlzOworfQorCit9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb25JbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxMDE3Yzc0YTRiZjYyOWQxM2Yw
ODYxZDM2NTI0ZGY5OWY4Yzk2MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbC5oCkBAIC0wLDAgKzEsNTgg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRS
SUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAq
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZuZGVmIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsX2gKKyNkZWZpbmUgV2ViVGV4
dENoZWNraW5nQ29tcGxldGlvbkltcGxfaAorCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nQ29t
cGxldGlvbi5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CitjbGFzcyBTcGVsbENoZWNrZXI7Cit9
CisKK25hbWVzcGFjZSBXZWJLaXQgeworCitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9u
SW1wbCA6IHB1YmxpYyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uIHsKK3B1YmxpYzoKKyAgICBX
ZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbChpbnQgaWRlbnRpZmllciwgV2ViQ29yZTo6U3Bl
bGxDaGVja2VyKiBzcGVsbGNoZWNrZXIpCisgICAgICAgIDogbV9pZGVudGlmaWVyKGlkZW50aWZp
ZXIpLCBtX3NwZWxsQ2hlY2tlcihzcGVsbGNoZWNrZXIpCisgICAgeworICAgIH0KKworICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5pc2hDaGVja2luZ1RleHQoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRD
aGVja2luZ1Jlc3VsdD4mKTsKKworcHJpdmF0ZToKKyAgICBpbnQgbV9pZGVudGlmaWVyOworICAg
IFdlYkNvcmU6OlNwZWxsQ2hlY2tlciogbV9zcGVsbENoZWNrZXI7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29s
cy9DaGFuZ2VMb2cKaW5kZXggMmNmYTE5ZjYxYjNhNzNkOGMwNjQ3NWZhZTljOWI4ZWJhOWE0MGJi
My4uNWEwYzM4OTJmODU0OGNiYzAxNjBjOWYyMmJmMWNhYjNhNzcxMWNhYiAxMDA2NDQKLS0tIGEv
VG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisy
MDExLTAyLTAzICBNT1JJVEEgSGFqaW1lICA8bW9ycml0YUBnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFtDaHJvbWl1bV0gU2hvdWxk
IGltcGxlbWVudCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MTAxMworCisg
ICAgICAgIEdhdmUgRFJUIGltcGxlbWVudGF0aW9uIGZvciByZXF1ZXN0VGV4dENoZWNrKCkuCisK
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQpOiBJbXBsZW1lbnRlZC4KKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChpbnZva2VGaW5pc2hMYXN0VGV4dENo
ZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6cmVxdWVzdFRleHRDaGVjayk6IEFk
ZGVkLgorICAgICAgICAoV2ViVmlld0hvc3Q6OmZpbmlzaExhc3RUZXh0Q2hlY2spOiBBZGRlZC4K
KyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDEx
LTAyLTAyICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJl
dmlld2VkIGJ5IE1paGFpIFBhcnBhcml0YS4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAppbmRleCA3YzE4ZGE3OTY0MDQ3
ZDZhNmM4NjRjNmU3NzYwOTcyNDE1MWZkNWVmLi5hNDc5ZjAzOTgzZjA3YTY5MTRmMjU0NzkwNjM0
YTAwZWRmMDY1MWY5IDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBAIC02MjcsOSArNjI3LDExIEBAIHZvaWQgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OnNldEFsd2F5c0FjY2VwdENvb2tpZXMoY29uc3QgQ3BwQXJndW1l
bnRMaXN0JiBhcmd1bWVuCiAgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKLXZvaWQgTGF5b3V0
VGVzdENvbnRyb2xsZXI6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNvbnN0
IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlhbnQqKQordm9pZCBMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiBhcmd1bWVudHMsIENwcFZhcmlhbnQqIHJlc3VsdCkKIHsKLSAgICAvLyBGSVhNRTogSW1w
bGVtZW50IHRoaXMuCisgICAgaWYgKGFyZ3VtZW50cy5zaXplKCkgPiAwICYmIGFyZ3VtZW50c1sw
XS5pc0Jvb2woKSkKKyAgICAgICAgbV9zaGVsbC0+d2ViVmlldygpLT5zZXR0aW5ncygpLT5zZXRB
c3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjcHBWYXJpYW50VG9Cb29sKGFyZ3VtZW50
c1swXSkpOworICAgIHJlc3VsdC0+c2V0TnVsbCgpOwogfQogCiB2b2lkIExheW91dFRlc3RDb250
cm9sbGVyOjpzaG93V2ViSW5zcGVjdG9yKGNvbnN0IENwcEFyZ3VtZW50TGlzdCYsIENwcFZhcmlh
bnQqIHJlc3VsdCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dl
YlZpZXdIb3N0LmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0
LmNwcAppbmRleCAxOGIxMDdmZjU5MmNmNmU3NjQyMzNlYzJiYWY4OTVlYTM4YzkxMmNlLi40M2Yx
N2Y3ZDYwYTY4YTc2MTNkMzAzNjhkZGU1ZmNjZjE2ODAxMDIzIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaW5j
bHVkZSAiV2ViU2l6ZS5oIgogI2luY2x1ZGUgIldlYlNwZWVjaElucHV0Q29udHJvbGxlck1vY2su
aCIKICNpbmNsdWRlICJXZWJTdG9yYWdlTmFtZXNwYWNlLmgiCisjaW5jbHVkZSAiV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbi5oIgogI2luY2x1ZGUgIldlYlVSTFJlcXVlc3QuaCIKICNpbmNsdWRl
ICJXZWJVUkxSZXNwb25zZS5oIgogI2luY2x1ZGUgIldlYlZpZXcuaCIKQEAgLTYwLDYgKzYxLDcg
QEAKICNpbmNsdWRlICJ3ZWJraXQvc3VwcG9ydC93ZWJraXRfc3VwcG9ydC5oIgogI2luY2x1ZGUg
PHd0Zi9Bc3NlcnRpb25zLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRl
IDx3dGYvVmVjdG9yLmg+CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogdXNpbmcgbmFtZXNw
YWNlIFdlYktpdDsKQEAgLTIyNSw2ICsyMjcsMTIgQEAgc3RhdGljIHN0cmluZyB0ZXh0QWZmaW5p
dHlEZXNjcmlwdGlvbihXZWJUZXh0QWZmaW5pdHkgYWZmaW5pdHkpCiAgICAgcmV0dXJuICIoVU5L
Tk9XTiBBRkZJTklUWSkiOwogfQogCitzdGF0aWMgdm9pZCBpbnZva2VGaW5pc2hMYXN0VGV4dENo
ZWNrKHZvaWQqIGNvbnRleHQpCit7CisgICAgV2ViVmlld0hvc3QqIHd2aCA9IHN0YXRpY19jYXN0
PFdlYlZpZXdIb3N0Kj4oY29udGV4dCk7CisgICAgd3ZoLT5maW5pc2hMYXN0VGV4dENoZWNrKCk7
Cit9CisKIC8vIFdlYlZpZXdDbGllbnQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBXZWJWaWV3KiBXZWJWaWV3SG9zdDo6Y3Jl
YXRlVmlldyhXZWJGcmFtZSosIGNvbnN0IFdlYlVSTFJlcXVlc3QmLCBjb25zdCBXZWJXaW5kb3dG
ZWF0dXJlcyYsIGNvbnN0IFdlYlN0cmluZyYpCkBAIC00MDksNiArNDE3LDM1IEBAIHZvaWQgV2Vi
Vmlld0hvc3Q6OnNwZWxsQ2hlY2soY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxs
ZWRPZmZzZXQsIGludCYKICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQodGV4dCwgJm1p
c3NwZWxsZWRPZmZzZXQsICZtaXNzcGVsbGVkTGVuZ3RoKTsKIH0KIAordm9pZCBXZWJWaWV3SG9z
dDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KGNvbnN0IFdlYlN0cmluZyYgdGV4dCwgV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbiogY29tcGxldGlvbikKK3sKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0
Q2hlY2tpbmdDb21wbGV0aW9uID0gY29tcGxldGlvbjsKKyAgICBtX2xhc3RSZXF1ZXN0ZWRUZXh0
Q2hlY2tTdHJpbmcgPSB0ZXh0OworICAgIHdlYmtpdF9zdXBwb3J0OjpQb3N0RGVsYXllZFRhc2so
aW52b2tlRmluaXNoTGFzdFRleHRDaGVjaywgc3RhdGljX2Nhc3Q8dm9pZCo+KHRoaXMpLCAwKTsK
K30KKwordm9pZCBXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRDaGVjaygpCit7CisgICAgVmVj
dG9yPFdlYlRleHRDaGVja2luZ1Jlc3VsdD4gcmVzdWx0czsKKyAgICAvLyBGSVhNRTogRG8gdGhl
IGdyYW1tYXIgY2hlY2suCisgICAgaW50IG9mZnNldCA9IDA7CisgICAgU3RyaW5nIHRleHQobV9s
YXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nLmRhdGEoKSwgbV9sYXN0UmVxdWVzdGVkVGV4dENo
ZWNrU3RyaW5nLmxlbmd0aCgpKTsKKyAgICB3aGlsZSAodGV4dC5sZW5ndGgoKSkgeworICAgICAg
ICBpbnQgbWlzc3BlbGxlZFBvc2l0aW9uID0gMDsKKyAgICAgICAgaW50IG1pc3NwZWxsZWRMZW5n
dGggPSAwOworICAgICAgICBtX3NwZWxsY2hlY2suc3BlbGxDaGVja1dvcmQoV2ViU3RyaW5nKHRl
eHQuY2hhcmFjdGVycygpLCB0ZXh0Lmxlbmd0aCgpKSwgJm1pc3NwZWxsZWRQb3NpdGlvbiwgJm1p
c3NwZWxsZWRMZW5ndGgpOworICAgICAgICBpZiAoIW1pc3NwZWxsZWRMZW5ndGgpCisgICAgICAg
ICAgICBicmVhazsKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoV2ViVGV4dENoZWNraW5nUmVzdWx0
KFdlYlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JTcGVsbGluZywgb2Zmc2V0ICsgbWlzc3BlbGxl
ZFBvc2l0aW9uLCBtaXNzcGVsbGVkTGVuZ3RoKSk7CisgICAgICAgIHRleHQgPSB0ZXh0LnN1YnN0
cmluZyhtaXNzcGVsbGVkUG9zaXRpb24gKyBtaXNzcGVsbGVkTGVuZ3RoKTsKKyAgICAgICAgb2Zm
c2V0ICs9IG1pc3NwZWxsZWRQb3NpdGlvbjsKKyAgICB9CisKKyAgICBtX2xhc3RSZXF1ZXN0ZWRU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uLT5kaWRGaW5pc2hDaGVja2luZ1RleHQocmVzdWx0cyk7Cisg
ICAgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5nQ29tcGxldGlvbiA9IDA7Cit9CisKKwogV2Vi
U3RyaW5nIFdlYlZpZXdIb3N0OjphdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViU3RyaW5nJikKIHsK
ICAgICAvLyBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBhcyBNYWMgV2ViS2l0ICgnV2ViS2l0U3Vw
cG9ydC9XZWJFZGl0b3JDbGllbnQubW0nKQpAQCAtMTExNSw2ICsxMTUyLDcgQEAgdm9pZCBXZWJW
aWV3SG9zdDo6b3BlbkZpbGVTeXN0ZW0oV2ViRnJhbWUqIGZyYW1lLCBXZWJGaWxlU3lzdGVtOjpU
eXBlIHR5cGUsIGxvbmcKIFdlYlZpZXdIb3N0OjpXZWJWaWV3SG9zdChUZXN0U2hlbGwqIHNoZWxs
KQogICAgIDogbV9zaGVsbChzaGVsbCkKICAgICAsIG1fd2ViV2lkZ2V0KDApCisgICAgLCBtX2xh
c3RSZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKDApCiB7CiAgICAgcmVzZXQoKTsKIH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0Lmgg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCmluZGV4IDgzZDIx
ZGM2MzdlNjcwYTdhYjAyOTQ4YTQ5N2ViZTg5OTdlZWM2NDguLjlhYTRhZjU1YzQxOGNhM2MyYzVh
NzljNDc2OGQ4MjRiNjE4YWM2ZmQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2No
cm9taXVtL1dlYlZpZXdIb3N0LmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaApAQCAtMTI2LDYgKzEyNiw3IEBAIGNsYXNzIFdlYlZpZXdIb3N0IDogcHVi
bGljIFdlYktpdDo6V2ViVmlld0NsaWVudCwgcHVibGljIFdlYktpdDo6V2ViRnJhbWVDbGllbnQs
CiAgICAgdmlydHVhbCB2b2lkIGRpZEVuZEVkaXRpbmcoKTsKICAgICB2aXJ0dWFsIGJvb2wgaGFu
ZGxlQ3VycmVudEtleWJvYXJkRXZlbnQoKTsKICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjayhj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIGludCYgb2Zmc2V0LCBpbnQmIGxlbmd0aCk7CisgICAg
dmlydHVhbCB2b2lkIHJlcXVlc3RDaGVja2luZ09mVGV4dChjb25zdCBXZWJLaXQ6OldlYlN0cmlu
ZyYsIFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiopOwogICAgIHZpcnR1YWwgV2Vi
S2l0OjpXZWJTdHJpbmcgYXV0b0NvcnJlY3RXb3JkKGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7
CiAgICAgdmlydHVhbCB2b2lkIHJ1bk1vZGFsQWxlcnREaWFsb2coV2ViS2l0OjpXZWJGcmFtZSos
IGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJik7CiAgICAgdmlydHVhbCBib29sIHJ1bk1vZGFsQ29u
ZmlybURpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsK
QEAgLTIwNyw3ICsyMDgsMTAgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpX
ZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2aXJ0dWFs
IHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViS2l0OjpXZWJGcmFtZSosIFdlYktpdDo6V2ViRmlsZVN5
c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJLaXQ6OldlYkZpbGVT
eXN0ZW1DYWxsYmFja3MqKTsKIAogICAgIFdlYktpdDo6V2ViRGV2aWNlT3JpZW50YXRpb25DbGll
bnRNb2NrKiBkZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2soKTsKKyAgICAKKyAgICAvLyBTcGVs
bGNoZWNrIHJlbGF0ZWQgaGVscGVyIEFQSXMKICAgICBNb2NrU3BlbGxDaGVjayogbW9ja1NwZWxs
Q2hlY2soKTsKKyAgICB2b2lkIGZpbmlzaExhc3RUZXh0Q2hlY2soKTsKIAogICAgIC8vIEdlb2xv
Y2F0aW9uIGNsaWVudCBtb2NrcyBmb3IgTGF5b3V0VGVzdENvbnRyb2xsZXIKICAgICBXZWJLaXQ6
OldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jayogZ2VvbG9jYXRpb25DbGllbnRNb2NrKCk7CkBAIC0z
MjAsNiArMzI0LDkgQEAgcHJpdmF0ZToKICAgICBPd25QdHI8V2ViS2l0OjpXZWJTcGVlY2hJbnB1
dENvbnRyb2xsZXJNb2NrPiBtX3NwZWVjaElucHV0Q29udHJvbGxlck1vY2s7CiAKICAgICBPd25Q
dHI8VGVzdE5hdmlnYXRpb25Db250cm9sbGVyKj4gbV9uYXZpZ2F0aW9uQ29udHJvbGxlcjsKKwor
ICAgIFdlYktpdDo6V2ViU3RyaW5nIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0cmluZzsKKyAg
ICBXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBsZXRpb24qIG1fbGFzdFJlcXVlc3RlZFRleHRD
aGVja2luZ0NvbXBsZXRpb247CiB9OwogCiAjZW5kaWYgLy8gV2ViVmlld0hvc3RfaAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81444</attachid>
            <date>2011-02-06 20:34:04 -0800</date>
            <delta_ts>2011-02-07 12:55:45 -0800</delta_ts>
            <desc>Addressed the feedback</desc>
            <filename>bug-51013-20110207133402.patch</filename>
            <type>text/plain</type>
            <size>29341</size>
            <attacher name="Hajime Morrita">morrita</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxZjc4NjUwY2RlOWQyZmFkMjE0MmEyYmYzMDE1YjFmNzgwMmUzMmYxLi5mNTllOTRh
M2M2ODU5ODM1N2U1MmI5ZDQ5ZTdmOTJiNDA2ZDQxZTdiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTEtMDItMDMgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0Nocm9taXVtXSBTaG91
bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKCkK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUxMDEzCisK
KyAgICAgICAgVW5za2lwcGVkIHBhc3NlZCB0ZXN0LgorICAgICAgICAKKyAgICAgICAgKiBwbGF0
Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQ6CisKIDIwMTEtMDItMDIgIE1hcnRp
biBSb2JpbnNvbiAgPG1yb2JpbnNvbkBpZ2FsaWEuY29tPgogCiAgICAgICAgIENvbnRpbnVlIGlt
cG9ydGluZyBuZXcgZWRpdGluZyBsYXlvdXQgdGVzdCByZXN1bHRzIGZvciBHVEsuCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQKaW5k
ZXggZDk5Y2ZhOWJlNGIyYjk1NGEyZTA1OGJjODRhYjU1MzA5ZmFkOTMwZC4uNzQ1MDNhOTg2MzIx
ODk1MGRjMWMzMTY3ZTY5MzIwMjU5ZTdjNTJjYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CisrKyBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dApAQCAtMjE5MiwxMCArMjE5Miw2
IEBAIEJVR1dLNDEzMTEgV0lOIExJTlVYIDogZmFzdC9ib3JkZXJzL2JvcmRlclJhZGl1c0RvdWJs
ZTA3Lmh0bWwgPSBJTUFHRQogQlVHV0s0MTMxMSBXSU4gTElOVVggOiBmYXN0L2JvcmRlcnMvYm9y
ZGVyUmFkaXVzRG91YmxlMDguaHRtbCA9IElNQUdFCiBCVUdXSzQxMzExIFdJTiBMSU5VWCA6IGZh
c3QvYm9yZGVycy9ib3JkZXJSYWRpdXNEb3VibGUwOS5odG1sID0gSU1BR0UKIAotLy8gTmVlZCB0
byBpbXBsZW1lbnQgRWRpdG9yQ2xpZW50OjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpCi0vLyBP
dmVycmlkZW4gd2l0aCA2NjY4MgotLy8gQlVHV0s0MTQyMyBXSU4gTElOVVggOiBlZGl0aW5nL3Nw
ZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUuaHRtbCA9IFRFWFQKLQogLy8gRmxha3kgdGVzdHMuCiBC
VUdDUjQ0MzQ1IExJTlVYIDogc3ZnL3pvb20vdGV4dC96b29tLWhpeGllLW1peGVkLTAwOS54bWwg
PSBJTUFHRSBQQVNTCiBCVUdDUjQ0MzQ2IExJTlVYIDogc3ZnL3pvb20vcGFnZS96b29tLWhpeGll
LW1peGVkLTAwOS54bWwgPSBJTUFHRSBQQVNTCkBAIC0yOTAwLDcgKzI4OTYsNiBAQCBCVUdDUjY2
NDY2IE1BQyBXSU4gREVCVUcgU0xPVyA6IHBlcmYvYXJyYXktbmVzdGVkLWxvb3AuaHRtbCA9IFBB
U1MgVEVYVAogQlVHQ1I2NjU1NCBXSU4gREVCVUcgOiBmYXN0L2pzL2tkZS9lbmNvZGVfZGVjb2Rl
X3VyaS5odG1sID0gQ1JBU0ggUEFTUwogCiBCVUdDUjY2NjgzIFdJTiBMSU5VWCA6IGZhc3QvY2Fu
dmFzL2NhbnZhcy1kcmF3LWNhbnZhcy1vbi1jYW52YXMtc2hhZG93Lmh0bWwgPSBURVhUCi1CVUdD
UjY2NjgyIFdJTiBMSU5VWCBNQUMgOiBlZGl0aW5nL3NwZWxsaW5nL3NwZWxsY2hlY2stcGFzdGUu
aHRtbCA9IFRFWFQgVElNRU9VVAogQlVHQ1I2NjY4NiA6IGZhc3QvbG9hZGVyL3VzZXItc3R5bGVz
aGVldC1mYXN0LXBhdGguaHRtbCA9IFRFWFQKIAogQlVHQ1I2Njc1MSA6IGh0dHAvdGVzdHMvbG9j
YWwvbGluay1zdHlsZXNoZWV0LWxvYWQtb3JkZXItcHJlbG9hZC5odG1sID0gVEVYVCBUSU1FT1VU
IFBBU1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggNWJiMTM4M2ZkMDRkMzNiNjQxYWMy
ZDdkMzA4OTljZjRiYjg3ODk3Yy4uYTAyNTY2Y2JiNjVlMmFlZjZhNzBhZDZhNjQyNTNlNjFjNWRj
YmM5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0w
Mi0wMyAgTU9SSVRBIEhhamltZSAgPG1vcnJpdGFAZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbQ2hyb21pdW1dIFNob3VsZCBpbXBs
ZW1lbnQgRWRpdG9yQ2xpZW50SW1wbDo6cmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTEwMTMKKworICAgICAg
ICAtIEFkZGVkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb24gdG8gcmVjZWl2ZSB0aGUgY2hlY2tl
ZCByZXN1bHQgYXN5bmNocm9ub3VzbHkuCisgICAgICAgIC0gQWRkZWQgV2ViVmlld0NsaWVudDo6
cmVxdWVzdENoZWNraW5nT2ZUZXh0KCkgYW5kIHJlbGF0ZWQgY2xhc3Nlcy4KKyAgICAgICAgLSBJ
bXBsZW1lbnRlZCBFZGl0b3JDbGllbnRJbXBsOjpyZXF1ZXN0Q2hlY2tpbmdPZlN0cmluZygpLgor
CisgICAgICAgICogV2ViS2l0Lmd5cDoKKyAgICAgICAgKiBwdWJsaWMvV2ViU2V0dGluZ3MuaDoK
KyAgICAgICAgKiBwdWJsaWMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbi5oOiBBZGRlZC4KKyAg
ICAgICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbjo6fldlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb24pOgorICAgICAgICAqIHB1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdDo6ZXJyb3IpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OnBvc2l0aW9uKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViVGV4dENoZWNraW5nUmVzdWx0OjpsZW5ndGgpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OldlYlRleHRDaGVja2luZ1Jlc3VsdCk6CisgICAg
ICAgICogcHVibGljL1dlYlZpZXdDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmlld0Ns
aWVudDo6cmVxdWVzdENoZWNraW5nT2ZUZXh0KTogR2F2ZSBhbiBpbXBsZW1lbnRhdGlvbgorICAg
ICAgICAqIHNyYy9Bc3NlcnRNYXRjaGluZ0VudW1zLmNwcDoKKyAgICAgICAgKiBzcmMvRWRpdG9y
Q2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkVkaXRvckNsaWVudEltcGw6OnJlcXVl
c3RDaGVja2luZ09mU3RyaW5nKToKKyAgICAgICAgKiBzcmMvRWRpdG9yQ2xpZW50SW1wbC5oOgor
ICAgICAgICAqIHNyYy9XZWJTZXR0aW5nc0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJT
ZXR0aW5nc0ltcGw6OnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKToKKyAgICAg
ICAgKiBzcmMvV2ViU2V0dGluZ3NJbXBsLmg6CisgICAgICAgICogc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OnRvQ29yZVJlc3Vs
dHMpOgorICAgICAgICAoV2ViS2l0OjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbDo6ZGlk
RmluaXNoQ2hlY2tpbmdUZXh0KToKKyAgICAgICAgKiBzcmMvV2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbkltcGwuaDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25JbXBsOjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbCk6CisKIDIwMTEtMDItMDIg
IEV2YW4gTWFydGluICA8ZXZhbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCwg
REVQUyBjaGFuZ2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5n
eXAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggMzhhYzdlN2FjNGE5
NTYxZmRmNWIyMTUzYzMyZjA4ZDcyYzZkZTlkZS4uOGRkZWZiMjliZmQyMGYxOGIyNTQ0NGMxNWFm
NTIwMzUyYzMwZDRlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQu
Z3lwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjczLDYgKzI3
Myw4IEBACiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTdHJpbmcuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJUZXh0QWZmaW5pdHkuaCcsCiAgICAgICAgICAgICAgICAgJ3B1Ymxp
Yy9XZWJUZXh0Q2FzZVNlbnNpdGl2aXR5LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2Vi
VGV4dENoZWNraW5nUmVzdWx0LmgnLAorICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbi5oJywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlRleHREaXJl
Y3Rpb24uaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJUZXh0SW5wdXRUeXBlLmgnLAog
ICAgICAgICAgICAgICAgICdwdWJsaWMvV2ViVGV4dFJ1bi5oJywKQEAgLTQwMSw2ICs0MDMsOCBA
QAogICAgICAgICAgICAgICAgICdzcmMvU3RvcmFnZU5hbWVzcGFjZVByb3h5LmNwcCcsCiAgICAg
ICAgICAgICAgICAgJ3NyYy9TdG9yYWdlTmFtZXNwYWNlUHJveHkuaCcsCiAgICAgICAgICAgICAg
ICAgJ3NyYy9UZW1wb3JhcnlHbHVlLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViVGV4dENo
ZWNraW5nQ29tcGxldGlvbkltcGwuaCcsCisgICAgICAgICAgICAgICAgJ3NyYy9XZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFt
ZUNocm9taXVtSW1wbC5jcHAnLAogICAgICAgICAgICAgICAgICdzcmMvVmlkZW9GcmFtZUNocm9t
aXVtSW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3JjL1dlYkFjY2Vzc2liaWxpdHlDYWNoZS5j
cHAnLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViU2V0dGlu
Z3MuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNldHRpbmdzLmgKaW5kZXgg
ZTRmZDU0ZGU4OTAwMjJmZTY1OTZhMDU2NjY0ZTk1ZjQ0ODZkYjExNy4uODM0ZjA1YWViOWE4MWQ2
NWZjYWY3YWUwMzc4YWE1NGUyNTY3ZDM4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViU2V0dGluZ3MuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJTZXR0aW5ncy5oCkBAIC0xMDQsNiArMTA0LDcgQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzZXRBY2NlbGVyYXRlZDJkQ2FudmFzRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmly
dHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJvb2wpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgc2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wpID0gMDsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2luZ0VuYWJsZWQoYm9vbCkgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIHNldEludGVyYWN0aXZlRm9ybVZhbGlkYXRpb25FbmFibGVkKGJvb2wpID0gMDsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNraW5n
Q29tcGxldGlvbi5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVGV4dENoZWNr
aW5nQ29tcGxldGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdlNjUyNmQzMDI2NjkyNTM5N2FlMTM1ZjljZTM3
NWE2MDQ0Mzg4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1
YmxpYy9XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0
cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisg
KiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYg
V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbl9oCisjZGVmaW5lIFdlYlRleHRDaGVja2luZ0NvbXBs
ZXRpb25faAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFjZSBXZWJLaXQgewor
CitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gY2xh
c3MgV2ViVmVjdG9yOworCisvLyBHZXRzIGNhbGxlZCBiYWNrIHdoZW4gV2ViVmlld0NsaWVudCBm
aW5pc2hlZCBhbiBhc3luY2hyb25vdXMgc3BlbGwgY2hlY2tpbmcuCitjbGFzcyBXZWJUZXh0Q2hl
Y2tpbmdDb21wbGV0aW9uIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoQ2hl
Y2tpbmdUZXh0KGNvbnN0IFdlYlZlY3RvcjxXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ+JikgPSAwOwor
cHJvdGVjdGVkOgorICAgIH5XZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKCkgeyB9Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlRleHRDaGVja2luZ1Jlc3VsdC5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmMyYjFl
OTM0MTBjOTVkYmEzMDVjMjlmNGU1ZTg3ZGRlMGYzMzEzZDAKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaApAQCAt
MCwwICsxLDY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJUZXh0Q2hlY2tpbmdSZXN1bHRfaAorI2RlZmluZSBXZWJU
ZXh0Q2hlY2tpbmdSZXN1bHRfaAorCisjaW5jbHVkZSAiV2ViQ29tbW9uLmgiCisKK25hbWVzcGFj
ZSBXZWJLaXQgeworCisvLyBBIGNoZWNrZWQgZW50cnkgb2YgdGV4dCBjaGVja2luZy4KK2NsYXNz
IFdlYlRleHRDaGVja2luZ1Jlc3VsdCB7CitwdWJsaWM6CisgICAgZW51bSBFcnJvciB7CisgICAg
ICAgIEVycm9yU3BlbGxpbmcgPSAxIDw8IDAsCisgICAgICAgIEVycm9yR3JhbW1hciA9IDEgPDwg
MQorICAgIH07CisKKyAgICBFcnJvciBlcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fZXJyb3I7IH0K
KyAgICBpbnQgcG9zaXRpb24oKSBjb25zdCB7IHJldHVybiBtX3Bvc2l0aW9uOyB9CisgICAgaW50
IGxlbmd0aCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVuZ3RoOyB9CisKKyAgICBXZWJUZXh0Q2hlY2tp
bmdSZXN1bHQoRXJyb3IgZXJyb3IsIGludCBwb3NpdGlvbiwgaW50IGxlbmd0aCkgCisgICAgICAg
IDogbV9lcnJvcihlcnJvcikKKyAgICAgICAgLCBtX3Bvc2l0aW9uKHBvc2l0aW9uKQorICAgICAg
ICAsIG1fbGVuZ3RoKGxlbmd0aCkKKyAgICB7CisgICAgfQorICAgIAorcHJpdmF0ZToKKyAgICBF
cnJvciBtX2Vycm9yOworICAgIGludCBtX3Bvc2l0aW9uOworICAgIGludCBtX2xlbmd0aDsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYlZpZXdDbGllbnQuaAppbmRleCBmY2M5NmU5MWQ0ZWQwMTdmMTlkMThm
MmVkNTc5ZjEyMTI5NGYyYTk4Li5hYTZjZTBkZGJkMDZlMmQzYTUxZDRkNmU4ZDkzZTJhNWYwZDVj
YjBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJWaWV3Q2xp
ZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViVmlld0NsaWVudC5o
CkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIFdlYlJhbmdlOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRMaXN0ZW5lcjsKIGNsYXNzIFdlYlN0b3Jh
Z2VOYW1lc3BhY2U7CitjbGFzcyBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uOwogY2xhc3MgV2Vi
VVJMOwogY2xhc3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdlYlZpZXc7CkBAIC0xNzgsNyArMTc5
LDkgQEAgcHVibGljOgogICAgIC8vIGVycm9yLCB0aGVuIHVwb24gcmV0dXJuIG1pc3NwZWxsZWRM
ZW5ndGggaXMgMC4KICAgICB2aXJ0dWFsIHZvaWQgc3BlbGxDaGVjaygKICAgICAgICAgY29uc3Qg
V2ViU3RyaW5nJiB0ZXh0LCBpbnQmIG1pc3NwZWxsZWRPZmZzZXQsIGludCYgbWlzc3BlbGxlZExl
bmd0aCkgeyB9Ci0KKyAgICAvLyBSZXF1ZXN0cyBhc3luY2hyb25vdXMgc3BlbGxpbmcgYW5kIGdy
YW1tYXIgY2hlY2tpbmcsIHdob3NlIHJlc3VsdCBzaG91bGQgYmUKKyAgICAvLyByZXR1cm5lZCBi
eSBwYXNzZWQgY29tcGxldGlvbiBvYmplY3QuCisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RDaGVj
a2luZ09mVGV4dChjb25zdCBXZWJTdHJpbmcmLCBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKikg
eyB9CiAgICAgLy8gQ29tcHV0ZXMgYW4gYXV0by1jb3JyZWN0ZWQgcmVwbGFjZW1lbnQgZm9yIGEg
bWlzc3BlbGxlZCB3b3JkLiAgSWYgbm8KICAgICAvLyByZXBsYWNlbWVudCBpcyBmb3VuZCwgdGhl
biBhbiBlbXB0eSBzdHJpbmcgaXMgcmV0dXJuZWQuCiAgICAgdmlydHVhbCBXZWJTdHJpbmcgYXV0
b0NvcnJlY3RXb3JkKGNvbnN0IFdlYlN0cmluZyYgbWlzc3BlbGxlZFdvcmQpIHsgcmV0dXJuIFdl
YlN0cmluZygpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Bc3Nl
cnRNYXRjaGluZ0VudW1zLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1h
dGNoaW5nRW51bXMuY3BwCmluZGV4IGU4OWZiNzQ1ZTk4NjZiMzNhYzgwNTQ5MzRlZGMwZjRjNDcy
NzY1NjYuLmFhYWE0YTVmOWRjZTRhMGRmOTA4NTllYjc0NGQ3MTQ5MzkyODEwMGIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0Fzc2VydE1hdGNoaW5nRW51bXMuY3BwCkBA
IC0zNiw2ICszNiw3IEBACiAjaW5jbHVkZSAiQWNjZXNzaWJpbGl0eU9iamVjdC5oIgogI2luY2x1
ZGUgIkFwcGxpY2F0aW9uQ2FjaGVIb3N0LmgiCiAjaW5jbHVkZSAiQXN5bmNGaWxlU3lzdGVtLmgi
CisjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXIuaCIKICNpbmNsdWRlICJFZGl0b3JJbnNlcnRBY3Rp
b24uaCIKICNpbmNsdWRlICJGaWxlRXJyb3IuaCIKICNpbmNsdWRlICJGaWxlTWV0YWRhdGEuaCIK
QEAgLTc0LDYgKzc1LDcgQEAKICNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgogI2luY2x1ZGUgIldl
YlRleHRBZmZpbml0eS5oIgogI2luY2x1ZGUgIldlYlRleHRDYXNlU2Vuc2l0aXZpdHkuaCIKKyNp
bmNsdWRlICJXZWJUZXh0Q2hlY2tpbmdSZXN1bHQuaCIKICNpbmNsdWRlICJXZWJWaWRlb0ZyYW1l
LmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25zLmg+CkBA
IC0zOTcsNiArMzk5LDkgQEAgQ09NUElMRV9BU1NFUlRfTUFUQ0hJTkdfRU5VTShXZWJGaWxlRXJy
b3JQYXRoRXhpc3RzLCBGaWxlRXJyb3I6OlBBVEhfRVhJU1RTX0VSUikKIENPTVBJTEVfQVNTRVJU
X01BVENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQZXJtaXNzaW9uRGVuaWVk
LCBHZW9sb2NhdGlvbkVycm9yOjpQZXJtaXNzaW9uRGVuaWVkKTsKIENPTVBJTEVfQVNTRVJUX01B
VENISU5HX0VOVU0oV2ViR2VvbG9jYXRpb25FcnJvcjo6RXJyb3JQb3NpdGlvblVuYXZhaWxhYmxl
LCBHZW9sb2NhdGlvbkVycm9yOjpQb3NpdGlvblVuYXZhaWxhYmxlKTsKIAorQ09NUElMRV9BU1NF
UlRfTUFUQ0hJTkdfRU5VTShXZWJUZXh0Q2hlY2tpbmdSZXN1bHQ6OkVycm9yU3BlbGxpbmcsIERv
Y3VtZW50TWFya2VyOjpTcGVsbGluZyk7CitDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdl
YlRleHRDaGVja2luZ1Jlc3VsdDo6RXJyb3JHcmFtbWFyLCBEb2N1bWVudE1hcmtlcjo6R3JhbW1h
cik7CisKICNpZiBPUyhEQVJXSU4pCiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRo
ZW1lRW5naW5lOjpTdGF0ZURpc2FibGVkLCBQbGF0Zm9ybUJyaWRnZTo6U3RhdGVEaXNhYmxlZCk7
CiBDT01QSUxFX0FTU0VSVF9NQVRDSElOR19FTlVNKFdlYlRoZW1lRW5naW5lOjpTdGF0ZUluYWN0
aXZlLCBQbGF0Zm9ybUJyaWRnZTo6U3RhdGVJbmFjdGl2ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0VkaXRvckNsaWVudEltcGwuY3BwCmluZGV4IDY4Njk0YzJlZmUzMTRkMThk
Yjk1YjkwMTRkNzNiZThmZDU3YmVhMWQuLmIzMDE2ODg4N2EzNzE0NTI0OGY1MzZmZjJmNjE3ZTgy
ZTRlZTE5M2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNs
aWVudEltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0VkaXRvckNsaWVu
dEltcGwuY3BwCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAiUGxhdGZvcm1LZXlib2FyZEV2
ZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZW5kZXJPYmpl
Y3QuaCIKKyNpbmNsdWRlICJTcGVsbENoZWNrZXIuaCIKIAogI2luY2x1ZGUgIkRPTVV0aWxpdGll
c1ByaXZhdGUuaCIKICNpbmNsdWRlICJXZWJBdXRvRmlsbENsaWVudC5oIgpAQCAtNTQsNiArNTUs
NyBAQAogI2luY2x1ZGUgIldlYlBhc3N3b3JkQXV0b2NvbXBsZXRlTGlzdGVuZXIuaCIKICNpbmNs
dWRlICJXZWJSYW5nZS5oIgogI2luY2x1ZGUgIldlYlRleHRBZmZpbml0eS5oIgorI2luY2x1ZGUg
IldlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgiCiAjaW5jbHVkZSAiV2ViVmlld0NsaWVu
dC5oIgogI2luY2x1ZGUgIldlYlZpZXdJbXBsLmgiCiAKQEAgLTg3Niw2ICs4NzgsMTEgQEAgdm9p
ZCBFZGl0b3JDbGllbnRJbXBsOjpjaGVja1NwZWxsaW5nT2ZTdHJpbmcoY29uc3QgVUNoYXIqIHRl
eHQsIGludCBsZW5ndGgsCiAgICAgICAgICptaXNzcGVsbGluZ0xlbmd0aCA9IHNwZWxsTGVuZ3Ro
OwogfQogCit2b2lkIEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2luZ09mU3RyaW5nKFNw
ZWxsQ2hlY2tlciogc2VuZGVyLCBpbnQgaWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiB0ZXh0KQor
eworICAgIG1fd2ViVmlldy0+Y2xpZW50KCktPnJlcXVlc3RDaGVja2luZ09mVGV4dCh0ZXh0LCBu
ZXcgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwoaWRlbnRpZmllciwgc2VuZGVyKSk7Cit9
CisKIFN0cmluZyBFZGl0b3JDbGllbnRJbXBsOjpnZXRBdXRvQ29ycmVjdFN1Z2dlc3Rpb25Gb3JN
aXNzcGVsbGVkV29yZChjb25zdCBTdHJpbmcmIG1pc3NwZWxsZWRXb3JkKQogewogICAgIGlmICgh
KGlzQ29udGludW91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKCkgJiYgbV93ZWJWaWV3LT5jbGllbnQo
KSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJ
bXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9FZGl0b3JDbGllbnRJbXBsLmgKaW5k
ZXggOWRiZDZhZmIzNzFkNjQxMmEwYWYyMGU4ZGI3Yjg1MThjNzg4N2UwZS4uZmYxY2I0ZDI2YjY2
M2JhNzY3NThmYTY2MGFlNDhmNTFjOWUxM2MwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvRWRpdG9yQ2xpZW50SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL0VkaXRvckNsaWVudEltcGwuaApAQCAtMzcsNiArMzcsNyBAQAogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiBjbGFzcyBIVE1MSW5wdXRFbGVtZW50OworY2xhc3MgU3BlbGxDaGVja2VyOwog
fQogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTExMSw3ICsxMTIsNyBAQCBwdWJsaWM6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYg
Z3Vlc3Nlcyk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxTZXRJbnB1dE1ldGhvZFN0YXRlKCk7CiAg
ICAgdmlydHVhbCB2b2lkIHNldElucHV0TWV0aG9kU3RhdGUoYm9vbCBlbmFibGVkKTsKLSAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdENoZWNraW5nT2ZTdHJpbmcoV2ViQ29yZTo6U3BlbGxDaGVja2Vy
KiwgaW50LCBjb25zdCBXVEY6OlN0cmluZyYpIHt9CisgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RD
aGVja2luZ09mU3RyaW5nKFdlYkNvcmU6OlNwZWxsQ2hlY2tlciosIGludCwgY29uc3QgV1RGOjpT
dHJpbmcmKTsKIAogICAgIC8vIFNob3dzIHRoZSBmb3JtIGF1dG9maWxsIHBvcHVwIGZvciB8bm9k
ZXwgaWYgaXQgaXMgYW4gSFRNTElucHV0RWxlbWVudCBhbmQKICAgICAvLyBpdCBpcyBlbXB0eS4g
IFRoaXMgaXMgY2FsbGVkIHdoZW4geW91IHByZXNzIHRoZSB1cCBvciBkb3duIGFycm93IGluIGEK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5j
cHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuY3BwCmluZGV4
IDA0NTdmNzc2ODg1MmUxMjNiNzU3NDNmY2ExNmFmYTk2ZGIwNTg5ZDQuLjU0MTU1ZGRmZTNkMDFj
MTZmODk2NjNkMjEyMzJkYTE0NGZhNGY5ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvV2ViU2V0dGluZ3NJbXBsLmNwcApAQCAtMzI5LDYgKzMyOSwxMSBAQCB2b2lkIFdlYlNl
dHRpbmdzSW1wbDo6c2V0SHlwZXJsaW5rQXVkaXRpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAg
ICBtX3NldHRpbmdzLT5zZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoZW5hYmxlZCk7CiB9CiAK
K3ZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxl
ZChib29sIGVuYWJsZWQpCit7CisgICAgbV9zZXR0aW5ncy0+c2V0QXN5bmNocm9ub3VzU3BlbGxD
aGVja2luZ0VuYWJsZWQoZW5hYmxlZCk7Cit9CisKIHZvaWQgV2ViU2V0dGluZ3NJbXBsOjpzZXRD
YXJldEJyb3dzaW5nRW5hYmxlZChib29sIGVuYWJsZWQpCiB7CiAgICAgbV9zZXR0aW5ncy0+c2V0
Q2FyZXRCcm93c2luZ0VuYWJsZWQoZW5hYmxlZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL3NyYy9XZWJTZXR0aW5nc0ltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dlYlNldHRpbmdzSW1wbC5oCmluZGV4IDQ5NjBiYjkzYTU5NzdhY2Y5NjA3N2ZmYzNhZGU2
NjZjN2EyNDU2YjguLmEwMzBjZDNhYTE2MWYxYmNlOGZjMTBmOGUzMmZiYzk1MjI5MzA2ZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCisr
KyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNldHRpbmdzSW1wbC5oCkBAIC05Nyw2
ICs5Nyw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWQyZENhbnZh
c0VuYWJsZWQoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHNldE1lbW9yeUluZm9FbmFibGVkKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRIeXBlcmxpbmtBdWRpdGluZ0VuYWJsZWQoYm9vbCk7
CisgICAgdmlydHVhbCB2b2lkIHNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGJv
b2wpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRDYXJldEJyb3dzaW5nRW5hYmxlZChib29sKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0SW50ZXJhY3RpdmVGb3JtVmFsaWRhdGlvbkVuYWJsZWQoYm9vbCk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2lu
Z0NvbXBsZXRpb25JbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRD
aGVja2luZ0NvbXBsZXRpb25JbXBsLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNzU5NzkwMmFhYTIyNWYxMjM4
OTQ0ZThkNWU1NDUwN2E0MWUxMDFkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuY3BwCkBAIC0wLDAgKzEs
NTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAq
CisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICog
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQorICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29m
dHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFS
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQK
KyAqIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKKyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNraW5nQ29tcGxl
dGlvbkltcGwuaCIKKworI2luY2x1ZGUgIlNwZWxsQ2hlY2tlci5oIgorI2luY2x1ZGUgIldlYlRl
eHRDaGVja2luZ1Jlc3VsdC5oIgorI2luY2x1ZGUgIldlYlZlY3Rvci5oIgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKK3N0YXRpYyBWZWN0b3I8U3Bl
bGxDaGVja2luZ1Jlc3VsdD4gdG9Db3JlUmVzdWx0cyhjb25zdCBXZWJWZWN0b3I8V2ViVGV4dENo
ZWNraW5nUmVzdWx0PiYgcmVzdWx0cykKK3sKKyAgICBWZWN0b3I8U3BlbGxDaGVja2luZ1Jlc3Vs
dD4gY29yZVJlc3VsdHM7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHRzLnNpemUo
KTsgKytpKQorICAgICAgICBjb3JlUmVzdWx0cy5hcHBlbmQoU3BlbGxDaGVja2luZ1Jlc3VsdChz
dGF0aWNfY2FzdDxEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZT4ocmVzdWx0c1tpXS5lcnJvcigp
KSwgcmVzdWx0c1tpXS5wb3NpdGlvbigpLCByZXN1bHRzW2ldLmxlbmd0aCgpKSk7CisgICAgcmV0
dXJuIGNvcmVSZXN1bHRzOworfQorCit2b2lkIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBs
OjpkaWRGaW5pc2hDaGVja2luZ1RleHQoY29uc3QgV2ViVmVjdG9yPFdlYlRleHRDaGVja2luZ1Jl
c3VsdD4mIHJlc3VsdHMpCit7CisgICAgbV9zcGVsbENoZWNrZXItPmRpZENoZWNrKG1faWRlbnRp
ZmllciwgdG9Db3JlUmVzdWx0cyhyZXN1bHRzKSk7CisgICAgZGVsZXRlIHRoaXM7Cit9CisKK30g
Ly8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjEwMTdj
NzRhNGJmNjI5ZDEzZjA4NjFkMzY1MjRkZjk5ZjhjOTYzMgotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsLmgK
QEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQor
ICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
ICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
KyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViVGV4dENoZWNraW5nQ29tcGxldGlvbkltcGxfaAor
I2RlZmluZSBXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uSW1wbF9oCisKKyNpbmNsdWRlICJXZWJU
ZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNw
ZWxsQ2hlY2tlcjsKK30KKworbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdlYlRleHRDaGVj
a2luZ0NvbXBsZXRpb25JbXBsIDogcHVibGljIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb24gewor
cHVibGljOgorICAgIFdlYlRleHRDaGVja2luZ0NvbXBsZXRpb25JbXBsKGludCBpZGVudGlmaWVy
LCBXZWJDb3JlOjpTcGVsbENoZWNrZXIqIHNwZWxsY2hlY2tlcikKKyAgICAgICAgOiBtX2lkZW50
aWZpZXIoaWRlbnRpZmllciksIG1fc3BlbGxDaGVja2VyKHNwZWxsY2hlY2tlcikKKyAgICB7Cisg
ICAgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaENoZWNraW5nVGV4dChjb25zdCBXZWJW
ZWN0b3I8V2ViVGV4dENoZWNraW5nUmVzdWx0PiYpOworCitwcml2YXRlOgorICAgIGludCBtX2lk
ZW50aWZpZXI7CisgICAgV2ViQ29yZTo6U3BlbGxDaGVja2VyKiBtX3NwZWxsQ2hlY2tlcjsKK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYktpdAorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL0No
YW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyY2ZhMTlmNjFiM2E3M2Q4YzA2NDc1ZmFl
OWM5YjhlYmE5YTQwYmIzLi41YTBjMzg5MmY4NTQ4Y2JjMDE2MGM5ZjIyYmYxY2FiM2E3NzExY2Fi
IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMjAgQEAKKzIwMTEtMDItMDMgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5j
b20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgW0No
cm9taXVtXSBTaG91bGQgaW1wbGVtZW50IEVkaXRvckNsaWVudEltcGw6OnJlcXVlc3RDaGVja2lu
Z09mU3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTUxMDEzCisKKyAgICAgICAgR2F2ZSBEUlQgaW1wbGVtZW50YXRpb24gZm9yIHJlcXVlc3RU
ZXh0Q2hlY2soKS4KKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRl
c3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzZXRBc3lu
Y2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZCk6IEltcGxlbWVudGVkLgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcDoKKyAgICAgICAgKGludm9rZUZp
bmlzaExhc3RUZXh0Q2hlY2spOiBBZGRlZC4KKyAgICAgICAgKFdlYlZpZXdIb3N0OjpyZXF1ZXN0
VGV4dENoZWNrKTogQWRkZWQuCisgICAgICAgIChXZWJWaWV3SG9zdDo6ZmluaXNoTGFzdFRleHRD
aGVjayk6IEFkZGVkLgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdI
b3N0Lmg6CisKIDIwMTEtMDItMDIgIERpcmsgUHJhbmtlICA8ZHByYW5rZUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWloYWkgUGFycGFyaXRhLgpkaWZmIC0tZ2l0IGEvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9v
bHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4
IDdjMThkYTc5NjQwNDdkNmE2Yzg2NGM2ZTc3NjA5NzI0MTUxZmQ1ZWYuLmE0NzlmMDM5ODNmMDdh
NjkxNGYyNTQ3OTA2MzRhMDBlZGYwNjUxZjkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVu
ZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTYyNyw5ICs2Mjcs
MTEgQEAgdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QWx3YXlzQWNjZXB0Q29va2llcyhj
b25zdCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW4KICAgICByZXN1bHQtPnNldE51bGwoKTsKIH0K
IAotdm9pZCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0QXN5bmNocm9ub3VzU3BlbGxDaGVja2lu
Z0VuYWJsZWQoY29uc3QgQ3BwQXJndW1lbnRMaXN0JiwgQ3BwVmFyaWFudCopCit2b2lkIExheW91
dFRlc3RDb250cm9sbGVyOjpzZXRBc3luY2hyb25vdXNTcGVsbENoZWNraW5nRW5hYmxlZChjb25z
dCBDcHBBcmd1bWVudExpc3QmIGFyZ3VtZW50cywgQ3BwVmFyaWFudCogcmVzdWx0KQogewotICAg
IC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcy4KKyAgICBpZiAoYXJndW1lbnRzLnNpemUoKSA+IDAg
JiYgYXJndW1lbnRzWzBdLmlzQm9vbCgpKQorICAgICAgICBtX3NoZWxsLT53ZWJWaWV3KCktPnNl
dHRpbmdzKCktPnNldEFzeW5jaHJvbm91c1NwZWxsQ2hlY2tpbmdFbmFibGVkKGNwcFZhcmlhbnRU
b0Jvb2woYXJndW1lbnRzWzBdKSk7CisgICAgcmVzdWx0LT5zZXROdWxsKCk7CiB9CiAKIHZvaWQg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnNob3dXZWJJbnNwZWN0b3IoY29uc3QgQ3BwQXJndW1lbnRM
aXN0JiwgQ3BwVmFyaWFudCogcmVzdWx0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRy
ZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuY3BwIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vV2ViVmlld0hvc3QuY3BwCmluZGV4IDE4YjEwN2ZmNTkyY2Y2ZTc2NDIzM2VjMmJhZjg5NWVh
MzhjOTEyY2UuLjI2MzZiMzA3MWNiNGVlM2IwZDFjNDJlMjU4ODBlNjY0OTVlZmIyZTIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAorKysg
Yi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKQEAgLTUyLDYg
KzUyLDggQEAKICNpbmNsdWRlICJXZWJTaXplLmgiCiAjaW5jbHVkZSAiV2ViU3BlZWNoSW5wdXRD
b250cm9sbGVyTW9jay5oIgogI2luY2x1ZGUgIldlYlN0b3JhZ2VOYW1lc3BhY2UuaCIKKyNpbmNs
dWRlICJXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uLmgiCisjaW5jbHVkZSAiV2ViVGV4dENoZWNr
aW5nUmVzdWx0LmgiCiAjaW5jbHVkZSAiV2ViVVJMUmVxdWVzdC5oIgogI2luY2x1ZGUgIldlYlVS
TFJlc3BvbnNlLmgiCiAjaW5jbHVkZSAiV2ViVmlldy5oIgpAQCAtNjAsNiArNjIsNyBAQAogI2lu
Y2x1ZGUgIndlYmtpdC9zdXBwb3J0L3dlYmtpdF9zdXBwb3J0LmgiCiAjaW5jbHVkZSA8d3RmL0Fz
c2VydGlvbnMuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiB1c2luZyBuYW1lc3BhY2UgV2Vi
S2l0OwpAQCAtMjI1LDYgKzIyOCwxMiBAQCBzdGF0aWMgc3RyaW5nIHRleHRBZmZpbml0eURlc2Ny
aXB0aW9uKFdlYlRleHRBZmZpbml0eSBhZmZpbml0eSkKICAgICByZXR1cm4gIihVTktOT1dOIEFG
RklOSVRZKSI7CiB9CiAKK3N0YXRpYyB2b2lkIGludm9rZUZpbmlzaExhc3RUZXh0Q2hlY2sodm9p
ZCogY29udGV4dCkKK3sKKyAgICBXZWJWaWV3SG9zdCogd3ZoID0gc3RhdGljX2Nhc3Q8V2ViVmll
d0hvc3QqPihjb250ZXh0KTsKKyAgICB3dmgtPmZpbmlzaExhc3RUZXh0Q2hlY2soKTsKK30KKwog
Ly8gV2ViVmlld0NsaWVudCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFdlYlZpZXcqIFdlYlZpZXdIb3N0OjpjcmVhdGVWaWV3
KFdlYkZyYW1lKiwgY29uc3QgV2ViVVJMUmVxdWVzdCYsIGNvbnN0IFdlYldpbmRvd0ZlYXR1cmVz
JiwgY29uc3QgV2ViU3RyaW5nJikKQEAgLTQwOSw2ICs0MTgsMzUgQEAgdm9pZCBXZWJWaWV3SG9z
dDo6c3BlbGxDaGVjayhjb25zdCBXZWJTdHJpbmcmIHRleHQsIGludCYgbWlzc3BlbGxlZE9mZnNl
dCwgaW50JgogICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZCh0ZXh0LCAmbWlzc3BlbGxl
ZE9mZnNldCwgJm1pc3NwZWxsZWRMZW5ndGgpOwogfQogCit2b2lkIFdlYlZpZXdIb3N0OjpyZXF1
ZXN0Q2hlY2tpbmdPZlRleHQoY29uc3QgV2ViU3RyaW5nJiB0ZXh0LCBXZWJUZXh0Q2hlY2tpbmdD
b21wbGV0aW9uKiBjb21wbGV0aW9uKQoreworICAgIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja2lu
Z0NvbXBsZXRpb24gPSBjb21wbGV0aW9uOworICAgIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVja1N0
cmluZyA9IHRleHQ7CisgICAgd2Via2l0X3N1cHBvcnQ6OlBvc3REZWxheWVkVGFzayhpbnZva2VG
aW5pc2hMYXN0VGV4dENoZWNrLCBzdGF0aWNfY2FzdDx2b2lkKj4odGhpcyksIDApOworfQorCit2
b2lkIFdlYlZpZXdIb3N0OjpmaW5pc2hMYXN0VGV4dENoZWNrKCkKK3sKKyAgICBWZWN0b3I8V2Vi
VGV4dENoZWNraW5nUmVzdWx0PiByZXN1bHRzOworICAgIC8vIEZJWE1FOiBEbyB0aGUgZ3JhbW1h
ciBjaGVjay4KKyAgICBpbnQgb2Zmc2V0ID0gMDsKKyAgICBTdHJpbmcgdGV4dChtX2xhc3RSZXF1
ZXN0ZWRUZXh0Q2hlY2tTdHJpbmcuZGF0YSgpLCBtX2xhc3RSZXF1ZXN0ZWRUZXh0Q2hlY2tTdHJp
bmcubGVuZ3RoKCkpOworICAgIHdoaWxlICh0ZXh0Lmxlbmd0aCgpKSB7CisgICAgICAgIGludCBt
aXNzcGVsbGVkUG9zaXRpb24gPSAwOworICAgICAgICBpbnQgbWlzc3BlbGxlZExlbmd0aCA9IDA7
CisgICAgICAgIG1fc3BlbGxjaGVjay5zcGVsbENoZWNrV29yZChXZWJTdHJpbmcodGV4dC5jaGFy
YWN0ZXJzKCksIHRleHQubGVuZ3RoKCkpLCAmbWlzc3BlbGxlZFBvc2l0aW9uLCAmbWlzc3BlbGxl
ZExlbmd0aCk7CisgICAgICAgIGlmICghbWlzc3BlbGxlZExlbmd0aCkKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICByZXN1bHRzLmFwcGVuZChXZWJUZXh0Q2hlY2tpbmdSZXN1bHQoV2ViVGV4
dENoZWNraW5nUmVzdWx0OjpFcnJvclNwZWxsaW5nLCBvZmZzZXQgKyBtaXNzcGVsbGVkUG9zaXRp
b24sIG1pc3NwZWxsZWRMZW5ndGgpKTsKKyAgICAgICAgdGV4dCA9IHRleHQuc3Vic3RyaW5nKG1p
c3NwZWxsZWRQb3NpdGlvbiArIG1pc3NwZWxsZWRMZW5ndGgpOworICAgICAgICBvZmZzZXQgKz0g
bWlzc3BlbGxlZFBvc2l0aW9uOworICAgIH0KKworICAgIG1fbGFzdFJlcXVlc3RlZFRleHRDaGVj
a2luZ0NvbXBsZXRpb24tPmRpZEZpbmlzaENoZWNraW5nVGV4dChyZXN1bHRzKTsKKyAgICBtX2xh
c3RSZXF1ZXN0ZWRUZXh0Q2hlY2tpbmdDb21wbGV0aW9uID0gMDsKK30KKworCiBXZWJTdHJpbmcg
V2ViVmlld0hvc3Q6OmF1dG9Db3JyZWN0V29yZChjb25zdCBXZWJTdHJpbmcmKQogewogICAgIC8v
IFJldHVybnMgYW4gZW1wdHkgc3RyaW5nIGFzIE1hYyBXZWJLaXQgKCdXZWJLaXRTdXBwb3J0L1dl
YkVkaXRvckNsaWVudC5tbScpCkBAIC0xMTE1LDYgKzExNTMsNyBAQCB2b2lkIFdlYlZpZXdIb3N0
OjpvcGVuRmlsZVN5c3RlbShXZWJGcmFtZSogZnJhbWUsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlw
ZSwgbG9uZwogV2ViVmlld0hvc3Q6OldlYlZpZXdIb3N0KFRlc3RTaGVsbCogc2hlbGwpCiAgICAg
OiBtX3NoZWxsKHNoZWxsKQogICAgICwgbV93ZWJXaWRnZXQoMCkKKyAgICAsIG1fbGFzdFJlcXVl
c3RlZFRleHRDaGVja2luZ0NvbXBsZXRpb24oMCkKIHsKICAgICByZXNldCgpOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vV2ViVmlld0hvc3QuaCBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKaW5kZXggODNkMjFkYzYzN2U2
NzBhN2FiMDI5NDhhNDk3ZWJlODk5N2VlYzY0OC4uOWFhNGFmNTVjNDE4Y2EzYzJjNWE3OWM0NzY4
ZDgyNGI2MThhYzZmZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3
SG9zdC5oCkBAIC0xMjYsNiArMTI2LDcgQEAgY2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2Vi
S2l0OjpXZWJWaWV3Q2xpZW50LCBwdWJsaWMgV2ViS2l0OjpXZWJGcmFtZUNsaWVudCwKICAgICB2
aXJ0dWFsIHZvaWQgZGlkRW5kRWRpdGluZygpOwogICAgIHZpcnR1YWwgYm9vbCBoYW5kbGVDdXJy
ZW50S2V5Ym9hcmRFdmVudCgpOwogICAgIHZpcnR1YWwgdm9pZCBzcGVsbENoZWNrKGNvbnN0IFdl
YktpdDo6V2ViU3RyaW5nJiwgaW50JiBvZmZzZXQsIGludCYgbGVuZ3RoKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVxdWVzdENoZWNraW5nT2ZUZXh0KGNvbnN0IFdlYktpdDo6V2ViU3RyaW5nJiwgV2Vi
S2l0OjpXZWJUZXh0Q2hlY2tpbmdDb21wbGV0aW9uKik7CiAgICAgdmlydHVhbCBXZWJLaXQ6Oldl
YlN0cmluZyBhdXRvQ29ycmVjdFdvcmQoY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2
aXJ0dWFsIHZvaWQgcnVuTW9kYWxBbGVydERpYWxvZyhXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3Qg
V2ViS2l0OjpXZWJTdHJpbmcmKTsKICAgICB2aXJ0dWFsIGJvb2wgcnVuTW9kYWxDb25maXJtRGlh
bG9nKFdlYktpdDo6V2ViRnJhbWUqLCBjb25zdCBXZWJLaXQ6OldlYlN0cmluZyYpOwpAQCAtMjA3
LDcgKzIwOCwxMCBAQCBjbGFzcyBXZWJWaWV3SG9zdCA6IHB1YmxpYyBXZWJLaXQ6OldlYlZpZXdD
bGllbnQsIHB1YmxpYyBXZWJLaXQ6OldlYkZyYW1lQ2xpZW50LAogICAgIHZpcnR1YWwgdm9pZCBv
cGVuRmlsZVN5c3RlbShXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJGaWxlU3lzdGVtOjpU
eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYktpdDo6V2ViRmlsZVN5c3RlbUNh
bGxiYWNrcyopOwogCiAgICAgV2ViS2l0OjpXZWJEZXZpY2VPcmllbnRhdGlvbkNsaWVudE1vY2sq
IGRldmljZU9yaWVudGF0aW9uQ2xpZW50TW9jaygpOworICAgIAorICAgIC8vIFNwZWxsY2hlY2sg
cmVsYXRlZCBoZWxwZXIgQVBJcwogICAgIE1vY2tTcGVsbENoZWNrKiBtb2NrU3BlbGxDaGVjaygp
OworICAgIHZvaWQgZmluaXNoTGFzdFRleHRDaGVjaygpOwogCiAgICAgLy8gR2VvbG9jYXRpb24g
Y2xpZW50IG1vY2tzIGZvciBMYXlvdXRUZXN0Q29udHJvbGxlcgogICAgIFdlYktpdDo6V2ViR2Vv
bG9jYXRpb25DbGllbnRNb2NrKiBnZW9sb2NhdGlvbkNsaWVudE1vY2soKTsKQEAgLTMyMCw2ICsz
MjQsOSBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJLaXQ6OldlYlNwZWVjaElucHV0Q29udHJv
bGxlck1vY2s+IG1fc3BlZWNoSW5wdXRDb250cm9sbGVyTW9jazsKIAogICAgIE93blB0cjxUZXN0
TmF2aWdhdGlvbkNvbnRyb2xsZXIqPiBtX25hdmlnYXRpb25Db250cm9sbGVyOworCisgICAgV2Vi
S2l0OjpXZWJTdHJpbmcgbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNrU3RyaW5nOworICAgIFdlYktp
dDo6V2ViVGV4dENoZWNraW5nQ29tcGxldGlvbiogbV9sYXN0UmVxdWVzdGVkVGV4dENoZWNraW5n
Q29tcGxldGlvbjsKIH07CiAKICNlbmRpZiAvLyBXZWJWaWV3SG9zdF9oCg==
</data>
<flag name="review"
          id="73026"
          type_id="1"
          status="+"
          setter="fishd"
    />
          </attachment>
      

    </bug>

</bugzilla>