<?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>33812</bug_id>
          
          <creation_ts>2010-01-18 14:20:29 -0800</creation_ts>
          <short_desc>Need way to be notified when a page changes its favicon</short_desc>
          <delta_ts>2010-04-22 13:04:48 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>All</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="Dave Moore">davemoore</reporter>
          <assigned_to name="Dave Moore">davemoore</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>beidson</cc>
    
    <cc>cjerdonek</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>sam</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>181995</commentid>
    <comment_count>0</comment_count>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-18 14:20:29 -0800</bug_when>
    <thetext>A page can change its favicon by setting link tag of this format:
&lt;link rel=&quot;shortcut icon&quot; type=&quot;image/x-icon&quot; href=&quot;http://test.com/newfavicon.ico&quot;/&gt;

Javascript can be used to change this link. This will cause Document::setIconURL() to be called. But it never notifies the frame loader about it, as is done when the title is changed. There should be a notification sent that will allow a containing application to update it&apos;s UI when this happens.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182003</commentid>
    <comment_count>1</comment_count>
      <attachid>46853</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-18 14:40:40 -0800</bug_when>
    <thetext>Created attachment 46853
Patch to implement

I&apos;m aware that this patch only works on Windows. I don&apos;t have a Mac to test / implement on. I would like to get a review of what I have so that I can be confident that I&apos;m not wasting someone&apos;s time when I ask them to help with the implementations on other platforms.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182008</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 14:52:12 -0800</bug_when>
    <thetext>Attachment 46853 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/loader/DocumentLoader.cpp:612:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/loader/DocumentLoader.cpp:615:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/loader/DocumentLoader.cpp:619:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebKitTools/WinLauncher/WinLauncher.h:64:  Extra space after ( in function call  [whitespace/parens] [4]
WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp:192:  Extra space after ( in function call  [whitespace/parens] [4]
WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp:193:  Declaration has space between type name and * in IWebView *webView  [whitespace/declaration] [3]
WebKitTools/DumpRenderTree/win/FrameLoadDelegate.cpp:195:  Declaration has space between type name and * in IWebFrame *frame  [whitespace/declaration] [3]
WebKitTools/DumpRenderTree/win/FrameLoadDelegate.h:75:  Extra space after ( in function call  [whitespace/parens] [4]
Total errors found: 8


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182012</commentid>
    <comment_count>3</comment_count>
      <attachid>46857</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-18 14:58:23 -0800</bug_when>
    <thetext>Created attachment 46857
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182122</commentid>
    <comment_count>4</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-18 20:41:14 -0800</bug_when>
    <thetext>Looks sane to me, but I ain&apos;t no expert in this area. Adding a few peeps who may be more experty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182123</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 20:41:28 -0800</bug_when>
    <thetext>Attachment 46857 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/200097</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182125</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 20:48:59 -0800</bug_when>
    <thetext>Attachment 46857 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/198362</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182128</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-18 21:17:21 -0800</bug_when>
    <thetext>Attachment 46857 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/200112</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182328</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2010-01-19 11:06:17 -0800</bug_when>
    <thetext>(In reply to comment #1)
&gt; Created an attachment (id=46853) [details]
&gt; Patch to implement
&gt; 
&gt; I&apos;m aware that this patch only works on Windows. I don&apos;t have a Mac to test /
&gt; implement on. I would like to get a review of what I have so that I can be
&gt; confident that I&apos;m not wasting someone&apos;s time when I ask them to help with the
&gt; implementations on other platforms.

You don&apos;t need to implement the methods on all platforms, but you need to provide empty implementations for all FrameLoaderClient implementations, so that all ports keep building when your patch lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182458</commentid>
    <comment_count>9</comment_count>
      <attachid>46857</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-01-19 14:25:08 -0800</bug_when>
    <thetext>Comment on attachment 46857
Patch

We can&apos;t land a patch which breaks other builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182460</commentid>
    <comment_count>10</comment_count>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-19 14:28:35 -0800</bug_when>
    <thetext>I&apos;m not asking to have it landed yet. I wanted an initial opinion about the approach before I did the work (or got it done by someone else) to make it work on all platforms. Before it is to be landed it will at least have empty implementations that don&apos;t break the builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182792</commentid>
    <comment_count>11</comment_count>
      <attachid>47030</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-20 07:38:51 -0800</bug_when>
    <thetext>Created attachment 47030
Fixes builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182843</commentid>
    <comment_count>12</comment_count>
      <attachid>47043</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-20 09:53:46 -0800</bug_when>
    <thetext>Created attachment 47043
Patch to implement

Removes the set executable on the new files</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182846</commentid>
    <comment_count>13</comment_count>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-20 09:58:05 -0800</bug_when>
    <thetext>I think this is ready to land now. I&apos;ve implemented the notification in the same way as the title change notification is done...there is a willChange..., a didChange... and a didReceive... method in FrameLoaderClient which can be used to notify the wrapper. In chromium we do that. Doing it on other platforms is left to future work if it&apos;s ever needed.

I&apos;ve implemented the new methods from the FrameLoaderClient interface in all places. I believe the builds will work. It&apos;s been tested on mac, win, chromium.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182941</commentid>
    <comment_count>14</comment_count>
      <attachid>47069</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-20 15:22:07 -0800</bug_when>
    <thetext>Created attachment 47069
Patch to implement

Uploading again because buildbots were broken.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>182945</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-20 15:24:49 -0800</bug_when>
    <thetext>Attachment 47069 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:848:  Tab found; better to use spaces  [whitespace/tab] [1]
WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp:848:  Should have a space between // and comment  [whitespace/comments] [4]
Total errors found: 2


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183052</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-20 20:07:22 -0800</bug_when>
    <thetext>Attachment 47069 did not build on gtk:
Build output: http://webkit-commit-queue.appspot.com/results/201835</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183057</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-20 20:29:08 -0800</bug_when>
    <thetext>Attachment 47069 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/202647</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183441</commentid>
    <comment_count>18</comment_count>
      <attachid>47169</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-21 18:34:43 -0800</bug_when>
    <thetext>Created attachment 47169
Fixes style and gtk failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183534</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-01-22 01:07:20 -0800</bug_when>
    <thetext>Attachment 47169 did not build on qt:
Build output: http://webkit-commit-queue.appspot.com/results/204591</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183543</commentid>
    <comment_count>20</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 01:47:10 -0800</bug_when>
    <thetext>&gt; Build output: http://webkit-commit-queue.appspot.com/results/204591

I don&apos;t know why this results link is blank.  We&apos;ve seen this bug a couple times.  I&apos;ll try to investigate it tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>183550</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-01-22 01:58:16 -0800</bug_when>
    <thetext>(In reply to comment #20)
&gt; &gt; Build output: http://webkit-commit-queue.appspot.com/results/204591
&gt; 
&gt; I don&apos;t know why this results link is blank.  We&apos;ve seen this bug a couple
&gt; times.  I&apos;ll try to investigate it tomorrow.

Interesting.  Both times it got a 500 from AppEngine and had to re-try the upload.  I bet the log was too big.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184295</commentid>
    <comment_count>22</comment_count>
      <attachid>47351</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-01-25 09:31:06 -0800</bug_when>
    <thetext>Created attachment 47351
Should fix qt build failure</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184403</commentid>
    <comment_count>23</comment_count>
      <attachid>47351</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-25 12:35:09 -0800</bug_when>
    <thetext>Comment on attachment 47351
Should fix qt build failure

Lots of comments in the first pass. Welcome to WebKit-land :)

&gt; +    if (Frame* f = frame())
&gt; +        f-&gt;loader()-&gt;setIconURL(m_iconURL);

In WebKit, we try to use descriptive variable names: Frame* frame = this-&gt;frame()

&gt; +    if (loader == m_documentLoader) {
&gt; +        m_client-&gt;dispatchDidReceiveIconURL(loader-&gt;iconURL());
&gt; +        // TODO[davemoore@chromium.org] How do we update the icons for history?

TODO[...] =&gt; FIXME:


&gt; +void FrameLoaderClientImpl::willChangeIconURL(DocumentLoader*)
&gt; +{
&gt; +    // FIXME

A bit more comment here?

&gt; +}
&gt; +
&gt; +void FrameLoaderClientImpl::didChangeIconURL(DocumentLoader*)
&gt; +{
&gt; +    // FIXME
&gt; +}

Ditto.

&gt; Index: WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp
&gt; ===================================================================
&gt; --- WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(revision 53780)
&gt; +++ WebKit/gtk/WebCoreSupport/FrameLoaderClientGtk.cpp	(working copy)
&gt; @@ -749,6 +749,11 @@ void FrameLoaderClient::dispatchDidRecei
&gt;      }
&gt;  }
&gt;  
&gt; +void FrameLoaderClient::dispatchDidReceiveIconURL(const String&amp; iconURL)
&gt; +{
&gt; +    notImplemented();

Why is it notImplemented() here and FIXME in other ports?

&gt;  
&gt; +void FrameLoaderClient::willChangeIconURL(WebCore::DocumentLoader*)
&gt; +{
&gt; +    notImplemented();

Ditto.

&gt; +void FrameLoaderClient::didChangeIconURL(WebCore::DocumentLoader*)
&gt; +{
&gt; +    // FIXME implement to update favicon

Colon after FIXME and make it a sentence.

FIXME: Implement to update favicon.

&gt; +void WebFrameLoaderClient::dispatchDidReceiveIconURL(const String&amp; iconURL)

I think you should omit parameter name here -- otherwise, compiler will yell at you.

&gt; +void WebFrameLoaderClient::willChangeIconURL(DocumentLoader* loader)

Ditto.

&gt; +{
&gt; +    // FIXME: Implement to send notification if icon url is about to change
&gt; +}
&gt; +
&gt; +void WebFrameLoaderClient::didChangeIconURL(DocumentLoader* loader)

Ditto.

&gt;  
&gt;      /*!
&gt; +        @method webView:didReceiveIconURL:forFrame:
&gt; +        @abstract Notifies the delegate that the page icon URL for a frame has been received
&gt; +        @param webView The WebView sending the message
&gt; +        @param iconURL The new icon url
&gt; +        @param frame The frame for which the icon URL has been received
&gt; +        - (void)webView:(WebView *)sender didReceiveIconURL:(NSString *)iconURL forFrame:(WebFrame *)frame;
&gt; +    */
&gt; +    HRESULT didReceiveIconURL([in] IWebView* webView, [in] BSTR iconURL, [in] IWebFrame* frame);
&gt; +
&gt; +    /*!

I have no clue about this parts of WebKit. Need aroben to look.


Also, you should modify platform/(mac|qt|gtk)/Skipped, if you&apos;re not planning to implement DRT changes for them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184404</commentid>
    <comment_count>24</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-01-25 12:35:58 -0800</bug_when>
    <thetext>+aroben, can you look over the WebKit/win parts? I know nothing about that neck of the woods.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184425</commentid>
    <comment_count>25</comment_count>
      <attachid>47351</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-25 15:21:47 -0800</bug_when>
    <thetext>Comment on attachment 47351
Should fix qt build failure

&gt; +++ WebKit/win/Interfaces/IWebFrameLoadDelegate.idl	(working copy)
&gt; @@ -114,6 +114,16 @@ interface IWebFrameLoadDelegate : IUnkno
&gt;      HRESULT didReceiveTitle([in] IWebView* webView, [in] BSTR title, [in] IWebFrame* frame);
&gt;  
&gt;      /*!
&gt; +        @method webView:didReceiveIconURL:forFrame:
&gt; +        @abstract Notifies the delegate that the page icon URL for a frame has been received
&gt; +        @param webView The WebView sending the message
&gt; +        @param iconURL The new icon url
&gt; +        @param frame The frame for which the icon URL has been received
&gt; +        - (void)webView:(WebView *)sender didReceiveIconURL:(NSString *)iconURL forFrame:(WebFrame *)frame;
&gt; +    */
&gt; +    HRESULT didReceiveIconURL([in] IWebView* webView, [in] BSTR iconURL, [in] IWebFrame* frame);
&gt; +
&gt; +    /*!
&gt;          @method webView:didReceiveIcon:forFrame:
&gt;          @abstract Notifies the delegate that a page icon image for a frame has been received
&gt;          @param webView The WebView sending the message

This will break nightly builds of WebKit. (New delegate functions can&apos;t be added to interfaces that existed when Safari/iTunes last shipped.) You need to add this function to the end of the IWebFrameLoadDelegatePrivate2 interface.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184426</commentid>
    <comment_count>26</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-01-25 15:22:30 -0800</bug_when>
    <thetext>CCing Tim and Brady. Hopefully they can comment on the new API and its implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>184427</commentid>
    <comment_count>27</comment_count>
    <who name="Brady Eidson">beidson</who>
    <bug_when>2010-01-25 15:41:14 -0800</bug_when>
    <thetext>There&apos;s a couple of shortcomings with the work that&apos;s been done here.

HTML 5 specifies support for multiple icons for a given document.  See http://www.whatwg.org/specs/web-apps/current-work/multipage/links.html#rel-icon for details and examples.

WebKit already supports this to some degree, and we need to make the support (much) better in the future.

The API probably needs to pass along size and mime-type information with the URL.

Therefore, the client method name &quot;didReceiveIconURL&quot; is a little too specific to the URL portion of the data.

I can&apos;t think of a fabulous alternative at the moment.  My gut instinct was &quot;did ReceiveIconData&quot; but I don&apos;t really like it for some reason.

The methods &quot;willChangeIconURL&quot; and &quot;didChangeIconURL&quot; also need to be rethought.  If the new &lt;link rel=icon&gt; isn&apos;t overriding a previous entry, then nothing &quot;changed&quot;

There might have to be smarts that determine - for the purposes of the client callback - whether the icon information is new, or overriding a previously specified link.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198439</commentid>
    <comment_count>28</comment_count>
      <attachid>50460</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-03-10 17:48:25 -0800</bug_when>
    <thetext>Created attachment 50460
Patch to implement

I&apos;ve modified the patch to not include the icon url in the notification. Instead there is just a notification that the icons for the document changed. Agents are free to ignore those notifications. If an agent is interested it can get the updated icon url from the document. This will allow more flexibility as webkit adds additional support for multiple favicons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198440</commentid>
    <comment_count>29</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 17:52:18 -0800</bug_when>
    <thetext>Attachment 50460 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
WebCore/loader/FrameLoader.cpp:4034:  One line control clauses should not use braces.  [whitespace/braces] [4]
Total errors found: 5 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198449</commentid>
    <comment_count>30</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-10 18:28:40 -0800</bug_when>
    <thetext>Attachment 50460 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/597004</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>198648</commentid>
    <comment_count>31</comment_count>
      <attachid>50509</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-03-11 08:53:57 -0800</bug_when>
    <thetext>Created attachment 50509
Fixed build failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206792</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-03-31 16:16:48 -0700</bug_when>
    <thetext>Attachment 50509 did not build on win:
Build output: http://webkit-commit-queue.appspot.com/results/1614130</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211177</commentid>
    <comment_count>33</comment_count>
      <attachid>53052</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-10 14:06:03 -0700</bug_when>
    <thetext>Created attachment 53052
Patch to implement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211180</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 14:12:28 -0700</bug_when>
    <thetext>Attachment 53052 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211184</commentid>
    <comment_count>35</comment_count>
      <attachid>53054</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-10 14:23:58 -0700</bug_when>
    <thetext>Created attachment 53054
Removed stupid Ctrl-Ms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211185</commentid>
    <comment_count>36</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 14:28:40 -0700</bug_when>
    <thetext>Attachment 53054 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 34 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211190</commentid>
    <comment_count>37</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 14:47:06 -0700</bug_when>
    <thetext>Attachment 53052 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1663283</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211193</commentid>
    <comment_count>38</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 15:11:53 -0700</bug_when>
    <thetext>Attachment 53054 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1590423</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211218</commentid>
    <comment_count>39</comment_count>
      <attachid>53059</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-10 16:41:04 -0700</bug_when>
    <thetext>Created attachment 53059
Fix chromium error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>211220</commentid>
    <comment_count>40</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-10 16:45:22 -0700</bug_when>
    <thetext>Attachment 53059 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213268</commentid>
    <comment_count>41</comment_count>
      <attachid>53059</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 09:12:42 -0700</bug_when>
    <thetext>Comment on attachment 53059
Fix chromium error

Dave is moving the call to IWebFrameLoadDelegatePrivate2.idl.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213284</commentid>
    <comment_count>42</comment_count>
      <attachid>53534</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-16 10:22:37 -0700</bug_when>
    <thetext>Created attachment 53534
Patch to fix idl issue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213285</commentid>
    <comment_count>43</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 10:25:59 -0700</bug_when>
    <thetext>Attachment 53534 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 36 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213289</commentid>
    <comment_count>44</comment_count>
      <attachid>53536</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-16 10:45:35 -0700</bug_when>
    <thetext>Created attachment 53536
Skip test on other platforms</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213291</commentid>
    <comment_count>45</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 10:48:17 -0700</bug_when>
    <thetext>Attachment 53536 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213311</commentid>
    <comment_count>46</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 11:18:41 -0700</bug_when>
    <thetext>Attachment 53534 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1731012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213321</commentid>
    <comment_count>47</comment_count>
      <attachid>53545</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-16 11:34:55 -0700</bug_when>
    <thetext>Created attachment 53545
Fix expectations syntax error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213327</commentid>
    <comment_count>48</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 11:39:50 -0700</bug_when>
    <thetext>Attachment 53545 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213355</commentid>
    <comment_count>49</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 12:09:18 -0700</bug_when>
    <thetext>Attachment 53536 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1710150</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213400</commentid>
    <comment_count>50</comment_count>
      <attachid>53559</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-16 13:41:36 -0700</bug_when>
    <thetext>Created attachment 53559
Fix chromium error</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213402</commentid>
    <comment_count>51</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 13:43:24 -0700</bug_when>
    <thetext>Attachment 53545 did not build on chromium:
Build output: http://webkit-commit-queue.appspot.com/results/1658442</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213408</commentid>
    <comment_count>52</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-16 13:48:15 -0700</bug_when>
    <thetext>Attachment 53559 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213458</commentid>
    <comment_count>53</comment_count>
      <attachid>53559</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 15:56:38 -0700</bug_when>
    <thetext>Comment on attachment 53559
Fix chromium error

ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213553</commentid>
    <comment_count>54</comment_count>
      <attachid>53559</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-16 18:48:30 -0700</bug_when>
    <thetext>Comment on attachment 53559
Fix chromium error

Rejecting patch 53559 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Dimitri Glazkov&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
eLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/dom/icon-url-property-expected.txt
patching file LayoutTests/fast/dom/icon-url-property.html
patching file LayoutTests/platform/chromium/test_expectations.txt
Hunk #1 FAILED at 2792.
1 out of 1 hunk FAILED -- saving rejects to file LayoutTests/platform/chromium/test_expectations.txt.rej
patching file LayoutTests/platform/gtk/Skipped
patching file LayoutTests/platform/mac/Skipped
patching file LayoutTests/platform/qt/Skipped

Full output: http://webkit-commit-queue.appspot.com/results/1586512</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213559</commentid>
    <comment_count>55</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-16 19:11:19 -0700</bug_when>
    <thetext>Dave, it looks like test_expectations.txt got stale. Can you rebase the patch and re-upload?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213758</commentid>
    <comment_count>56</comment_count>
      <attachid>53628</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-18 08:07:54 -0700</bug_when>
    <thetext>Created attachment 53628
Fixed test_expectations collision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213760</commentid>
    <comment_count>57</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-18 08:09:51 -0700</bug_when>
    <thetext>Attachment 53628 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213762</commentid>
    <comment_count>58</comment_count>
      <attachid>53628</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-18 08:34:06 -0700</bug_when>
    <thetext>Comment on attachment 53628
Fixed test_expectations collision

Rejecting patch 53628 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Dimitri Glazkov&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
s to file WebKitTools/WinLauncher/WinLauncher.h.rej
patching file LayoutTests/ChangeLog
Hunk #1 succeeded at 1 with fuzz 3.
patching file LayoutTests/fast/dom/icon-url-property-expected.txt
patching file LayoutTests/fast/dom/icon-url-property.html
patching file LayoutTests/platform/chromium/test_expectations.txt
patching file LayoutTests/platform/gtk/Skipped
patching file LayoutTests/platform/mac/Skipped
patching file LayoutTests/platform/qt/Skipped
Hunk #1 succeeded at 2788 (offset -10 lines).

Full output: http://webkit-commit-queue.appspot.com/results/1614616</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213763</commentid>
    <comment_count>59</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-18 08:45:47 -0700</bug_when>
    <thetext>:(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213802</commentid>
    <comment_count>60</comment_count>
      <attachid>53636</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-18 14:20:55 -0700</bug_when>
    <thetext>Created attachment 53636
Another collision</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213806</commentid>
    <comment_count>61</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-18 14:29:55 -0700</bug_when>
    <thetext>Attachment 53636 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebKitTools/WinLauncher/WinLauncher.h:64:  One or more unexpected \r (^M) found; better to use only a \n  [whitespace/carriage_return] [1]
Suppressing further [whitespace/carriage_return] reports for this file.
Total errors found: 4 in 40 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213810</commentid>
    <comment_count>62</comment_count>
      <attachid>53636</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-18 15:07:48 -0700</bug_when>
    <thetext>Comment on attachment 53636
Another collision

pretty, please, cq?!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213812</commentid>
    <comment_count>63</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 15:15:52 -0700</bug_when>
    <thetext>Are the style errors false positives?  Do we need to fix the style checker?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213814</commentid>
    <comment_count>64</comment_count>
      <attachid>53636</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-18 15:25:44 -0700</bug_when>
    <thetext>Comment on attachment 53636
Another collision

Rejecting patch 53636 from commit-queue.

Failed to run &quot;[&apos;/Users/eseidel/Projects/CommitQueue/WebKitTools/Scripts/svn-apply&apos;, &apos;--reviewer&apos;, &apos;Dimitri Glazkov&apos;, &apos;--force&apos;]&quot; exit_code: 1
Last 500 characters of output:
uncher/WinLauncher.h
Hunk #1 FAILED at 61.
1 out of 1 hunk FAILED -- saving rejects to file WebKitTools/WinLauncher/WinLauncher.h.rej
patching file LayoutTests/ChangeLog
patching file LayoutTests/fast/dom/icon-url-property-expected.txt
patching file LayoutTests/fast/dom/icon-url-property.html
patching file LayoutTests/platform/chromium/test_expectations.txt
patching file LayoutTests/platform/gtk/Skipped
patching file LayoutTests/platform/mac/Skipped
patching file LayoutTests/platform/qt/Skipped

Full output: http://webkit-commit-queue.appspot.com/results/1583617</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213815</commentid>
    <comment_count>65</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 15:27:35 -0700</bug_when>
    <thetext>The tools are probably failing on the \r.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213834</commentid>
    <comment_count>66</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-18 16:01:50 -0700</bug_when>
    <thetext>I will land by hand tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213850</commentid>
    <comment_count>67</comment_count>
      <attachid>53559</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 16:27:36 -0700</bug_when>
    <thetext>Comment on attachment 53559
Fix chromium error

Cleared Dimitri Glazkov&apos;s review+ from obsolete attachment 53559 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>213851</commentid>
    <comment_count>68</comment_count>
      <attachid>53628</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-18 16:27:44 -0700</bug_when>
    <thetext>Comment on attachment 53628
Fixed test_expectations collision

Cleared Dimitri Glazkov&apos;s review+ from obsolete attachment 53628 so that this bug does not appear in http://webkit.org/pending-commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214142</commentid>
    <comment_count>69</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-19 11:50:51 -0700</bug_when>
    <thetext>Landed as http://trac.webkit.org/changeset/57823.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214145</commentid>
    <comment_count>70</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-04-19 12:00:24 -0700</bug_when>
    <thetext>Looks like this broke Windows:

http://build.webkit.org/builders/Windows%20Debug%20%28Build%29/builds/13910/steps/compile-webkit/logs/stdio

..\WebCoreSupport\WebFrameLoaderClient.cpp(386) : error C2039: &apos;didChangeIcons&apos; : is not a member of &apos;IWebFrameLoadDelegatePrivate2&apos;

        C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Include\WebKit/WebKit.h(32233) : see declaration of &apos;IWebFrameLoadDelegatePrivate2&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214158</commentid>
    <comment_count>71</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-19 12:15:55 -0700</bug_when>
    <thetext>(In reply to comment #70)
&gt; Looks like this broke Windows:
&gt; 
&gt; http://build.webkit.org/builders/Windows%20Debug%20%28Build%29/builds/13910/steps/compile-webkit/logs/stdio
&gt; 
&gt; ..\WebCoreSupport\WebFrameLoaderClient.cpp(386) : error C2039: &apos;didChangeIcons&apos;
&gt; : is not a member of &apos;IWebFrameLoadDelegatePrivate2&apos;
&gt; 
&gt;        
&gt; C:\cygwin\home\buildbot\slave\win-debug\build\WebKitBuild\Include\WebKit/WebKit.h(32233)
&gt; : see declaration of &apos;IWebFrameLoadDelegatePrivate2&apos;

Just needed a force-rebuild. now cooking.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214352</commentid>
    <comment_count>72</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-19 17:10:38 -0700</bug_when>
    <thetext>The changes to the Windows IDL files here are incorrect.  You can’t just add methods to delegate interfaces like this.  WebKit determines which methods the delegate implements by querying for each version of the interface.  Existing clients that implement IWebFrameLoadDelegatePrivate2 (e.g., shipping versions of Safari and friends) but do not have this method, so attempts to call it will result in calling a bogus method.  A new IWebFrameLoadDelegatePrivate3 interface needs to be created that inherits from IWebFrameLoadDelegatePrivate2 and contains this extra method.  Then the WebKit code needs to look for that interface when determining whether it can call didChangeIcons.

I’m going to roll this change out in a moment since it causes crashes when WebKit is used with existing clients.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214355</commentid>
    <comment_count>73</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-19 17:17:00 -0700</bug_when>
    <thetext>Rolled out in r57856.  Reopening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214357</commentid>
    <comment_count>74</comment_count>
      <attachid>53636</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2010-04-19 17:18:55 -0700</bug_when>
    <thetext>Comment on attachment 53636
Another collision

Setting patch to r- for reasons noted above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214687</commentid>
    <comment_count>75</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 08:42:16 -0700</bug_when>
    <thetext>(In reply to comment #72)
&gt; The changes to the Windows IDL files here are incorrect.  You can’t just add
&gt; methods to delegate interfaces like this.  WebKit determines which methods the
&gt; delegate implements by querying for each version of the interface.  Existing
&gt; clients that implement IWebFrameLoadDelegatePrivate2 (e.g., shipping versions
&gt; of Safari and friends) but do not have this method, so attempts to call it will
&gt; result in calling a bogus method.  A new IWebFrameLoadDelegatePrivate3
&gt; interface needs to be created that inherits from IWebFrameLoadDelegatePrivate2
&gt; and contains this extra method.  Then the WebKit code needs to look for that
&gt; interface when determining whether it can call didChangeIcons.
&gt; 
&gt; I’m going to roll this change out in a moment since it causes crashes when
&gt; WebKit is used with existing clients.

Weird. I asked Dave to do exactly what aroben suggested in comment https://bugs.webkit.org/show_bug.cgi?id=33812#c25.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214688</commentid>
    <comment_count>76</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-20 08:45:27 -0700</bug_when>
    <thetext>(In reply to comment #75)
&gt; (In reply to comment #72)
&gt; &gt; The changes to the Windows IDL files here are incorrect.  You can’t just add
&gt; &gt; methods to delegate interfaces like this.  WebKit determines which methods the
&gt; &gt; delegate implements by querying for each version of the interface.  Existing
&gt; &gt; clients that implement IWebFrameLoadDelegatePrivate2 (e.g., shipping versions
&gt; &gt; of Safari and friends) but do not have this method, so attempts to call it will
&gt; &gt; result in calling a bogus method.  A new IWebFrameLoadDelegatePrivate3
&gt; &gt; interface needs to be created that inherits from IWebFrameLoadDelegatePrivate2
&gt; &gt; and contains this extra method.  Then the WebKit code needs to look for that
&gt; &gt; interface when determining whether it can call didChangeIcons.
&gt; &gt; 
&gt; &gt; I’m going to roll this change out in a moment since it causes crashes when
&gt; &gt; WebKit is used with existing clients.
&gt; 
&gt; Weird. I asked Dave to do exactly what aroben suggested in comment
&gt; https://bugs.webkit.org/show_bug.cgi?id=33812#c25.

When I wrote comment 25, I was under the impression that no shipping WebKit clients used IWebFrameLoadDelegatePrivate2. It&apos;s possible that I was incorrect at the time. It&apos;s also possible that a client has shipped since comment 25 was written that uses IWebFrameLoadDelegatePrivate2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214692</commentid>
    <comment_count>77</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 08:55:39 -0700</bug_when>
    <thetext>(In reply to comment #76)
&gt; (In reply to comment #75)
&gt; &gt; (In reply to comment #72)
&gt; &gt; &gt; The changes to the Windows IDL files here are incorrect.  You can’t just add
&gt; &gt; &gt; methods to delegate interfaces like this.  WebKit determines which methods the
&gt; &gt; &gt; delegate implements by querying for each version of the interface.  Existing
&gt; &gt; &gt; clients that implement IWebFrameLoadDelegatePrivate2 (e.g., shipping versions
&gt; &gt; &gt; of Safari and friends) but do not have this method, so attempts to call it will
&gt; &gt; &gt; result in calling a bogus method.  A new IWebFrameLoadDelegatePrivate3
&gt; &gt; &gt; interface needs to be created that inherits from IWebFrameLoadDelegatePrivate2
&gt; &gt; &gt; and contains this extra method.  Then the WebKit code needs to look for that
&gt; &gt; &gt; interface when determining whether it can call didChangeIcons.
&gt; &gt; &gt; 
&gt; &gt; &gt; I’m going to roll this change out in a moment since it causes crashes when
&gt; &gt; &gt; WebKit is used with existing clients.
&gt; &gt; 
&gt; &gt; Weird. I asked Dave to do exactly what aroben suggested in comment
&gt; &gt; https://bugs.webkit.org/show_bug.cgi?id=33812#c25.
&gt; 
&gt; When I wrote comment 25, I was under the impression that no shipping WebKit
&gt; clients used IWebFrameLoadDelegatePrivate2. It&apos;s possible that I was incorrect
&gt; at the time. It&apos;s also possible that a client has shipped since comment 25 was
&gt; written that uses IWebFrameLoadDelegatePrivate2.

I see. So -- the plan is to:

1) Add new file IWebFrameLoadDelegatePrivate3.idl (with ALL CAPS DON&quot;T CONSUME STUFF FROM HERE, PROMOTE TO PUBLIC FIRST at the top) with this one method in it.
2) Add the idl to Interfaces.vcproj
3) resubmit the patch.

Does that sound about right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214953</commentid>
    <comment_count>78</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2010-04-20 14:34:57 -0700</bug_when>
    <thetext>(In reply to comment #77)
&gt; (In reply to comment #76)
&gt; &gt; When I wrote comment 25, I was under the impression that no shipping WebKit
&gt; &gt; clients used IWebFrameLoadDelegatePrivate2. It&apos;s possible that I was incorrect
&gt; &gt; at the time. It&apos;s also possible that a client has shipped since comment 25 was
&gt; &gt; written that uses IWebFrameLoadDelegatePrivate2.
&gt; 
&gt; I see. So -- the plan is to:
&gt; 
&gt; 1) Add new file IWebFrameLoadDelegatePrivate3.idl (with ALL CAPS DON&quot;T CONSUME
&gt; STUFF FROM HERE, PROMOTE TO PUBLIC FIRST at the top) with this one method in
&gt; it.
&gt; 2) Add the idl to Interfaces.vcproj
&gt; 3) resubmit the patch.
&gt; 
&gt; Does that sound about right?

I just talked with Mark Rowe, and we determined that adding the new function to IWebFrameLoadDelegatePrivate2 should be safe. Mark was (understandably!) confused by a different incarnation of IWebFrameLoadDelegatePrivate2 that was added in r39385 (which has since been merged into IWebFrameLoadDelegate).

So, I think we can re-land the patch as-is. Sorry for the trouble!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214958</commentid>
    <comment_count>79</comment_count>
      <attachid>53636</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 14:41:24 -0700</bug_when>
    <thetext>Comment on attachment 53636
Another collision

great news! thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>214960</commentid>
    <comment_count>80</comment_count>
      <attachid>53636</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-20 14:43:41 -0700</bug_when>
    <thetext>Comment on attachment 53636
Another collision

I just remembered that it won&apos;t land as-is because of the missing description for WebKit/gtk ChangeLog. David, could you merge back the commit that I made into your local tree, sync it up to trunk and post it here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215379</commentid>
    <comment_count>81</comment_count>
      <attachid>53967</attachid>
    <who name="Dave Moore">davemoore</who>
    <bug_when>2010-04-21 10:05:17 -0700</bug_when>
    <thetext>Created attachment 53967
Resubmitting because last version was reverted incorrectly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215380</commentid>
    <comment_count>82</comment_count>
      <attachid>53967</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 10:08:49 -0700</bug_when>
    <thetext>Comment on attachment 53967
Resubmitting because last version was reverted incorrectly.

cq should be able to handle this now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215651</commentid>
    <comment_count>83</comment_count>
      <attachid>53967</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-21 19:28:21 -0700</bug_when>
    <thetext>Comment on attachment 53967
Resubmitting because last version was reverted incorrectly.

Rejecting patch 53967 from commit-queue.

Failed to run &quot;[&apos;WebKitTools/Scripts/run-webkit-tests&apos;, &apos;--no-launch-safari&apos;, &apos;--exit-after-n-failures=1&apos;, &apos;--quiet&apos;]&quot; exit_code: 1
Running build-dumprendertree
Compiling Java tests
make: Nothing to be done for `default&apos;.
Running tests from /Users/eseidel/Projects/CommitQueue/LayoutTests
Testing 12716 test cases.
fast/dom/icon-url-property.html -&gt; failed

Exiting early after 1 failures. 5676 tests run.
92.86s total testing time

5675 test cases (99%) succeeded
1 test case (&lt;1%) had incorrect layout
1 test case (&lt;1%) had stderr output

Full output: http://webkit-commit-queue.appspot.com/results/1847026</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>215652</commentid>
    <comment_count>84</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-21 19:31:21 -0700</bug_when>
    <thetext>Boogers. I will land by hand tomorrow.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>216045</commentid>
    <comment_count>85</comment_count>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2010-04-22 13:04:48 -0700</bug_when>
    <thetext>(In reply to comment #84)
&gt; Boogers. I will land by hand tomorrow.

Landed as http://trac.webkit.org/changeset/58111.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46853</attachid>
            <date>2010-01-18 14:40:40 -0800</date>
            <delta_ts>2010-01-18 14:58:23 -0800</delta_ts>
            <desc>Patch to implement</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>24585</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgIHJldHVybjsKKworICBp
ZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICBmcmFtZUxvYWRlcigpLT53aWxs
Q2hhbmdlSWNvblVSTCh0aGlzKTsKKyAgICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOworICAg
ICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAgfQorfQorCiBLVVJM
IERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAgICAvLyBSZXR1cm4g
dGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4KSW5kZXg6IFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1
bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBjb25zdDsKICAg
ICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAgICB2b2lkIHNl
dFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3Ry
aW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygpIGNvbnN0IHsg
cmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFDKQpAQCAtMTUw
LDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIHN0b3BSZWNv
cmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgpIGNvbnN0IHsg
cmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgaWNvblVSTCgpIGNv
bnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBLVVJMIHVybEZvckhpc3Rv
cnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNGYWlsdXJlKCkg
Y29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBi
b29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBTdHJpbmcgbV9wYWdlVGl0bGU7Cisg
ICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0cmluZyBtX292ZXJyaWRl
RW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNiAr
MjA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3Ry
aW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29u
c3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTI0Niw2ICsyNDcsOSBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIHsgfQog
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopIHsgfQogCisg
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgeyB9Cisg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSB7IH0KKwog
ICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hh
ciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExv
YWRlciopIHsgfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1MzQwOCkK
KysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjg2
OSw2ICsyODY5LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OndpbGxDaGFuZ2VUaXRsZShEb2N1bWUK
ICAgICBtX2NsaWVudC0+d2lsbENoYW5nZVRpdGxlKGxvYWRlcik7CiB9CiAKK3ZvaWQgRnJhbWVM
b2FkZXI6OndpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7CisgICAg
bV9jbGllbnQtPndpbGxDaGFuZ2VJY29uVVJMKGxvYWRlcik7Cit9CisKIEZyYW1lTG9hZFR5cGUg
RnJhbWVMb2FkZXI6OmxvYWRUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9sb2FkVHlwZTsK
QEAgLTM4ODAsNiArMzg4NSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShjb25zdCBT
dHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQogCit2b2lk
IEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBk
b2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQorCiBLVVJMIEZyYW1lTG9h
ZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVybiBhY3RpdmVEb2N1
bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAgLTM5OTYsNiArNDAwNiwx
NiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAgICAgfQogfQog
Cit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCit7CisgICAgbV9jbGllbnQtPmRpZENoYW5nZUljb25VUkwobG9hZGVyKTsKKworICAgIGlm
IChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikgeworICAgICAgICBtX2NsaWVudC0+ZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvblVSTChsb2FkZXItPmljb25VUkwoKSk7CisgICAgICAgIC8vIFRPRE9b
ZGF2ZW1vb3JlQGNocm9taXVtLm9yZ10gSG93IGRvIHdlIHVwZGF0ZSB0aGUgaWNvbnMgZm9yIGhp
c3Rvcnk/CisgICAgfQorfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIGlmIChtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVM
b2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw4IEBAIHB1YmxpYzoKICAgICBi
b29sIHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVy
Kik7CisgICAgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopOworICAgIHZv
aWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopOwogCiAgICAgRnJhbWVMb2FkVHlw
ZSBsb2FkVHlwZSgpIGNvbnN0OwogICAgIENhY2hlUG9saWN5IHN1YnJlc291cmNlQ2FjaGVQb2xp
Y3koKSBjb25zdDsKQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBjYW5jZWxB
bmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGNvbW1pdFByb3Zpc2lvbmFs
TG9hZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+KTsKICAgICBib29sIGlzTG9hZGluZ0Zyb21DYWNo
ZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7IH0KSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMjQsNiArMTI0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3Rh
cnRQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgPSAwOwogICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJl
c291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxM
b2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0xNjIsNiArMTYzLDkgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKSA9IDA7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29u
VVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
SWNvblVSTChEb2N1bWVudExvYWRlciopID0gMDsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29t
bWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciopID0gMDsKICAg
ICAgICAgCkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBACisyMDEwLTAxLTE4ICBEYXZlIE1vb3JlICA8
ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbiBsaW5r
IGlzIGNoYW5nZSBmcm9tIHNjcmlwdC4gCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2ls
bCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbCAKKyAgICAgICAgbm90aWZ5IHRo
ZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxsIAorICAg
ICAgICBoYXZlIHRvIGFkZCB0aHJlZSBtZXRob2RzOyBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KCksIAorICAgICAgICB3aWxsQ2hhbmdlSWNvblVSTCgpIGFuZCBkaWRDaGFuZ2VJY29uVVJMKCku
IEl0J3Mgbm90IGNsZWFyIGlmIAorICAgICAgICB0aGUgbGFzdCB0d28gYXJlIG5lY2Vzc2FyeSwg
YnV0IHRoZXkgd2VyZSBhZGRlZCB0byBiZSBjb25zaXN0ZW50IAorICAgICAgICB3aXRoIHRoZSB0
aXRsZSBjaGFuZ2Ugbm90aWZpY2F0aW9ucy4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNl
cy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdl
YkZyYW1lOjp3aWxsQ2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJGcmFtZTo6ZGlkQ2hhbmdl
SWNvblVSTCk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wMS0xOCAgQWRhbSBSb2Jl
biAgPGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgQWRkIElXZWJWaWV3UHJpdmF0ZTo6c2V0
RG9tYWluUmVsYXhhdGlvbkZvcmJpZGRlbkZvclVSTFNjaGVtZQpJbmRleDogV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTE0NjEsNiArMTQ2MSwxNiBAQCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
dExvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6d2lsbENoYW5n
ZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
K3ZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRsZVJlcXVlc3Qo
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBXZWJW
aWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFt
ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNpb24gNTM0MDgp
CisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI3Niw2ICsyNzYs
OCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHko
Ym9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVl
c3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBi
b29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIE1JTUVUeXBlKSBjb25z
dDsKICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0OwpJbmRleDogV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHJldmlzaW9uIDUzNDA4
KQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHdv
cmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTYgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZSA6IElVbmtubwogICAgIEhSRVNVTFQgZGlkUmVjZWl2ZVRpdGxlKFtpbl0gSVdlYlZp
ZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiB0aXRsZSwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKIAog
ICAgIC8qIQorICAgICAgICBAbWV0aG9kIHdlYlZpZXc6ZGlkUmVjZWl2ZUljb25VUkw6Zm9yRnJh
bWU6CisgICAgICAgIEBhYnN0cmFjdCBOb3RpZmllcyB0aGUgZGVsZWdhdGUgdGhhdCB0aGUgcGFn
ZSBpY29uIFVSTCBmb3IgYSBmcmFtZSBoYXMgYmVlbiByZWNlaXZlZAorICAgICAgICBAcGFyYW0g
d2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBtZXNzYWdlCisgICAgICAgIEBwYXJhbSBp
Y29uVVJMIFRoZSBuZXcgaWNvbiB1cmwKKyAgICAgICAgQHBhcmFtIGZyYW1lIFRoZSBmcmFtZSBm
b3Igd2hpY2ggdGhlIGljb24gVVJMIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIC0gKHZvaWQp
d2ViVmlldzooV2ViVmlldyAqKXNlbmRlciBkaWRSZWNlaXZlSWNvblVSTDooTlNTdHJpbmcgKilp
Y29uVVJMIGZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1lOworICAgICovCisgICAgSFJFU1VMVCBk
aWRSZWNlaXZlSWNvblVSTChbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIEJTVFIgaWNvblVS
TCwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKworICAgIC8qIQogICAgICAgICBAbWV0aG9kIHdl
YlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6CiAgICAgICAgIEBhYnN0cmFjdCBOb3RpZmll
cyB0aGUgZGVsZWdhdGUgdGhhdCBhIHBhZ2UgaWNvbiBpbWFnZSBmb3IgYSBmcmFtZSBoYXMgYmVl
biByZWNlaXZlZAogICAgICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5nIHRo
ZSBtZXNzYWdlCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzc2
LDYgKzM3NiwxNCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAg
ICAgICAgIGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlVGl0bGUod2ViVmlldywgQlN0cmlu
Zyh0aXRsZSksIG1fd2ViRnJhbWUpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBX
ZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFtZS0+d2ViVmlldygpOworICAgIENPTVB0cjxJV2Vi
RnJhbWVMb2FkRGVsZWdhdGU+IGZyYW1lTG9hZERlbGVnYXRlOworICAgIGlmIChTVUNDRUVERUQo
d2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGUoJmZyYW1lTG9hZERlbGVnYXRlKSkpCisgICAgICAg
IGZyYW1lTG9hZERlbGVnYXRlLT5kaWRSZWNlaXZlSWNvblVSTCh3ZWJWaWV3LCBCU3RyaW5nKGlj
b25VUkwpLCBtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0gbV93ZWJGcmFt
ZS0+d2ViVmlldygpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcyLDYg
KzcyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29u
KCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6
U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFdlYktp
dFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDUzNDI0KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzAgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVz
dENvbnRyb2xsZXIpOgorICAgICAgICAoZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2spOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRl
c3RDb250cm9sbGVyOjpkdW1wSWNvblVSTENoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENv
bnRyb2xsZXI6OnNldER1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRl
OjpkaWRSZWNlaXZlSWNvblVSTCk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmg6CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAg
ICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkUmVjZWl2ZUljb25VUkwpOgorCiAyMDEwLTAx
LTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgTGF5b3V0
VGVzdENvbnRyb2xsZXIgc3VwcG9ydCBmb3IgY2FsbGluZyBuZXcgV2ViS2l0IFNQSSB0bwpJbmRl
eDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9M
YXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAg
TGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgICwgbV9kdW1wU291
cmNlQXNXZWJBcmNoaXZlKGZhbHNlKQogICAgICwgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzKGZhbHNl
KQogICAgICwgbV9kdW1wVGl0bGVDaGFuZ2VzKGZhbHNlKQorICAgICwgbV9kdW1wSWNvblVSTENo
YW5nZXMoZmFsc2UpCiAgICAgLCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhmYWxzZSkKICAg
ICAsIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlKGZhbHNlKQogICAgICwgbV9jYWxsQ2xvc2VPbldl
YlZpZXdzKHRydWUpCkBAIC0xODUsNiArMTg2LDEzIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBU
aXRsZUNoYW5nZXNDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4
dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBJY29uVVJMQ2hhbmdlc0NhbGxiYWNrKEpT
Q29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhp
c09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRz
W10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciog
Y29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RH
ZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREdW1wSWNvblVSTENo
YW5nZXModHJ1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
fQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjayhKU0Nv
bnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNP
YmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1td
LCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNv
bnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0
UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMjYxLDYgKzEyNjksNyBAQCBKU1N0YXRpY0Z1bmN0
aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImR1bXBTb3VyY2VBc1dlYkFy
Y2hpdmUiLCBkdW1wU291cmNlQXNXZWJBcmNoaXZlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmli
dXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAg
eyAiZHVtcFN0YXR1c0NhbGxiYWNrcyIsIGR1bXBTdGF0dXNDYWxsYmFja3NDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRpdGxlQ2hhbmdlc0NhbGxi
YWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVE
b250RGVsZXRlIH0sCisgICAgICAgIHsgImR1bXBJY29uVVJMQ2hhbmdlcyIsIGR1bXBJY29uVVJM
Q2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2FjaGVSZXNwb25z
ZSIsIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJl
YWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVs
ZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnREb2VzQXV0b0Nv
bXBsZXRlRm9yRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRP
bmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVuY29k
ZUhvc3ROYW1lIiwgZW5jb2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE0NSw2ICsxNDUsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2Vz
OyB9CiAgICAgdm9pZCBzZXREdW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hhbmdlcykg
eyBtX2R1bXBUaXRsZUNoYW5nZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBib29sIGR1
bXBJY29uVVJMQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEljb25VUkxDaGFuZ2VzOyB9
CisgICAgdm9pZCBzZXREdW1wSWNvblVSTENoYW5nZXMoYm9vbCBkdW1wSWNvblVSTENoYW5nZXMp
IHsgbV9kdW1wSWNvblVSTENoYW5nZXMgPSBkdW1wSWNvblVSTENoYW5nZXM7IH0KKwogICAgIGJv
b2wgZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2s7IH0KICAgICB2b2lkIHNldER1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhi
b29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaykgeyBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFj
ayA9IGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsgfQogICAgIApAQCAtMjQyLDYgKzI0NSw3IEBA
IHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmU7CiAgICAgYm9vbCBt
X2R1bXBTdGF0dXNDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBUaXRsZUNoYW5nZXM7CisgICAg
Ym9vbCBtX2R1bXBJY29uVVJMQ2hhbmdlczsKICAgICBib29sIG1fZHVtcFZpc2l0ZWRMaW5rc0Nh
bGxiYWNrOwogICAgIGJvb2wgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2U7CiAgICAgYm9vbCBtX2Nh
bGxDbG9zZU9uV2ViVmlld3M7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxOSBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZy
YW1lTG9hZERlbGVnCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FM
TFRZUEUgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJY29uVVJMKCAKKyAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgIC8qIFtpbl0gKi8gQlNUUiBpY29uVVJMLAorICAg
IC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50
ZigiJXMgLSBkaWRSZWNlaXZlSWNvblVSTDogJVNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLCBpY29uVVJMKTsKKworICAgIGlmICg6OmdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEljb25VUkxDaGFuZ2VzKCkgJiYgIWRvbmUpCisgICAgICAgIHBy
aW50ZigiSUNPTiBVUkwgQ0hBTkdFRDogJVNcbiIsIGljb25VUkwgPyBpY29uVVJMIDogTCIiKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6cHJvY2Vzc1dv
cmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVuIHdhaXQgZm9yIGl0
IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLAog
ICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uVVJMKCAKKyAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkws
CisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1h
Z2UsCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDUz
NDA4KQorKysgV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNjEsNiArNjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RS
IHRpdGxlLA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBT
X09LOyB9DQogICAgIA0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlk
UmVjZWl2ZUljb25VUkwoIA0KKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywN
CisgICAgICAgIC8qIFtpbl0gKi8gQlNUUiBpY29uVVJMLA0KKyAgICAgICAgLyogW2luXSAqLyBJ
V2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQorICAgIA0KICAgICB2aXJ0dWFsIEhS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBo
Qml0bWFwLA0KSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzNDI0KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9v
cmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29u
IGxpbmsgaXMgY2hhbmdlIGZyb20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVj
dCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3Rp
ZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwg
CisgICAgICAgIGhhdmUgdG8gYWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b25VUkwoKSwgCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25V
UkwoKS4gSXQncyBub3QgY2xlYXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNz
YXJ5LCBidXQgdGhleSB3ZXJlIGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGgg
dGhlIHRpdGxlIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBmYXN0
L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorCiAyMDEwLTAxLTE4ICBUaW1v
dGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxlLmNvbT4KIAogICAgICAgICBVcGRhdGVkIHJlc3Vs
dHMgZm9yIHNjcm9sbCBwb3NpdGlvbiB3aGlsZSB6b29tZWQuCkluZGV4OiBMYXlvdXRUZXN0cy9m
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0CShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK0lDT04gVVJMIENIQU5HRUQ6IGh0dHA6
Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRwOi8vdGVz
dC5jb20vb2xkZmF2aWNvbi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRwOi8vdGVz
dC5jb20vbmV3ZmF2aW9uLmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9uZXdm
YXZpb24uaWNvCgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29u
LXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFi
bGUKICAgKyAqCgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHku
aHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0
eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8aGVhZD4K
Kzx0aXRsZT5PcmlnaW5hbCBUaXRsZTwvdGl0bGU+Cis8bGluayByZWw9InNob3J0Y3V0IGljb24i
IHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cDovL3Rlc3QuY29tL29sZGZhdmljb24uaWNv
Ii8+Cis8c2NyaXB0PgorZnVuY3Rpb24gZGVidWdPdXRwdXQoc3RyKSB7CisgICAgdGV4dCA9IGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cik7CisgICAgZGVidWdEaXYgPSBkb2N1bWVudC5nZXRF
bGVtZW50QnlJZCgnZGVidWdEaXYnKTsKKyAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
ICgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKHRleHQpOworICAgIGRlYnVnRGl2LmFwcGVu
ZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHNldEZhdkljb24oaWNvblVSTCkgeworICAgIHZh
ciBkb2NIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXTsKKyAg
ICB2YXIgbGlua3MgPSBkb2NIZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIik7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkgeworICAgICAgdmFyIGxpbmsg
PSBsaW5rc1tpXTsKKyAgICAgIGlmIChsaW5rLnR5cGU9PSJpbWFnZS94LWljb24iICYmIGxpbmsu
cmVsPT0ic2hvcnRjdXQgaWNvbiIpIHsKKyAgICAgICAgZG9jSGVhZC5yZW1vdmVDaGlsZChsaW5r
KTsKKyAgICAgICAgYnJlYWs7IC8vIEFzc3VtaW5nIG9ubHkgb25lIG1hdGNoIGF0IG1vc3QuCisg
ICAgICB9CisgICAgfQorICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibGlu
ayIpOworICAgIGxpbmsudHlwZSA9ICJpbWFnZS94LWljb24iOworICAgIGxpbmsucmVsID0gInNo
b3J0Y3V0IGljb24iOworICAgIGxpbmsuaHJlZiA9IGljb25VUkw7CisgICAgZG9jSGVhZC5hcHBl
bmRDaGlsZChsaW5rKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgaWYgKHdpbmRv
dy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5k
dW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBJY29uVVJMQ2hh
bmdlcygpOworICAgIH0KKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImhlYWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisgICAg
ZGVidWdPdXRwdXQgKCdPcmlnaW5hbCBpY29uVVJMIGlzOiAnICsgaWNvblVSTCk7CisgICAgbmV3
VVJMID0gJ2h0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvJzsKKyAgICBkZWJ1Z091dHB1dCAo
J1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiAnICsgbmV3VVJMKTsKKyAgICBzZXRGYXZJY29uKG5l
d1VSTCk7CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFk
IilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworCisgICAgZGVidWdP
dXRwdXQgKCdOZXcgaWNvblVSTCBpczogJyArIGljb25VUkwpOworfQorCis8L3NjcmlwdD4KKzwv
aGVhZD4KKzxib2R5IG9ubG9hZD0ncnVuVGVzdHMoKTsnPgorPGRpdiBpZD0nZGVidWdEaXYnPgor
PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCl9fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KQWRkZWQ6IHN2bjpl
eGVjdXRhYmxlCiAgICsgKgoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>46857</attachid>
            <date>2010-01-18 14:58:23 -0800</date>
            <delta_ts>2010-01-20 07:38:51 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>24596</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPndpbGxDaGFuZ2VJY29uVVJMKHRoaXMpOworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAg
ICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5z
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xNTAsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTI1Nyw2ICsyNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogCiAgICAgICAgIFN0cmluZyBt
X3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMjQ2LDYgKzI0
Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODY5LDYgKzI4NjksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5n
ZVRpdGxlKERvY3VtZQogICAgIG1fY2xpZW50LT53aWxsQ2hhbmdlVGl0bGUobG9hZGVyKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3sKKyAgICBtX2NsaWVudC0+d2lsbENoYW5nZUljb25VUkwobG9hZGVyKTsKK30KKwog
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRlcjo6bG9hZFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xvYWRUeXBlOwpAQCAtMzg4MCw2ICszODg1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRs
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25VUkwoaWNvblVSTCk7Cit9CisK
IEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpAQCAt
Mzk5Niw2ICs0MDA2LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25VUkwoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvblVSTChsb2Fk
ZXIpOworCisgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGxvYWRlci0+aWNvblVSTCgpKTsKKyAg
ICAgICAgLy8gVE9ET1tkYXZlbW9vcmVAY2hyb21pdW0ub3JnXSBIb3cgZG8gd2UgdXBkYXRlIHRo
ZSBpY29ucyBmb3IgaGlzdG9yeT8KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdp
bGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNM
b2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQw
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE2Miw2ICsx
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgPSAwOwogICAgICAgICAKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYktpdC93
aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTgg
IERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRo
ZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3Vt
ZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAg
ICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xp
ZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlk
UmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENo
YW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBh
cmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAg
ICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAg
ICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViRnJhbWU6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkZy
YW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAx
LTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgSVdlYlZp
ZXdQcml2YXRlOjpzZXREb21haW5SZWxheGF0aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lCkluZGV4
OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZy
YW1lLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTQ2MSw2ICsxNDYxLDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5n
ZVRpdGxlKERvY3VtZW50TG8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZy
YW1lOjp3aWxsQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVt
ZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2Fu
SGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAg
ICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJL
aXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShy
ZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjc2LDYgKzI3Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1l
RG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJ
Y29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENo
YW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
TUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAko
cmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERl
bGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2Ug
SVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVua25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0
bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFt
ZSogZnJhbWUpOwogCiAgICAgLyohCisgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZl
SWNvblVSTDpmb3JGcmFtZToKKyAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0
ZSB0aGF0IHRoZSBwYWdlIGljb24gVVJMIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisg
ICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAg
ICAgICAgQHBhcmFtIGljb25VUkwgVGhlIG5ldyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJh
bWUgVGhlIGZyYW1lIGZvciB3aGljaCB0aGUgaWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAg
ICAgICAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJM
OihOU1N0cmluZyAqKWljb25VUkwgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8K
KyAgICBIUkVTVUxUIGRpZFJlY2VpdmVJY29uVVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtp
bl0gQlNUUiBpY29uVVJMLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFi
c3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBh
IGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCiAgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJW
aWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3
ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7Cisg
ICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAg
aWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdh
dGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZp
ZXcsIEJTdHJpbmcoaWNvblVSTCksIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNo
RG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgp
OwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBAQAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBp
cyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwg
bm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUg
Y2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAg
ICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgp
LCAKKyAgICAgICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJ
dCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1
dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0
bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChkdW1wSWNvblVSTENoYW5nZXND
YWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25z
KToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAg
ICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAg
IChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcEljb25VUkxDaGFuZ2VzKToKKyAgICAgICAg
KiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJh
bWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5M
YXVuY2hlci5oOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvblVS
TCk6CisKIDIwMTAtMDEtMTggIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxlciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJL
aXQgU1BJIHRvCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAg
ICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXND
YWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBt
X2R1bXBJY29uVVJMQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxi
YWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBt
X2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkKQEAgLTE4NSw2ICsxODYsMTMgQEAgc3RhdGljIEpT
VmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0NhbGxiYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVu
ZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZHVtcEljb25VUkxDaGFu
Z2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBK
U09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1
ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRl
c3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xs
ZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNl
dER1bXBJY29uVVJMQ2hhbmdlcyh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmlu
ZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25z
ZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNP
YmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVS
ZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0
Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVy
Kj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTEyNjEsNiArMTI2OSw3IEBA
IEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVt
cFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBTb3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pT
UHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0
ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVzQ2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNr
c0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRy
aWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0
bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZHVtcEljb25VUkxDaGFuZ2Vz
IiwgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdp
bGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxl
bWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5
QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAg
ICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBlbmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw5IEBA
IHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRsZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1
bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lkIHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBkdW1w
VGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxlQ2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7IH0K
IAorICAgIGJvb2wgZHVtcEljb25VUkxDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNv
blVSTENoYW5nZXM7IH0KKyAgICB2b2lkIHNldER1bXBJY29uVVJMQ2hhbmdlcyhib29sIGR1bXBJ
Y29uVVJMQ2hhbmdlcykgeyBtX2R1bXBJY29uVVJMQ2hhbmdlcyA9IGR1bXBJY29uVVJMQ2hhbmdl
czsgfQorCiAgICAgYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVy
biBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRM
aW5rc0NhbGxiYWNrKGJvb2wgZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrID0gZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0y
NDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2
ZTsKICAgICBib29sIG1fZHVtcFN0YXR1c0NhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxl
Q2hhbmdlczsKKyAgICBib29sIG1fZHVtcEljb25VUkxDaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1w
VmlzaXRlZExpbmtzQ2FsbGJhY2s7CiAgICAgYm9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsK
ICAgICBib29sIG1fY2FsbENsb3NlT25XZWJWaWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24g
NTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiArMTg5LDE5IEBAIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUljb25VUkwo
CisgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywKKyAgICAvKiBbaW5dICovIEJTVFIg
aWNvblVSTCwKKyAgICAvKiBbaW5dICovIElXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFk
b25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQor
ICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVjZWl2ZUljb25VUkw6ICVTXG4iLCBkZXNjcmlwdGlv
blN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSwgaWNvblVSTCk7CisKKyAgICBp
ZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBJY29uVVJMQ2hhbmdlcygpICYmICFkb25l
KQorICAgICAgICBwcmludGYoIklDT04gVVJMIENIQU5HRUQ6ICVTXG4iLCBpY29uVVJMID8gaWNv
blVSTCA6IEwiIik7CisgICAgcmV0dXJuIFNfT0s7Cit9CisKIHZvaWQgRnJhbWVMb2FkRGVsZWdh
dGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAvLyBpZiBhbm90aGVyIGxvYWQgc3RhcnRlZCwgdGhl
biB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8g
QlNUUiB0aXRsZSwKICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvblVSTCgKKyAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBC
U1RSIGljb25VUkwsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAg
ICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9M
RV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJ
KHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyog
W2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1l
KSB7IHJldHVybiBTX09LOyB9DQogICAgIA0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb25VUkwoDQorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3
ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkwsDQorICAgICAgICAv
KiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0NCisgICAgDQogICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggDQogICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KICAgICAgICAgLyogW2luXSAqLyBP
TEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQpCisrKyBMYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMS0x
OCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4g
dGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9j
dW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAgICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlk
Q2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdv
IGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAg
ICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAg
ICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTAt
MDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVw
ZGF0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsIHBvc2l0aW9uIHdoaWxlIHpvb21lZC4KSW5kZXg6IExh
eW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0
eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorSUNPTiBVUkwgQ0hB
TkdFRDogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KK09yaWdpbmFsIGljb25VUkwgaXM6
IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86
IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zh
c3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBz
dm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVy
bC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24t
dXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9p
Y29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRt
bD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hv
cnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xk
ZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAg
ICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVi
dWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJM
KSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVh
ZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRvY0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxp
bmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAg
ICB2YXIgbGluayA9IGxpbmtzW2ldOworICAgICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNv
biIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBpY29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92
ZUNoaWxkKGxpbmspOworICAgICAgICBicmVhazsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2gg
YXQgbW9zdC4KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJsaW5rIik7CisgICAgbGluay50eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGlu
ay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7CisgICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBk
b2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAg
ICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVt
cEljb25VUkxDaGFuZ2VzKCk7CisgICAgfQorICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0u
aHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09yaWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJM
KTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRl
YnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNl
dEZhdkljb24obmV3VVJMKTsKKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRh
Z05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisK
KyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29uVVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdk
ZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246
IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpB
ZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAqCgo=
</data>
<flag name="review"
          id="29189"
          type_id="1"
          status="-"
          setter="eric"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47030</attachid>
            <date>2010-01-20 07:38:51 -0800</date>
            <delta_ts>2010-01-20 09:53:46 -0800</delta_ts>
            <desc>Fixes builds</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>34316</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPndpbGxDaGFuZ2VJY29uVVJMKHRoaXMpOworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAg
ICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5z
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xNTAsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTI1Nyw2ICsyNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogCiAgICAgICAgIFN0cmluZyBt
X3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMjQ2LDYgKzI0
Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODY5LDYgKzI4NjksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5n
ZVRpdGxlKERvY3VtZQogICAgIG1fY2xpZW50LT53aWxsQ2hhbmdlVGl0bGUobG9hZGVyKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3sKKyAgICBtX2NsaWVudC0+d2lsbENoYW5nZUljb25VUkwobG9hZGVyKTsKK30KKwog
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRlcjo6bG9hZFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xvYWRUeXBlOwpAQCAtMzg4MCw2ICszODg1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRs
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25VUkwoaWNvblVSTCk7Cit9CisK
IEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpAQCAt
Mzk5Niw2ICs0MDA2LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25VUkwoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvblVSTChsb2Fk
ZXIpOworCisgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGxvYWRlci0+aWNvblVSTCgpKTsKKyAg
ICAgICAgLy8gVE9ET1tkYXZlbW9vcmVAY2hyb21pdW0ub3JnXSBIb3cgZG8gd2UgdXBkYXRlIHRo
ZSBpY29ucyBmb3IgaGlzdG9yeT8KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdp
bGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNM
b2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQw
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE2Miw2ICsx
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgPSAwOwogICAgICAgICAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDkgQEAgcHVibGljOgog
ICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9CiAKKyAg
ICAvLyBUaGUgcGFnZSBpY29uIHVybCBpcyBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVJY29uVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBpY29uVVJMKSB7IH0K
KwogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA1MzQwOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUljb25VUkwobV93ZWJGcmFtZSwgaWNvblVSTCk7Cit9CisKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAg
IFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKQEAgLTEwMTgs
NiArMTAyNCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVGl0CiAg
ICAgLy8gRklYTUUKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGFuZ2VJ
Y29uVVJMKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRQorfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7Cisg
ICAgLy8gRklYTUUKK30KKwogLy8gQ2FsbGVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQuCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQ5LDYgKzc0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkBAIC04MzMsNiArODM4LDE2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKFcKICAgICBzZXRUaXRsZShs
LT50aXRsZSgpLCBsLT51cmwoKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2ls
bENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlSWNvblVS
TChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopCit7CisJLy9GSVhNRSBpbXBsZW1lbnQgdG8gdXBk
YXRlIGZhdmljb24KK30KKwogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpAQCAtMTMyLDYgKzEzMyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNv
blVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaWNvblVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE0MSw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5OCw2ICs1OTgsMTEg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFt
ZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKQoreworICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29u
dGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2
ZSBjb21taXR0ZWQgdGhpcyBVUkwuCkBAIC04MjQsNiArODI5LDE2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGwKICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZVRpdGxlS2V5XTsKIH0KIAor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHNlbmQgbm90aWZpY2F0
aW9uIGlmIGljb24gdXJsIGlzIGFib3V0IHRvIGNoYW5nZQorfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzZW5kIG5vdGlmaWNhdGlvbiBpZiBpY29uIHVybCBo
YXMgYmVlbiBjaGFuZ2VkCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKICAgICBOU0RhdGEgKm5zRGF0YSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKSW5kZXg6
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTIgKzUwMCwyNCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZUljb25VUkwoRG9j
dW1lbnRMb2FkZXIqKQoreworICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uVVJMIGlzIHRoZSByaWdodCBjYWxsYmFjaworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgLy8gbm8gbmVl
ZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCit9
CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykgewpJbmRleDogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1
MzQwOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTQ1LDYgKzE0Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7CiAKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZy
b20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUg
ZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8g
YWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAg
IHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xl
YXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJl
IGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBu
b3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OndpbGxD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAxLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgSVdlYlZpZXdQcml2YXRlOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0MDgpCisr
KyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MSw2ICsxNDYx
LDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG8KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjp3aWxsQ2hhbmdlSWNvblVSTChEb2N1
bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFt
ZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVu
a25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywg
W2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCisgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvblVSTDpmb3JGcmFtZToKKyAgICAgICAg
QGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRoZSBwYWdlIGljb24gVVJMIGZv
ciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBX
ZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBhcmFtIGljb25VUkwgVGhlIG5l
dyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJhbWUgVGhlIGZyYW1lIGZvciB3aGljaCB0aGUg
aWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJMOihOU1N0cmluZyAqKWljb25VUkwgZm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVTVUxUIGRpZFJlY2VpdmVJY29u
VVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBpY29uVVJMLCBbaW5dIElXZWJG
cmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0
ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCiAg
ICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKSW5k
ZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVM
b2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93
ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxl
Z2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFt
ZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVs
ZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZpZXcsIEJTdHJpbmcoaWNvblVSTCksIG1fd2Vi
RnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAg
ICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdo
aWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2Yg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9k
czsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAgICAgd2lsbENoYW5nZUljb25V
UkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAg
dGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29u
c2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChkdW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RHVtcEljb25VUkxDaGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJ
Y29uVVJMKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvblVSTCk6CisKIDIwMTAtMDEtMTggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxl
ciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJLaXQgU1BJIHRvCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hp
dmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uVVJMQ2hhbmdlcyhmYWxzZSkK
ICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkK
QEAgLTE4NSw2ICsxODYsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0Nh
bGxiYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldER1bXBJY29uVVJMQ2hhbmdlcyh0cnVlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKQEAgLTEyNjEsNiArMTI2OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBT
b3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVz
Q2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiZHVtcEljb25VUkxDaGFuZ2VzIiwgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxD
YWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRv
Q29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBl
bmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDUzNDA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRs
ZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lk
IHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBkdW1wVGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxl
Q2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7IH0KIAorICAgIGJvb2wgZHVtcEljb25VUkxDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNvblVSTENoYW5nZXM7IH0KKyAgICB2b2lkIHNl
dER1bXBJY29uVVJMQ2hhbmdlcyhib29sIGR1bXBJY29uVVJMQ2hhbmdlcykgeyBtX2R1bXBJY29u
VVJMQ2hhbmdlcyA9IGR1bXBJY29uVVJMQ2hhbmdlczsgfQorCiAgICAgYm9vbCBkdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFj
azsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGJvb2wgZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrID0gZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZTsKICAgICBib29sIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKKyAgICBib29sIG1fZHVtcElj
b25VUkxDaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7CiAgICAg
Ym9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKICAgICBib29sIG1fY2FsbENsb3NlT25XZWJW
aWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNiArMTg5LDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcK
ICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUljb25VUkwoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyog
d2ViVmlldywKKyAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwKKyAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVj
ZWl2ZUljb25VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwgaWNvblVSTCk7CisKKyAgICBpZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uVVJMQ2hhbmdlcygpICYmICFkb25lKQorICAgICAgICBwcmludGYoIklDT04gVVJM
IENIQU5HRUQ6ICVTXG4iLCBpY29uVVJMID8gaWNvblVSTCA6IEwiIik7CisgICAgcmV0dXJuIFNf
T0s7Cit9CisKIHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAv
LyBpZiBhbm90aGVyIGxvYWQgc3RhcnRlZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvblVSTCgKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkwsCisgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJL
aXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb25VUkwo
DQorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGljb25VUkwsDQorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
IHsgcmV0dXJuIFNfT0s7IH0NCisgICAgDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LA0KICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTM0MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2Ug
ZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRo
ZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0
byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAg
ICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBj
bGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdl
cmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdl
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaWNvbi11cmwt
cHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsIHBv
c2l0aW9uIHdoaWxlIHpvb21lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorSUNPTiBVUkwgQ0hBTkdFRDogaHR0cDovL3Rlc3QuY29tL25ld2Zh
dmlvbi5pY28KK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29u
LmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24u
aWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFs
IFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1
Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30K
KworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRv
Y0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ldOworICAg
ICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBp
Y29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgICBicmVh
azsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgbGluay50
eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7Cisg
ICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25VUkxDaGFuZ2VzKCk7CisgICAgfQor
ICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09y
aWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNv
biBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBpY29u
VVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29u
VVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24t
dXJsLXByb3BlcnR5Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47043</attachid>
            <date>2010-01-20 09:53:46 -0800</date>
            <delta_ts>2010-01-20 15:22:07 -0800</delta_ts>
            <desc>Patch to implement</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>33982</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPndpbGxDaGFuZ2VJY29uVVJMKHRoaXMpOworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAg
ICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5z
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xNTAsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTI1Nyw2ICsyNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogCiAgICAgICAgIFN0cmluZyBt
X3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMjQ2LDYgKzI0
Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODY5LDYgKzI4NjksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5n
ZVRpdGxlKERvY3VtZQogICAgIG1fY2xpZW50LT53aWxsQ2hhbmdlVGl0bGUobG9hZGVyKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3sKKyAgICBtX2NsaWVudC0+d2lsbENoYW5nZUljb25VUkwobG9hZGVyKTsKK30KKwog
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRlcjo6bG9hZFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xvYWRUeXBlOwpAQCAtMzg4MCw2ICszODg1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRs
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25VUkwoaWNvblVSTCk7Cit9CisK
IEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpAQCAt
Mzk5Niw2ICs0MDA2LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25VUkwoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvblVSTChsb2Fk
ZXIpOworCisgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGxvYWRlci0+aWNvblVSTCgpKTsKKyAg
ICAgICAgLy8gVE9ET1tkYXZlbW9vcmVAY2hyb21pdW0ub3JnXSBIb3cgZG8gd2UgdXBkYXRlIHRo
ZSBpY29ucyBmb3IgaGlzdG9yeT8KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdp
bGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNM
b2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQw
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE2Miw2ICsx
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgPSAwOwogICAgICAgICAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDkgQEAgcHVibGljOgog
ICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9CiAKKyAg
ICAvLyBUaGUgcGFnZSBpY29uIHVybCBpcyBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVJY29uVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBpY29uVVJMKSB7IH0K
KwogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA1MzQwOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUljb25VUkwobV93ZWJGcmFtZSwgaWNvblVSTCk7Cit9CisKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAg
IFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKQEAgLTEwMTgs
NiArMTAyNCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVGl0CiAg
ICAgLy8gRklYTUUKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGFuZ2VJ
Y29uVVJMKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRQorfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7Cisg
ICAgLy8gRklYTUUKK30KKwogLy8gQ2FsbGVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQuCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQ5LDYgKzc0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkBAIC04MzMsNiArODM4LDE2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKFcKICAgICBzZXRUaXRsZShs
LT50aXRsZSgpLCBsLT51cmwoKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2ls
bENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlSWNvblVS
TChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopCit7CisJLy9GSVhNRSBpbXBsZW1lbnQgdG8gdXBk
YXRlIGZhdmljb24KK30KKwogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpAQCAtMTMyLDYgKzEzMyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNv
blVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaWNvblVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE0MSw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5OCw2ICs1OTgsMTEg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFt
ZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKQoreworICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29u
dGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2
ZSBjb21taXR0ZWQgdGhpcyBVUkwuCkBAIC04MjQsNiArODI5LDE2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGwKICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZVRpdGxlS2V5XTsKIH0KIAor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHNlbmQgbm90aWZpY2F0
aW9uIGlmIGljb24gdXJsIGlzIGFib3V0IHRvIGNoYW5nZQorfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzZW5kIG5vdGlmaWNhdGlvbiBpZiBpY29uIHVybCBo
YXMgYmVlbiBjaGFuZ2VkCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKICAgICBOU0RhdGEgKm5zRGF0YSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKSW5kZXg6
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTIgKzUwMCwyNCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZUljb25VUkwoRG9j
dW1lbnRMb2FkZXIqKQoreworICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uVVJMIGlzIHRoZSByaWdodCBjYWxsYmFjaworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgLy8gbm8gbmVl
ZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCit9
CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykgewpJbmRleDogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1
MzQwOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTQ1LDYgKzE0Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7CiAKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZy
b20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUg
ZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8g
YWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAg
IHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xl
YXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJl
IGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBu
b3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OndpbGxD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAxLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgSVdlYlZpZXdQcml2YXRlOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0MDgpCisr
KyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MSw2ICsxNDYx
LDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG8KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjp3aWxsQ2hhbmdlSWNvblVSTChEb2N1
bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFt
ZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVu
a25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywg
W2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCisgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvblVSTDpmb3JGcmFtZToKKyAgICAgICAg
QGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRoZSBwYWdlIGljb24gVVJMIGZv
ciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBX
ZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBhcmFtIGljb25VUkwgVGhlIG5l
dyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJhbWUgVGhlIGZyYW1lIGZvciB3aGljaCB0aGUg
aWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJMOihOU1N0cmluZyAqKWljb25VUkwgZm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVTVUxUIGRpZFJlY2VpdmVJY29u
VVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBpY29uVVJMLCBbaW5dIElXZWJG
cmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0
ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCiAg
ICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKSW5k
ZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVM
b2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93
ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxl
Z2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFt
ZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVs
ZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZpZXcsIEJTdHJpbmcoaWNvblVSTCksIG1fd2Vi
RnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAg
ICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdo
aWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2Yg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9k
czsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAgICAgd2lsbENoYW5nZUljb25V
UkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAg
dGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29u
c2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChkdW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RHVtcEljb25VUkxDaGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJ
Y29uVVJMKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvblVSTCk6CisKIDIwMTAtMDEtMTggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxl
ciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJLaXQgU1BJIHRvCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hp
dmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uVVJMQ2hhbmdlcyhmYWxzZSkK
ICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkK
QEAgLTE4NSw2ICsxODYsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0Nh
bGxiYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldER1bXBJY29uVVJMQ2hhbmdlcyh0cnVlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKQEAgLTEyNjEsNiArMTI2OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBT
b3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVz
Q2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiZHVtcEljb25VUkxDaGFuZ2VzIiwgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxD
YWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRv
Q29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBl
bmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDUzNDA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRs
ZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lk
IHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBkdW1wVGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxl
Q2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7IH0KIAorICAgIGJvb2wgZHVtcEljb25VUkxDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNvblVSTENoYW5nZXM7IH0KKyAgICB2b2lkIHNl
dER1bXBJY29uVVJMQ2hhbmdlcyhib29sIGR1bXBJY29uVVJMQ2hhbmdlcykgeyBtX2R1bXBJY29u
VVJMQ2hhbmdlcyA9IGR1bXBJY29uVVJMQ2hhbmdlczsgfQorCiAgICAgYm9vbCBkdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFj
azsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGJvb2wgZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrID0gZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZTsKICAgICBib29sIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKKyAgICBib29sIG1fZHVtcElj
b25VUkxDaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7CiAgICAg
Ym9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKICAgICBib29sIG1fY2FsbENsb3NlT25XZWJW
aWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNiArMTg5LDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcK
ICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUljb25VUkwoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyog
d2ViVmlldywKKyAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwKKyAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVj
ZWl2ZUljb25VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwgaWNvblVSTCk7CisKKyAgICBpZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uVVJMQ2hhbmdlcygpICYmICFkb25lKQorICAgICAgICBwcmludGYoIklDT04gVVJM
IENIQU5HRUQ6ICVTXG4iLCBpY29uVVJMID8gaWNvblVSTCA6IEwiIik7CisgICAgcmV0dXJuIFNf
T0s7Cit9CisKIHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAv
LyBpZiBhbm90aGVyIGxvYWQgc3RhcnRlZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvblVSTCgKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkwsCisgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJL
aXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb25VUkwo
DQorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGljb25VUkwsDQorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
IHsgcmV0dXJuIFNfT0s7IH0NCisgICAgDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LA0KICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTM0MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2Ug
ZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRo
ZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0
byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAg
ICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBj
bGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdl
cmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdl
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaWNvbi11cmwt
cHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsIHBv
c2l0aW9uIHdoaWxlIHpvb21lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorSUNPTiBVUkwgQ0hBTkdFRDogaHR0cDovL3Rlc3QuY29tL25ld2Zh
dmlvbi5pY28KK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29u
LmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24u
aWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFs
IFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1
Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30K
KworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRv
Y0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ldOworICAg
ICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBp
Y29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgICBicmVh
azsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgbGluay50
eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7Cisg
ICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25VUkxDaGFuZ2VzKCk7CisgICAgfQor
ICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09y
aWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNv
biBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBpY29u
VVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29u
VVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47069</attachid>
            <date>2010-01-20 15:22:07 -0800</date>
            <delta_ts>2010-01-21 18:34:43 -0800</delta_ts>
            <desc>Patch to implement</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>33982</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPndpbGxDaGFuZ2VJY29uVVJMKHRoaXMpOworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAg
ICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5z
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xNTAsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTI1Nyw2ICsyNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogCiAgICAgICAgIFN0cmluZyBt
X3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMjQ2LDYgKzI0
Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODY5LDYgKzI4NjksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5n
ZVRpdGxlKERvY3VtZQogICAgIG1fY2xpZW50LT53aWxsQ2hhbmdlVGl0bGUobG9hZGVyKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3sKKyAgICBtX2NsaWVudC0+d2lsbENoYW5nZUljb25VUkwobG9hZGVyKTsKK30KKwog
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRlcjo6bG9hZFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xvYWRUeXBlOwpAQCAtMzg4MCw2ICszODg1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRs
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25VUkwoaWNvblVSTCk7Cit9CisK
IEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpAQCAt
Mzk5Niw2ICs0MDA2LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25VUkwoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvblVSTChsb2Fk
ZXIpOworCisgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGxvYWRlci0+aWNvblVSTCgpKTsKKyAg
ICAgICAgLy8gVE9ET1tkYXZlbW9vcmVAY2hyb21pdW0ub3JnXSBIb3cgZG8gd2UgdXBkYXRlIHRo
ZSBpY29ucyBmb3IgaGlzdG9yeT8KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdp
bGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNM
b2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQw
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE2Miw2ICsx
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgPSAwOwogICAgICAgICAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDkgQEAgcHVibGljOgog
ICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9CiAKKyAg
ICAvLyBUaGUgcGFnZSBpY29uIHVybCBpcyBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVJY29uVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBpY29uVVJMKSB7IH0K
KwogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA1MzQwOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUljb25VUkwobV93ZWJGcmFtZSwgaWNvblVSTCk7Cit9CisKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAg
IFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKQEAgLTEwMTgs
NiArMTAyNCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVGl0CiAg
ICAgLy8gRklYTUUKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGFuZ2VJ
Y29uVVJMKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRQorfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7Cisg
ICAgLy8gRklYTUUKK30KKwogLy8gQ2FsbGVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQuCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQ5LDYgKzc0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkBAIC04MzMsNiArODM4LDE2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKFcKICAgICBzZXRUaXRsZShs
LT50aXRsZSgpLCBsLT51cmwoKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2ls
bENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxl
bWVudGVkKCk7Cit9CisKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlSWNvblVS
TChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopCit7CisJLy9GSVhNRSBpbXBsZW1lbnQgdG8gdXBk
YXRlIGZhdmljb24KK30KKwogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpAQCAtMTMyLDYgKzEzMyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNv
blVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaWNvblVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE0MSw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5OCw2ICs1OTgsMTEg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFt
ZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKQoreworICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29u
dGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2
ZSBjb21taXR0ZWQgdGhpcyBVUkwuCkBAIC04MjQsNiArODI5LDE2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGwKICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZVRpdGxlS2V5XTsKIH0KIAor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHNlbmQgbm90aWZpY2F0
aW9uIGlmIGljb24gdXJsIGlzIGFib3V0IHRvIGNoYW5nZQorfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzZW5kIG5vdGlmaWNhdGlvbiBpZiBpY29uIHVybCBo
YXMgYmVlbiBjaGFuZ2VkCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKICAgICBOU0RhdGEgKm5zRGF0YSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKSW5kZXg6
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTIgKzUwMCwyNCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZUljb25VUkwoRG9j
dW1lbnRMb2FkZXIqKQoreworICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uVVJMIGlzIHRoZSByaWdodCBjYWxsYmFjaworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgLy8gbm8gbmVl
ZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCit9
CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykgewpJbmRleDogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1
MzQwOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTQ1LDYgKzE0Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7CiAKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZy
b20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUg
ZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8g
YWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAg
IHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xl
YXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJl
IGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBu
b3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OndpbGxD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAxLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgSVdlYlZpZXdQcml2YXRlOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0MDgpCisr
KyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MSw2ICsxNDYx
LDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG8KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjp3aWxsQ2hhbmdlSWNvblVSTChEb2N1
bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFt
ZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVu
a25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywg
W2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCisgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvblVSTDpmb3JGcmFtZToKKyAgICAgICAg
QGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRoZSBwYWdlIGljb24gVVJMIGZv
ciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBX
ZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBhcmFtIGljb25VUkwgVGhlIG5l
dyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJhbWUgVGhlIGZyYW1lIGZvciB3aGljaCB0aGUg
aWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJMOihOU1N0cmluZyAqKWljb25VUkwgZm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVTVUxUIGRpZFJlY2VpdmVJY29u
VVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBpY29uVVJMLCBbaW5dIElXZWJG
cmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0
ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCiAg
ICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKSW5k
ZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVM
b2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93
ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxl
Z2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFt
ZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVs
ZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZpZXcsIEJTdHJpbmcoaWNvblVSTCksIG1fd2Vi
RnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAg
ICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdo
aWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2Yg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9k
czsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAgICAgd2lsbENoYW5nZUljb25V
UkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAg
dGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29u
c2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChkdW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RHVtcEljb25VUkxDaGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJ
Y29uVVJMKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvblVSTCk6CisKIDIwMTAtMDEtMTggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxl
ciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJLaXQgU1BJIHRvCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hp
dmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uVVJMQ2hhbmdlcyhmYWxzZSkK
ICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkK
QEAgLTE4NSw2ICsxODYsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0Nh
bGxiYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldER1bXBJY29uVVJMQ2hhbmdlcyh0cnVlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKQEAgLTEyNjEsNiArMTI2OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBT
b3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVz
Q2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiZHVtcEljb25VUkxDaGFuZ2VzIiwgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxD
YWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRv
Q29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBl
bmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDUzNDA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRs
ZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lk
IHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBkdW1wVGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxl
Q2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7IH0KIAorICAgIGJvb2wgZHVtcEljb25VUkxDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNvblVSTENoYW5nZXM7IH0KKyAgICB2b2lkIHNl
dER1bXBJY29uVVJMQ2hhbmdlcyhib29sIGR1bXBJY29uVVJMQ2hhbmdlcykgeyBtX2R1bXBJY29u
VVJMQ2hhbmdlcyA9IGR1bXBJY29uVVJMQ2hhbmdlczsgfQorCiAgICAgYm9vbCBkdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFj
azsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGJvb2wgZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrID0gZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZTsKICAgICBib29sIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKKyAgICBib29sIG1fZHVtcElj
b25VUkxDaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7CiAgICAg
Ym9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKICAgICBib29sIG1fY2FsbENsb3NlT25XZWJW
aWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNiArMTg5LDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcK
ICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUljb25VUkwoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyog
d2ViVmlldywKKyAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwKKyAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVj
ZWl2ZUljb25VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwgaWNvblVSTCk7CisKKyAgICBpZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uVVJMQ2hhbmdlcygpICYmICFkb25lKQorICAgICAgICBwcmludGYoIklDT04gVVJM
IENIQU5HRUQ6ICVTXG4iLCBpY29uVVJMID8gaWNvblVSTCA6IEwiIik7CisgICAgcmV0dXJuIFNf
T0s7Cit9CisKIHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAv
LyBpZiBhbm90aGVyIGxvYWQgc3RhcnRlZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvblVSTCgKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkwsCisgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJL
aXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb25VUkwo
DQorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGljb25VUkwsDQorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
IHsgcmV0dXJuIFNfT0s7IH0NCisgICAgDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LA0KICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTM0MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2Ug
ZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRo
ZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0
byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAg
ICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBj
bGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdl
cmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdl
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaWNvbi11cmwt
cHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsIHBv
c2l0aW9uIHdoaWxlIHpvb21lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorSUNPTiBVUkwgQ0hBTkdFRDogaHR0cDovL3Rlc3QuY29tL25ld2Zh
dmlvbi5pY28KK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29u
LmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24u
aWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFs
IFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1
Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30K
KworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRv
Y0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ldOworICAg
ICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBp
Y29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgICBicmVh
azsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgbGluay50
eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7Cisg
ICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25VUkxDaGFuZ2VzKCk7CisgICAgfQor
ICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09y
aWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNv
biBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBpY29u
VVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29u
VVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47169</attachid>
            <date>2010-01-21 18:34:43 -0800</date>
            <delta_ts>2010-01-25 09:31:06 -0800</delta_ts>
            <desc>Fixes style and gtk failures</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>34316</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8gYWRk
IHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAgIHdp
bGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xlYXIg
aWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJlIGFk
ZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBub3Rp
ZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkRvY3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgor
ICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6
d2lsbENoYW5nZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0Zy
YW1lTG9hZGVyLmg6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIw
MTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90aHlAYXBwbGUuY29tPgogCiAgICAgICAg
IEFkanVzdCB0aGUgc2Nyb2xsIHBvc2l0aW9uIHdoZW4gZG9pbmcgYSBmdWxsIHBhZ2Ugem9vbSwg
c28gdGhlIGNvbnRlbnQKSW5kZXg6IFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzI1LDYgKzQzMjUsOCBAQCB2
b2lkIERvY3VtZW50OjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgCiAgICAgICAgIG1faWNvblVS
TCA9IGljb25VUkw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2lj
b25VUkwgPSBpY29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYt
PmxvYWRlcigpLT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNl
dFVzZVNlY3VyZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJk
KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwNyw2
ICs2MDcsMTggQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaQogICAg
IH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGlj
b25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAgICAgIGZyYW1lTG9hZGVy
KCktPndpbGxDaGFuZ2VJY29uVVJMKHRoaXMpOworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAg
ICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZvckhpc3RvcnkoKSBjb25zdAogewog
ICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9yIGhpc3RvcnkgYW5kIEIvRiBsaXN0
LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYkNv
cmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwOSw2ICsxMDks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIGJvb2wgaXNMb2FkaW5nSW5BUElTZW5z
ZSgpIGNvbnN0OwogICAgICAgICB2b2lkIHNldFByaW1hcnlMb2FkQ29tcGxldGUoYm9vbCk7CiAg
ICAgICAgIHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgICAgIHZvaWQgc2V0SWNv
blVSTChjb25zdCBTdHJpbmcmKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiBvdmVycmlkZUVuY29k
aW5nKCkgY29uc3QgeyByZXR1cm4gbV9vdmVycmlkZUVuY29kaW5nOyB9CiAKICNpZiBQTEFURk9S
TShNQUMpCkBAIC0xNTAsNiArMTUxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgc3RvcFJlY29yZGluZ1Jlc3BvbnNlcygpOwogICAgICAgICBjb25zdCBTdHJpbmcmIHRp
dGxlKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlVGl0bGU7IH0KKyAgICAgICAgY29uc3QgU3RyaW5n
JiBpY29uVVJMKCkgY29uc3QgeyByZXR1cm4gbV9wYWdlSWNvblVSTDsgfQogCiAgICAgICAgIEtV
UkwgdXJsRm9ySGlzdG9yeSgpIGNvbnN0OwogICAgICAgICBib29sIHVybEZvckhpc3RvcnlSZWZs
ZWN0c0ZhaWx1cmUoKSBjb25zdDsKQEAgLTI1Nyw2ICsyNTksNyBAQCBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAgICAgICAgIGJvb2wgbV9pc0NsaWVudFJlZGlyZWN0OwogCiAgICAgICAgIFN0cmluZyBt
X3BhZ2VUaXRsZTsKKyAgICAgICAgU3RyaW5nIG1fcGFnZUljb25VUkw7CiAKICAgICAgICAgU3Ry
aW5nIG1fb3ZlcnJpZGVFbmNvZGluZzsKIApJbmRleDogV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGll
bnRzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJldmlz
aW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTIwOSw2ICsyMDksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBTdHJpbmcmKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpAQCAtMjQ2LDYgKzI0
Nyw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyKikgeyB9CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRM
b2FkZXIqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExv
YWRlciopIHsgfQorCiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2Fk
ZXIqLCBjb25zdCBjaGFyKiwgaW50KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2Fk
aW5nKERvY3VtZW50TG9hZGVyKikgeyB9CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJl
dmlzaW9uIDUzNDA4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yODY5LDYgKzI4NjksMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5n
ZVRpdGxlKERvY3VtZQogICAgIG1fY2xpZW50LT53aWxsQ2hhbmdlVGl0bGUobG9hZGVyKTsKIH0K
IAordm9pZCBGcmFtZUxvYWRlcjo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqIGxv
YWRlcikKK3sKKyAgICBtX2NsaWVudC0+d2lsbENoYW5nZUljb25VUkwobG9hZGVyKTsKK30KKwog
RnJhbWVMb2FkVHlwZSBGcmFtZUxvYWRlcjo6bG9hZFR5cGUoKSBjb25zdAogewogICAgIHJldHVy
biBtX2xvYWRUeXBlOwpAQCAtMzg4MCw2ICszODg1LDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OnNl
dFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExvYWRlcigpLT5zZXRUaXRsZSh0aXRs
ZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29u
VVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldEljb25VUkwoaWNvblVSTCk7Cit9CisK
IEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVSTCgpIGNvbnN0CiB7CiAgICAgcmV0
dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFsUmVxdWVzdCgpLnVybCgpOwpAQCAt
Mzk5Niw2ICs0MDA2LDE2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZVRpdGxlKERvY3Vt
ZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRpZENoYW5nZUljb25VUkwoRG9jdW1l
bnRMb2FkZXIqIGxvYWRlcikKK3sKKyAgICBtX2NsaWVudC0+ZGlkQ2hhbmdlSWNvblVSTChsb2Fk
ZXIpOworCisgICAgaWYgKGxvYWRlciA9PSBtX2RvY3VtZW50TG9hZGVyKSB7CisgICAgICAgIG1f
Y2xpZW50LT5kaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGxvYWRlci0+aWNvblVSTCgpKTsKKyAg
ICAgICAgLy8gVE9ET1tkYXZlbW9vcmVAY2hyb21pdW0ub3JnXSBIb3cgZG8gd2UgdXBkYXRlIHRo
ZSBpY29ucyBmb3IgaGlzdG9yeT8KKyAgICB9Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1
bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDggQEAg
cHVibGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdp
bGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUo
RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKik7CisgICAgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKik7CiAKICAg
ICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVz
b3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk4LDYgKzMwMCw3IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmlu
ZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29t
bWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNM
b2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVk
UGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1MzQw
OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTEyNCw2ICsxMjQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsKKyAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExv
YWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpID0gMDsKQEAgLTE2Miw2ICsx
NjMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQg
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworCiAgICAgICAgIHZp
cnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGlu
dCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9h
ZGVyKikgPSAwOwogICAgICAgICAKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1l
Q2xpZW50LmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJG
cmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzAsNiArMTcwLDkgQEAgcHVibGljOgog
ICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAgICB2aXJ0dWFsIHZvaWQgZGlk
UmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9CiAKKyAg
ICAvLyBUaGUgcGFnZSBpY29uIHVybCBpcyBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVJY29uVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBpY29uVVJMKSB7IH0K
KwogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmly
dHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBX
ZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lv
biA1MzQwOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjg0LDYgKzY4NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRS
ZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwp
Cit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5j
bGllbnQoKS0+ZGlkUmVjZWl2ZUljb25VUkwobV93ZWJGcmFtZSwgaWNvblVSTCk7Cit9CisKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAg
IFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKQEAgLTEwMTgs
NiArMTAyNCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVGl0CiAg
ICAgLy8gRklYTUUKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGFuZ2VJ
Y29uVVJMKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRQorfQorCit2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7Cisg
ICAgLy8gRklYTUUKK30KKwogLy8gQ2FsbGVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQuCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciog
bG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewpJbmRleDogV2ViS2l0L2No
cm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1MzQwOCkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNzQ5LDYgKzc0OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkBAIC04MzMsNiArODM4LDE2IEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGxlKFcKICAgICBzZXRUaXRsZShs
LT50aXRsZSgpLCBsLT51cmwoKSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OndpbGxD
aGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1l
bnRlZCgpOworfQorCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRSBpbXBsZW1lbnQgdG8gdXBk
YXRlIGZhdmljb24KK30KKwogYm9vbCBGcmFtZUxvYWRlckNsaWVudDo6Y2FuSGFuZGxlUmVxdWVz
dChjb25zdCBSZXNvdXJjZVJlcXVlc3QmKSBjb25zdAogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAkod29ya2luZyBjb3B5KQpAQCAtODMsNiArODMsNyBAQCBuYW1l
c3BhY2UgV2ViS2l0IHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExv
YWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0
IFdlYkNvcmU6OlN0cmluZyYpOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNl
aXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYpOwpAQCAtMTMyLDYgKzEzMyw5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAg
ICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVy
Kik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNv
blVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworCiAgICAgICAgIHZpcnR1YWwgdm9pZCBj
b21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKIApJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5
LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgaWNvblVSTCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92
aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
QEAgLTE0MSw2ICsxNDIsOSBAQCBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKIAorICAgIHZpcnR1YWwgdm9pZCB3
aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwg
dm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisKICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQpOwogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hlZExvYWRpbmcoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlR2xvYmFsSGlzdG9yeSgp
OwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5t
bQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5OCw2ICs1OTgsMTEg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBDYWxs
RnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JGcmFt
ZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5n
JiBpY29uVVJMKQoreworICAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29u
dGFpbmVyIHRvIHVwZGF0ZSBmYXZpY29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2
ZSBjb21taXR0ZWQgdGhpcyBVUkwuCkBAIC04MjQsNiArODI5LDE2IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZVRpdGwKICAgICBbZ2V0V2ViVmlldyhtX3dlYkZyYW1lLmdl
dCgpKSBfZGlkQ2hhbmdlVmFsdWVGb3JLZXk6X1dlYk1haW5GcmFtZVRpdGxlS2V5XTsKIH0KIAor
dm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKK3sKKyAgICAvLyBGSVhNRTogSW1wbGVtZW50IHRvIHNlbmQgbm90aWZpY2F0
aW9uIGlmIGljb24gdXJsIGlzIGFib3V0IHRvIGNoYW5nZQorfQorCit2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7Cisg
ICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzZW5kIG5vdGlmaWNhdGlvbiBpZiBpY29uIHVybCBo
YXMgYmVlbiBjaGFuZ2VkCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRl
ZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0YSwgaW50IGxlbmd0
aCkKIHsKICAgICBOU0RhdGEgKm5zRGF0YSA9IFtbTlNEYXRhIGFsbG9jXSBpbml0V2l0aEJ5dGVz
Tm9Db3B5Oih2b2lkKilkYXRhIGxlbmd0aDpsZW5ndGggZnJlZVdoZW5Eb25lOk5PXTsKSW5kZXg6
IFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MDAsMTIgKzUwMCwyNCBAQCB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxv
YWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8g
bm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFj
awogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZUljb25VUkwoRG9j
dW1lbnRMb2FkZXIqKQoreworICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVJ
Y29uVVJMIGlzIHRoZSByaWdodCBjYWxsYmFjaworfQorCisKK3ZvaWQgRnJhbWVMb2FkZXJDbGll
bnRRdDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgLy8gbm8gbmVl
ZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwgaXMgdGhlIHJpZ2h0IGNhbGxiYWNrCit9
CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5pc2hlZExvYWRpbmcoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2luVmlldykgewpJbmRleDogV2ViS2l0
L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1
MzQwOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3Ry
aW5nJiBpY29uVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9h
ZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpAQCAtMTQ1LDYgKzE0Niw5
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0
bGUoRG9jdW1lbnRMb2FkZXIqKTsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKwogICAgICAgICB2aXJ0dWFsIHZvaWQgY29tbWl0dGVk
TG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3VtZW50TG9hZGVyKik7CiAKSW5kZXg6
IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzQyNCkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDEtMTggIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZy
b20gc2NyaXB0LiAKKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUg
ZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsIAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwgCisgICAgICAgIGhhdmUgdG8g
YWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwgCisgICAgICAg
IHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4gSXQncyBub3QgY2xl
YXIgaWYgCisgICAgICAgIHRoZSBsYXN0IHR3byBhcmUgbmVjZXNzYXJ5LCBidXQgdGhleSB3ZXJl
IGFkZGVkIHRvIGJlIGNvbnNpc3RlbnQgCisgICAgICAgIHdpdGggdGhlIHRpdGxlIGNoYW5nZSBu
b3RpZmljYXRpb25zLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OndpbGxD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAg
ICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAxLTE4ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFw
cGxlLmNvbT4KIAogICAgICAgICBBZGQgSVdlYlZpZXdQcml2YXRlOjpzZXREb21haW5SZWxheGF0
aW9uRm9yYmlkZGVuRm9yVVJMU2NoZW1lCkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gNTM0MDgpCisr
KyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTQ2MSw2ICsxNDYx
LDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG8KICAgICBub3RJ
bXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjp3aWxsQ2hhbmdlSWNvblVSTChEb2N1
bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9pZCBXZWJGcmFt
ZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50
ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRs
ZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93
aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYgKzI3Niw4IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2
aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAg
ICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01J
TUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgTUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1
YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpT
dHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFj
ZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpA
QCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlIDogSVVu
a25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywg
W2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCisgICAg
ICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvblVSTDpmb3JGcmFtZToKKyAgICAgICAg
QGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRoZSBwYWdlIGljb24gVVJMIGZv
ciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBX
ZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBhcmFtIGljb25VUkwgVGhlIG5l
dyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJhbWUgVGhlIGZyYW1lIGZvciB3aGljaCB0aGUg
aWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgLSAodm9pZCl3ZWJWaWV3OihXZWJW
aWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJMOihOU1N0cmluZyAqKWljb25VUkwgZm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVTVUxUIGRpZFJlY2VpdmVJY29u
VVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBpY29uVVJMLCBbaW5dIElXZWJG
cmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNl
aXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0
ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCiAg
ICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKSW5k
ZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBA
IHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgZnJhbWVM
b2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93
ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxl
Z2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFt
ZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVs
ZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZpZXcsIEJTdHJpbmcoaWNvblVSTCksIG1fd2Vi
RnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTM0MjQp
CisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2UgZnJvbSBzY3JpcHQuIAorICAg
ICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdo
aWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2Yg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0byBhZGQgdGhyZWUgbWV0aG9k
czsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAgICAgd2lsbENoYW5nZUljb25V
UkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBjbGVhciBpZiAKKyAgICAgICAg
dGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdlcmUgYWRkZWQgdG8gYmUgY29u
c2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisg
ICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6
CisgICAgICAgIChkdW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJl
ZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OmR1bXBJY29uVVJMQ2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0
RHVtcEljb25VUkxDaGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJ
Y29uVVJMKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
aDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1
bmNoZXJXZWJIb3N0OjpkaWRSZWNlaXZlSWNvblVSTCk6CisKIDIwMTAtMDEtMTggIEFkYW0gUm9i
ZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBMYXlvdXRUZXN0Q29udHJvbGxl
ciBzdXBwb3J0IGZvciBjYWxsaW5nIG5ldyBXZWJLaXQgU1BJIHRvCkluZGV4OiBXZWJLaXRUb29s
cy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZp
c2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29u
dHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hp
dmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1
bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uVVJMQ2hhbmdlcyhmYWxzZSkK
ICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2ls
bENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkK
QEAgLTE4NSw2ICsxODYsMTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0Nh
bGxiYQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3Rh
dGljIEpTVmFsdWVSZWYgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNv
bnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXpl
X3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJl
ZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0g
c3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhp
c09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldER1bXBJY29uVVJMQ2hhbmdlcyh0cnVlKTsK
KyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBK
U1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250
ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90
IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYq
IGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0
YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNP
YmplY3QpKTsKQEAgLTEyNjEsNiArMTI2OSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRl
c3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBT
b3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVz
Q2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
KyAgICAgICAgeyAiZHVtcEljb25VUkxDaGFuZ2VzIiwgZHVtcEljb25VUkxDaGFuZ2VzQ2FsbGJh
Y2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURv
bnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxD
YWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRv
Q29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVt
ZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBl
bmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHJldmlzaW9uIDUzNDA4KQor
KysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29y
a2luZyBjb3B5KQpAQCAtMTQ1LDYgKzE0NSw5IEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRs
ZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lk
IHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBkdW1wVGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxl
Q2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7IH0KIAorICAgIGJvb2wgZHVtcEljb25VUkxDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNvblVSTENoYW5nZXM7IH0KKyAgICB2b2lkIHNl
dER1bXBJY29uVVJMQ2hhbmdlcyhib29sIGR1bXBJY29uVVJMQ2hhbmdlcykgeyBtX2R1bXBJY29u
VVJMQ2hhbmdlcyA9IGR1bXBJY29uVVJMQ2hhbmdlczsgfQorCiAgICAgYm9vbCBkdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFj
azsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGJvb2wgZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrID0gZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0yNDIsNiArMjQ1LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZTsKICAgICBib29sIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKKyAgICBib29sIG1fZHVtcElj
b25VUkxDaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7CiAgICAg
Ym9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKICAgICBib29sIG1fY2FsbENsb3NlT25XZWJW
aWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxl
Z2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTM0MDgpCisrKyBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
ODksNiArMTg5LDE5IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcK
ICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxv
YWREZWxlZ2F0ZTo6ZGlkUmVjZWl2ZUljb25VUkwoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyog
d2ViVmlldywKKyAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwKKyAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxl
ci0+ZHVtcEZyYW1lTG9hZENhbGxiYWNrcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkUmVj
ZWl2ZUljb25VUkw6ICVTXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFt
ZSkuY19zdHIoKSwgaWNvblVSTCk7CisKKyAgICBpZiAoOjpnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uVVJMQ2hhbmdlcygpICYmICFkb25lKQorICAgICAgICBwcmludGYoIklDT04gVVJM
IENIQU5HRUQ6ICVTXG4iLCBpY29uVVJMID8gaWNvblVSTCA6IEwiIik7CisgICAgcmV0dXJuIFNf
T0s7Cit9CisKIHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAv
LyBpZiBhbm90aGVyIGxvYWQgc3RhcnRlZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4K
SW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWRE
ZWxlZ2F0ZS5oCShyZXZpc2lvbiA1MzQwOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVl
L3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3MiwxMSBA
QCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKICAgICAgICAgLyogW2lu
XSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvblVSTCgKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBCU1RSIGljb25VUkwsCisgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJL
aXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDUzNDA4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTEgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb25VUkwo
DQorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2lu
XSAqLyBCU1RSIGljb25VUkwsDQorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
IHsgcmV0dXJuIFNfT0s7IH0NCisgICAgDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LA0KICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDog
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTM0MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wMS0xOCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2Ug
ZnJvbSBzY3JpcHQuIAorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRo
ZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwgCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbCAKKyAgICAgICAgaGF2ZSB0
byBhZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLCAKKyAgICAg
ICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLiBJdCdzIG5vdCBj
bGVhciBpZiAKKyAgICAgICAgdGhlIGxhc3QgdHdvIGFyZSBuZWNlc3NhcnksIGJ1dCB0aGV5IHdl
cmUgYWRkZWQgdG8gYmUgY29uc2lzdGVudCAKKyAgICAgICAgd2l0aCB0aGUgdGl0bGUgY2hhbmdl
IG5vdGlmaWNhdGlvbnMuCisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogZmFzdC9kb20vaWNvbi11cmwt
cHJvcGVydHkuaHRtbDogQWRkZWQuCisKIDIwMTAtMDEtMTggIFRpbW90aHkgSGF0Y2hlciAgPHRp
bW90aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFVwZGF0ZWQgcmVzdWx0cyBmb3Igc2Nyb2xsIHBv
c2l0aW9uIHdoaWxlIHpvb21lZC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsNCBAQAorSUNPTiBVUkwgQ0hBTkdFRDogaHR0cDovL3Rlc3QuY29tL25ld2Zh
dmlvbi5pY28KK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29u
LmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24u
aWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KClByb3Bl
cnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4
cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fCkFkZGVkOiBzdm46ZXhlY3V0YWJsZQogICArICoKCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFs
IFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1
Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30K
KworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRv
Y0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ldOworICAg
ICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBp
Y29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgICBicmVh
azsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgbGluay50
eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7Cisg
ICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25VUkxDaGFuZ2VzKCk7CisgICAgfQor
ICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdl
dEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09y
aWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNv
biBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBpY29u
VVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50
c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29u
VVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25s
b2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4K
KzwvaHRtbD4KClByb3BlcnR5IGNoYW5nZXMgb246IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24t
dXJsLXByb3BlcnR5Lmh0bWwKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fXwpBZGRlZDogc3ZuOmV4ZWN1dGFibGUKICAgKyAq
Cgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>47351</attachid>
            <date>2010-01-25 09:31:06 -0800</date>
            <delta_ts>2010-03-10 17:48:25 -0800</delta_ts>
            <desc>Should fix qt build failure</desc>
            <filename>icon.patch</filename>
            <type>text/plain</type>
            <size>38221</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1MzgwNikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzQgQEAKKzIwMTAtMDEtMjUgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29uIGxpbmsgaXMgY2hhbmdlIGZyb20g
c2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFt
ZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVu
dGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIHRo
cmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoKSwKKyAgICAgICAgd2lsbENo
YW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVSTCgpLgorICAgICAgICAKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisgICAgICAgIAor
ICAgICAgICBUZXN0OiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCisKKyAgICAgICAg
KiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnNldEljb25V
UkwpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6aWNvblVSTCk6
CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAoV2ViQ29yZTo6RW1w
dHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCk6CisgICAgICAg
IChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50Ojp3aWxsQ2hhbmdlSWNvblVSTCk6Cisg
ICAgICAgIChXZWJDb3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaWRDaGFuZ2VJY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpkaWRD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wMS0yNSAgUGF2ZWwgRmVsZG1h
biAgPHBmZWxkbWFuQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBUaW1vdGh5
IEhhdGNoZXIuCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdlYkNvcmUvZG9t
L0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDM0NCw2ICs0MzQ0LDggQEAgdm9pZCBE
b2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25VUkwgPSBp
Y29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9pY29uVVJM
ID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBmLT5sb2Fk
ZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRVc2VT
ZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2FyZCkKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNiArNjA3
LDE4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAgICB9CiB9
CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJM
KQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBmcmFtZUxvYWRlcigpLT53
aWxsQ2hhbmdlSWNvblVSTCh0aGlzKTsKKyAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7
CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25VUkwodGhpcyk7CisgICAgfQor
fQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAgICAv
LyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4KSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTM3ODApCisrKyBXZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAg
bmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2UoKSBj
b25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwogICAgICAg
ICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldEljb25VUkwo
Y29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGluZygp
IGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0oTUFD
KQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lk
IHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRsZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYgaWNv
blVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBLVVJMIHVy
bEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVjdHNG
YWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBTdHJpbmcgbV9wYWdl
VGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0cmluZyBt
X292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1
Mzc4MCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMDksNiArMjA5LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUo
Y29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b25VUkwoY29uc3QgU3RyaW5nJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25h
bExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSB7IH0KQEAgLTI0Niw2ICsyNDcsOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRl
ciopIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciop
IHsgfQogCisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVy
KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIq
KSB7IH0KKwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiwg
Y29uc3QgY2hhciosIGludCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhE
b2N1bWVudExvYWRlciopIHsgfQogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lv
biA1Mzc4MCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjg3Miw2ICsyODcyLDExIEBAIHZvaWQgRnJhbWVMb2FkZXI6OndpbGxDaGFuZ2VUaXRs
ZShEb2N1bWUKICAgICBtX2NsaWVudC0+d2lsbENoYW5nZVRpdGxlKGxvYWRlcik7CiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXI6OndpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
Cit7CisgICAgbV9jbGllbnQtPndpbGxDaGFuZ2VJY29uVVJMKGxvYWRlcik7Cit9CisKIEZyYW1l
TG9hZFR5cGUgRnJhbWVMb2FkZXI6OmxvYWRUeXBlKCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9s
b2FkVHlwZTsKQEAgLTM4ODQsNiArMzg4OSwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRs
ZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwog
fQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkK
K3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQorCiBLVVJM
IEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVybiBh
Y3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAgLTQwMDAs
NiArNDAxMCwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAg
ICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9h
ZGVyKiBsb2FkZXIpCit7CisgICAgbV9jbGllbnQtPmRpZENoYW5nZUljb25VUkwobG9hZGVyKTsK
KworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikgeworICAgICAgICBtX2NsaWVu
dC0+ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChsb2FkZXItPmljb25VUkwoKSk7CisgICAgICAg
IC8vIFRPRE9bZGF2ZW1vb3JlQGNocm9taXVtLm9yZ10gSG93IGRvIHdlIHVwZGF0ZSB0aGUgaWNv
bnMgZm9yIGhpc3Rvcnk/CisgICAgfQorfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERp
ZENvbW1pdExvYWQoKQogewogICAgIGlmIChtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQp
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTg0LDYgKzE4NCw4IEBAIHB1Ymxp
YzoKICAgICBib29sIHN1YmZyYW1lSXNMb2FkaW5nKCkgY29uc3Q7CiAgICAgdm9pZCB3aWxsQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKICAgICB2b2lkIGRpZENoYW5nZVRpdGxlKERvY3Vt
ZW50TG9hZGVyKik7CisgICAgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciop
OworICAgIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopOwogCiAgICAgRnJh
bWVMb2FkVHlwZSBsb2FkVHlwZSgpIGNvbnN0OwogICAgIENhY2hlUG9saWN5IHN1YnJlc291cmNl
Q2FjaGVQb2xpY3koKSBjb25zdDsKQEAgLTI5OCw2ICszMDAsNyBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBjYW5jZWxBbmRDbGVhcigpOwogCiAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcmKTsK
KyAgICB2b2lkIHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAKICAgICB2b2lkIGNvbW1pdFBy
b3Zpc2lvbmFsTG9hZChQYXNzUmVmUHRyPENhY2hlZFBhZ2U+KTsKICAgICBib29sIGlzTG9hZGlu
Z0Zyb21DYWNoZWRQYWdlKCkgY29uc3QgeyByZXR1cm4gbV9sb2FkaW5nRnJvbUNhY2hlZFBhZ2U7
IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTM3ODApCisr
KyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MjQsNiArMTI0LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkg
PSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CkBAIC0xNjIsNiArMTYzLDkg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRp
dGxlKERvY3VtZW50TG9hZGVyKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdl
VGl0bGUoRG9jdW1lbnRMb2FkZXIqKSA9IDA7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxD
aGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopID0gMDsKKwogICAgICAgICB2aXJ0dWFs
IHZvaWQgY29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciosIGNvbnN0IGNoYXIqLCBpbnQpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9hZGluZyhEb2N1bWVudExvYWRlciop
ID0gMDsKICAgICAgICAgCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDUzODA2KQorKysgV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisy
MDEwLTAxLTI1ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRp
b24gd2hlbiB0aGUgZmF2aWNvbiBsaW5rIGlzIGNoYW5nZSBmcm9tIHNjcmlwdC4KKyAgICAgICAg
VGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3
aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVM
b2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCB0aHJlZSBtZXRob2RzOyBkaXNw
YXRjaERpZFJlY2VpdmVJY29uVVJMKCksCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5k
IGRpZENoYW5nZUljb25VUkwoKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1l
Q2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRSZWNlaXZlSWNv
blVSTCk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVS
TCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6d2lsbENoYW5nZUlj
b25VUkwpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpZENoYW5n
ZUljb25VUkwpOgorICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAx
MC0wMS0yMiAgRWxsaW90IEdsYXlzaGVyICA8ZXJnQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
RnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzMsNiArMTczLDkgQEAgcHVibGlj
OgogICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiB0aXRsZSkgeyB9CiAK
KyAgICAvLyBUaGUgcGFnZSBpY29uIHVybCBpcyBhdmFpbGFibGUuCisgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVJY29uVVJMKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBpY29uVVJMKSB7
IH0KKwogICAgIC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAg
dmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiA1Mzc4MCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjkyLDYgKzY5MiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5k
aWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25V
UkwpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVudCgpKQorICAgICAgICBtX3dlYkZyYW1l
LT5jbGllbnQoKS0+ZGlkUmVjZWl2ZUljb25VUkwobV93ZWJGcmFtZSwgaWNvblVSTCk7Cit9CisK
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewog
ICAgIFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0ltcGwoKTsKQEAgLTEw
MjYsNiArMTAzMiwxNiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVGl0
CiAgICAgLy8gRklYTUUKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OndpbGxDaGFu
Z2VJY29uVVJMKERvY3VtZW50TG9hZGVyKikKK3sKKyAgICAvLyBGSVhNRQorfQorCit2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7
CisgICAgLy8gRklYTUUKK30KKwogLy8gQ2FsbGVkIHdoZW5ldmVyIGRhdGEgaXMgcmVjZWl2ZWQu
CiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRl
ciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKQogewpJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCShyZXZpc2lvbiA1Mzc4MCkK
KysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRs
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJDb3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1
YWwgdm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwog
ICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2Fk
ZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1l
bnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZp
bmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9p
ZCB1cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTM4MDYpCisrKyBXZWJL
aXQvZ3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAx
LTI1ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hl
biB0aGUgZmF2aWNvbiBsaW5rIGlzIGNoYW5nZSBmcm9tIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCB0aHJlZSBtZXRob2RzOyBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uVVJMKCksCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENo
YW5nZUljb25VUkwoKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50Ojp3aWxsQ2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVy
Q2xpZW50OjpkaWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5oOgorCiAyMDEwLTAxLTE5ICBKb2FubWFyaWUgRGlnZ3MgIDxqb2Fu
bWFyaWUuZGlnZ3NAZ21haWwuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4K
SW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuY3BwCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NDksNiArNzQ5LDEx
IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3Qg
U3RyaW5nJiBpY29uVVJMKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9h
ZGluZ0Vycm9yUGFnZSkKQEAgLTgzMyw2ICs4MzgsMTYgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVu
dDo6ZGlkQ2hhbmdlVGl0bGUoVwogICAgIHNldFRpdGxlKGwtPnRpdGxlKCksIGwtPnVybCgpKTsK
IH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRnJh
bWVMb2FkZXJDbGllbnQ6OmRpZENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KQoreworICAgIC8vIEZJWE1FIGltcGxlbWVudCB0byB1cGRhdGUgZmF2aWNvbgorfQorCiBib29s
IEZyYW1lTG9hZGVyQ2xpZW50OjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYpIGNvbnN0CiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKSW5kZXg6IFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDUzNzgw
KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3
b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7Cisg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGNvbnN0IFdlYkNv
cmU6OlN0cmluZyYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2Fk
KCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQo
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xMzIs
NiArMTMzLDkgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB3aWxs
Q2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAKKyAgICAgICAg
dmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKik7CisKICAgICAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogCkluZGV4OiBXZWJL
aXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gNTM4MDYpCisrKyBXZWJLaXQvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAt
MSwzICsxLDIxIEBACisyMDEwLTAxLTI1ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBB
ZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbiBsaW5rIGlzIGNoYW5nZSBmcm9tIHNj
cmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUg
bG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRh
dGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCB0aHJl
ZSBtZXRob2RzOyBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKCksCisgICAgICAgIHdpbGxDaGFu
Z2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4KKyAgICAgICAgCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICog
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojp3aWxsQ2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisKIDIwMTAtMDEtMjIgIFN0ZXZlIEZhbGtlbmJ1cmcg
IDxzZmFsa2VuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTChjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIGljb25VUkwpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1p
dExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkBAIC0xNDEsNiAr
MTQyLDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUlj
b25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworCiAgICAgdmlydHVhbCB2b2lk
IGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50
KTsKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKSW5kZXg6IFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQko
cmV2aXNpb24gNTM3ODApCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTgsNiArNTk4LDExIEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgQ2FsbEZyYW1lTG9hZERl
bGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5jLCB3ZWJW
aWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwgKE5TU3Ry
aW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkK
K3sKKyAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1
cGRhdGUgZmF2aWNvbi4KK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkKIHsKICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29tbWl0dGVk
IHRoaXMgVVJMLgpAQCAtODI0LDYgKzgyOSwxNiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaWRDaGFuZ2VUaXRsCiAgICAgW2dldFdlYlZpZXcobV93ZWJGcmFtZS5nZXQoKSkgX2RpZENo
YW5nZVZhbHVlRm9yS2V5Ol9XZWJNYWluRnJhbWVUaXRsZUtleV07CiB9CiAKK3ZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VJY29uVVJMKERvY3VtZW50TG9hZGVyKiBsb2FkZXIp
Cit7CisgICAgLy8gRklYTUU6IEltcGxlbWVudCB0byBzZW5kIG5vdGlmaWNhdGlvbiBpZiBpY29u
IHVybCBpcyBhYm91dCB0byBjaGFuZ2UKK30KKwordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciogbG9hZGVyKQoreworICAgIC8vIEZJWE1F
OiBJbXBsZW1lbnQgdG8gc2VuZCBub3RpZmljYXRpb24gaWYgaWNvbiB1cmwgaGFzIGJlZW4gY2hh
bmdlZAorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3Vt
ZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdGEsIGludCBsZW5ndGgpCiB7CiAgICAg
TlNEYXRhICpuc0RhdGEgPSBbW05TRGF0YSBhbGxvY10gaW5pdFdpdGhCeXRlc05vQ29weToodm9p
ZCopZGF0YSBsZW5ndGg6bGVuZ3RoIGZyZWVXaGVuRG9uZTpOT107CkluZGV4OiBXZWJLaXQvcXQv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDUz
ODA2KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIy
IEBACisyMDEwLTAxLTI1ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3Rp
ZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbiBsaW5rIGlzIGNoYW5nZSBmcm9tIHNjcmlwdC4KKyAg
ICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3
aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2Yg
RnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCB0aHJlZSBtZXRob2Rz
OyBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKCksCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJM
KCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4KKyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMS0yNSAgU2lt
b24gSGF1c21hbm4gIDxoYXVzbWFubkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5
IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNTM3ODApCisrKyBX
ZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM1Niw2ICszNTYsMTkgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNw
YXRjaERpZFJlYwogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRS
ZWNlaXZlSWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGljb25VUkw6ICVzXG4iLCBx
UHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSwg
cVByaW50YWJsZShRU3RyaW5nKGljb25VUkwpKSk7CisKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisg
ICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUbyBiZSBub3RpZmllZCBvZiBjaGFuZ2lu
ZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlvbgorICAgIC8vIGVtaXQgaWNvblVSTENoYW5nZWQo
aWNvblVSTCk7Cit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENv
bW1pdExvYWQoKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCkBAIC01MDAs
MTIgKzUxMywyNCBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9
CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExv
YWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVu
dExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxl
IGlzIHRoZSByaWdodCBjYWxsYmFjawogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
d2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIC8vIG5vIG5lZWQgZm9y
LCBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMIGlzIHRoZSByaWdodCBjYWxsYmFjaworfQorCisK
K3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRl
ciopCit7CisgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwgaXMg
dGhlIHJpZ2h0IGNhbGxiYWNrCit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpmaW5p
c2hlZExvYWRpbmcoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIHsKICAgICBpZiAoIW1fcGx1Z2lu
VmlldykgewpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRRdC5oCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVj
ZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpAQCAtMTQ1LDYgKzE0Niw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmly
dHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsKIAorICAgICAgICB2aXJ0
dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUljb25VUkwoRG9jdW1lbnRMb2FkZXIqKTsKKwogICAgICAgICB2
aXJ0dWFsIHZvaWQgY29tbWl0dGVkTG9hZChXZWJDb3JlOjpEb2N1bWVudExvYWRlciosIGNvbnN0
IGNoYXIqLCBpbnQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoZWRMb2FkaW5nKERvY3Vt
ZW50TG9hZGVyKik7CiAKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgwNikKKysrIFdlYktpdC93aW4vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDEtMjUgIERhdmUg
TW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZp
Y29uIGxpbmsgaXMgY2hhbmdlIGZyb20gc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQgb2Jq
ZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAgbm90
aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxs
CisgICAgICAgIGhhdmUgdG8gYWRkIHRocmVlIG1ldGhvZHM7IGRpc3BhdGNoRGlkUmVjZWl2ZUlj
b25VUkwoKSwKKyAgICAgICAgd2lsbENoYW5nZUljb25VUkwoKSBhbmQgZGlkQ2hhbmdlSWNvblVS
TCgpLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0
ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25V
UkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6Cisg
ICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OndpbGxDaGFuZ2VJY29u
VVJMKToKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBX
ZWJGcmFtZS5oOgorCiAyMDEwLTAxLTIzICBEYW4gQmVybnN0ZWluICA8bWl0ekBhcHBsZS5jb20+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgTWFjaWVqIFN0YWNob3dpYWsuCkluZGV4OiBXZWJLaXQv
d2luL1dlYkZyYW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAko
cmV2aXNpb24gNTM3ODApCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMTQ3Miw2ICsxNDcyLDE2IEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERv
Y3VtZW50TG8KICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjp3aWxs
Q2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsK
K30KKwordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvblVSTChEb2N1bWVudExvYWRlciopCit7
CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBXZWJGcmFtZTo6Y2FuSGFuZGxlUmVx
dWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QpIGNvbnN0CiB7CiAgICAgcmV0dXJu
IFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7CkluZGV4OiBXZWJLaXQvd2luL1dl
YkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1
Mzc4MCkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjc2LDYg
KzI3Niw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRS
ZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6
OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VJY29uVVJMKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25V
UkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgY2FuSGFuZGxl
UmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsKICAgICB2aXJ0
dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgTUlNRVR5cGUp
IGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0ZvclVSTFNjaGVt
ZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4OiBXZWJLaXQv
d2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24g
NTM3ODApCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlk
bAkod29ya2luZyBjb3B5KQpAQCAtMTE0LDYgKzExNCwxNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1l
TG9hZERlbGVnYXRlIDogSVVua25vCiAgICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJ
V2ViVmlldyogd2ViVmlldywgW2luXSBCU1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUp
OwogCiAgICAgLyohCisgICAgICAgIEBtZXRob2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvblVSTDpm
b3JGcmFtZToKKyAgICAgICAgQGFic3RyYWN0IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRo
ZSBwYWdlIGljb24gVVJMIGZvciBhIGZyYW1lIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIEBw
YXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBh
cmFtIGljb25VUkwgVGhlIG5ldyBpY29uIHVybAorICAgICAgICBAcGFyYW0gZnJhbWUgVGhlIGZy
YW1lIGZvciB3aGljaCB0aGUgaWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAgICAgLSAo
dm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZFJlY2VpdmVJY29uVVJMOihOU1N0cmlu
ZyAqKWljb25VUkwgZm9yRnJhbWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVT
VUxUIGRpZFJlY2VpdmVJY29uVVJMKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiBp
Y29uVVJMLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRo
b2Qgd2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5v
dGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhh
cyBiZWVuIHJlY2VpdmVkCiAgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRp
bmcgdGhlIG1lc3NhZ2UKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzYsNiArMzc2LDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBC
U3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQorewor
ICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRy
PElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NF
RURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAg
ICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVJY29uVVJMKHdlYlZpZXcsIEJTdHJp
bmcoaWNvblVSTCksIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVS
TChjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRM
b2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDog
V2ViS2l0VG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxv
ZwkocmV2aXNpb24gNTM4MDYpCisrKyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyOCBAQAorMjAxMC0wMS0yNSAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb24gbGluayBpcyBjaGFuZ2Ug
ZnJvbSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhl
IGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBh
ZGQgdGhyZWUgbWV0aG9kczsgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvblVSTCgpLAorICAgICAgICB3
aWxsQ2hhbmdlSWNvblVSTCgpIGFuZCBkaWRDaGFuZ2VJY29uVVJMKCkuCisgICAgICAgIAorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAg
ICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChk
dW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxl
cjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBJY29uVVJM
Q2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcEljb25VUkxD
aGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZFJlY2VpdmVJY29uVVJMKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAg
KiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0
OjpkaWRSZWNlaXZlSWNvblVSTCk6CisKIDIwMTAtMDEtMjUgIENocmlzIEplcmRvbmVrICA8Y2pl
cmRvbmVrQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBCYXJ0aC4KSW5k
ZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBA
IExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAsIG1fZHVtcFNv
dXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxiYWNrcyhmYWxz
ZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVtcEljb25VUkxD
aGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFsc2UpCiAg
ICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENsb3NlT25X
ZWJWaWV3cyh0cnVlKQpAQCAtMTg1LDYgKzE4NiwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1w
VGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRl
eHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvblVSTENoYW5nZXNDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25VUkxD
aGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTI3Niw2ICsxMjg0LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJB
cmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvblVSTENoYW5nZXMiLCBkdW1wSWNvblVS
TENoYW5nZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9u
c2UiLCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVS
ZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJl
bGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9D
b21wbGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNv
ZGVIb3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2
aXNpb24gNTM3ODApCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDYsNiArMTQ2LDkgQEAgcHVibGljOgogICAg
IGJvb2wgZHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdl
czsgfQogICAgIHZvaWQgc2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMp
IHsgbV9kdW1wVGl0bGVDaGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBk
dW1wSWNvblVSTENoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uVVJMQ2hhbmdlczsg
fQorICAgIHZvaWQgc2V0RHVtcEljb25VUkxDaGFuZ2VzKGJvb2wgZHVtcEljb25VUkxDaGFuZ2Vz
KSB7IG1fZHVtcEljb25VUkxDaGFuZ2VzID0gZHVtcEljb25VUkxDaGFuZ2VzOyB9CisKICAgICBi
b29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgdm9pZCBzZXREdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2so
Ym9vbCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2spIHsgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJh
Y2sgPSBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0KICAgICAKQEAgLTI0Myw2ICsyNDYsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wU291cmNlQXNXZWJBcmNoaXZlOwogICAgIGJvb2wg
bV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wVGl0bGVDaGFuZ2VzOworICAg
IGJvb2wgbV9kdW1wSWNvblVSTENoYW5nZXM7CiAgICAgYm9vbCBtX2R1bXBWaXNpdGVkTGlua3ND
YWxsYmFjazsKICAgICBib29sIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlOwogICAgIGJvb2wgbV9j
YWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2lu
L0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVu
ZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCShyZXZpc2lvbiA1Mzc4MCkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE4OSw2ICsxODksMTkgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBG
cmFtZUxvYWREZWxlZwogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRSZWNlaXZlSWNvblVSTCgKKyAgICAvKiBbaW5d
ICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8qIFtpbl0gKi8gQlNUUiBpY29uVVJMLAorICAg
IC8qIFtpbl0gKi8gSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91
dFRlc3RDb250cm9sbGVyLT5kdW1wRnJhbWVMb2FkQ2FsbGJhY2tzKCkpCisgICAgICAgIHByaW50
ZigiJXMgLSBkaWRSZWNlaXZlSWNvblVSTDogJVNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JU
ZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpLCBpY29uVVJMKTsKKworICAgIGlmICg6OmdMYXlvdXRU
ZXN0Q29udHJvbGxlci0+ZHVtcEljb25VUkxDaGFuZ2VzKCkgJiYgIWRvbmUpCisgICAgICAgIHBy
aW50ZigiSUNPTiBVUkwgQ0hBTkdFRDogJVNcbiIsIGljb25VUkwgPyBpY29uVVJMIDogTCIiKTsK
KyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6cHJvY2Vzc1dv
cmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVuIHdhaXQgZm9yIGl0
IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDUzNzgwKQorKysgV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAg
LTcyLDYgKzcyLDExIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLAog
ICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uVVJMKAorICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwK
KyAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKKwogICAgIHZpcnR1YWwgSFJF
U1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBpbWFn
ZSwKSW5kZXg6IFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkocmV2aXNpb24gNTM3
ODApCisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC02MSw2ICs2MSwxMSBAQCBwdWJsaWM6DQogICAgICAgICAvKiBbaW5dICovIEJTVFIg
dGl0bGUsDQogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNf
T0s7IH0NCiAgICAgDQorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRS
ZWNlaXZlSWNvblVSTCgNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsDQor
ICAgICAgICAvKiBbaW5dICovIEJTVFIgaWNvblVSTCwNCisgICAgICAgIC8qIFtpbl0gKi8gSVdl
YkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKyAgICANCiAgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKCANCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYlZpZXcgKndlYlZpZXcsDQogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaEJp
dG1hcCwNCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1MzgwNikKKysrIExheW91dFRlc3RzL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDEwLTAxLTI1ICBEYXZlIE1vb3Jl
ICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbiBs
aW5rIGlzIGNoYW5nZSBmcm9tIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3
aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0
aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAg
ICAgICBoYXZlIHRvIGFkZCB0aHJlZSBtZXRob2RzOyBkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJM
KCksCisgICAgICAgIHdpbGxDaGFuZ2VJY29uVVJMKCkgYW5kIGRpZENoYW5nZUljb25VUkwoKS4K
KyAgICAgICAgCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0zMzgxMgorCisgICAgICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBB
ZGRlZC4KKwogMjAxMC0wMS0yNSAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5j
b20+CiAKICAgICAgICAgUnViYmVyLXN0YW1wZWQgYnkgWGFuIExvcGV6LgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACitJQ09OIFVSTCBDSEFOR0VE
OiBodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbworT3JpZ2luYWwgaWNvblVSTCBpczogaHR0
cDovL3Rlc3QuY29tL29sZGZhdmljb24uaWNvCitTZXR0aW5nIG5ldyBpY29uIFVSTCB0bzogaHR0
cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KK05ldyBpY29uVVJMIGlzOiBodHRwOi8vdGVzdC5j
b20vbmV3ZmF2aW9uLmljbwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1w
cm9wZXJ0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11
cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBAQAorPGh0bWw+Cis8
aGVhZD4KKzx0aXRsZT5PcmlnaW5hbCBUaXRsZTwvdGl0bGU+Cis8bGluayByZWw9InNob3J0Y3V0
IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cDovL3Rlc3QuY29tL29sZGZhdmlj
b24uaWNvIi8+Cis8c2NyaXB0PgorZnVuY3Rpb24gZGVidWdPdXRwdXQoc3RyKSB7CisgICAgdGV4
dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cik7CisgICAgZGVidWdEaXYgPSBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgnZGVidWdEaXYnKTsKKyAgICBkaXYgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50ICgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKHRleHQpOworICAgIGRlYnVnRGl2
LmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHNldEZhdkljb24oaWNvblVSTCkgewor
ICAgIHZhciBkb2NIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVsw
XTsKKyAgICB2YXIgbGlua3MgPSBkb2NIZWFkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIik7
CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkgeworICAgICAgdmFy
IGxpbmsgPSBsaW5rc1tpXTsKKyAgICAgIGlmIChsaW5rLnR5cGU9PSJpbWFnZS94LWljb24iICYm
IGxpbmsucmVsPT0ic2hvcnRjdXQgaWNvbiIpIHsKKyAgICAgICAgZG9jSGVhZC5yZW1vdmVDaGls
ZChsaW5rKTsKKyAgICAgICAgYnJlYWs7IC8vIEFzc3VtaW5nIG9ubHkgb25lIG1hdGNoIGF0IG1v
c3QuCisgICAgICB9CisgICAgfQorICAgIHZhciBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVu
dCgibGluayIpOworICAgIGxpbmsudHlwZSA9ICJpbWFnZS94LWljb24iOworICAgIGxpbmsucmVs
ID0gInNob3J0Y3V0IGljb24iOworICAgIGxpbmsuaHJlZiA9IGljb25VUkw7CisgICAgZG9jSGVh
ZC5hcHBlbmRDaGlsZChsaW5rKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMoKSB7CisgICAgaWYg
KHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlvdXRUZXN0Q29udHJv
bGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBJY29u
VVJMQ2hhbmdlcygpOworICAgIH0KKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNC
eVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7
CisgICAgZGVidWdPdXRwdXQgKCdPcmlnaW5hbCBpY29uVVJMIGlzOiAnICsgaWNvblVSTCk7Cisg
ICAgbmV3VVJMID0gJ2h0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvJzsKKyAgICBkZWJ1Z091
dHB1dCAoJ1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiAnICsgbmV3VVJMKTsKKyAgICBzZXRGYXZJ
Y29uKG5ld1VSTCk7CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworCisgICAg
ZGVidWdPdXRwdXQgKCdOZXcgaWNvblVSTCBpczogJyArIGljb25VUkwpOworfQorCis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ncnVuVGVzdHMoKTsnPgorPGRpdiBpZD0nZGVidWdE
aXYnPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>
<flag name="review"
          id="29772"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50460</attachid>
            <date>2010-03-10 17:48:25 -0800</date>
            <delta_ts>2010-03-11 08:53:57 -0800</delta_ts>
            <desc>Patch to implement</desc>
            <filename>icons.patch</filename>
            <type>text/plain</type>
            <size>30767</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTU4MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wMy0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorCiAy
MDEwLTAzLTEwICBDaHJpcyBGbGVpemFjaCAgPGNmbGVpemFjaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgU2tpcHBpbmcgdGVzdCBvbiBHVEsgYW5kIFdJTi4gTm8gUmV2aWV3LgpJbmRleDogTGF5b3V0
VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0DQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQgQEAKK21haW4gZnJhbWUgLSBk
aWRDaGFuZ2VJY29ucworT3JpZ2luYWwgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL29sZGZh
dmljb24uaWNvCitTZXR0aW5nIG5ldyBpY29uIFVSTCB0bzogaHR0cDovL3Rlc3QuY29tL25ld2Zh
dmlvbi5pY28KK05ldyBpY29uVVJMIGlzOiBodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbwpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1s
CShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9y
aWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1h
Z2UveC1pY29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3Jp
cHQ+CitmdW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3Jl
YXRlVGV4dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdkZWJ1Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsK
KyAgICBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2
KTsKK30KKworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5r
cyA9IGRvY0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ld
OworICAgICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9y
dGN1dCBpY29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAg
ICBicmVhazsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAg
ICB9CisgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAg
bGluay50eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNv
biI7CisgICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxp
bmspOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRl
c3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQo
KTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzKCk7CisgICAg
fQorICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBd
LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAo
J09yaWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDov
L3Rlc3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcg
aWNvbiBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBp
Y29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVt
ZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBp
Y29uVVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkg
b25sb2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9k
eT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAxMC0wMy0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgVGVzdDogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHku
aHRtbAorCisgICAgICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50OjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwpOgorICAgICAg
ICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXI6Omljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9FbXB0eUNsaWVudHMuaDoKKyAgICAg
ICAgKFdlYkNvcmU6OkVtcHR5RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZUxvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5oOgorICAg
ICAgICAqIGxvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oOgorCiAyMDEwLTAzLTEwICBKaWFuIExp
ICA8amlhbmxpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEbWl0cnkgVGl0
b3YuCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHANCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MzcyLDYgKzQzNzIsOCBAQCAgICAgLy8gRklY
TUUgLSA8cmRhcjovL3Byb2JsZW0vNDcyNzY0NT4gCiAgICAgICAgIG1faWNvblVSTCA9IGljb25V
Ukw7CiAgICAgZWxzZSBpZiAoIXR5cGUuaXNFbXB0eSgpKQogICAgICAgICBtX2ljb25VUkwgPSBp
Y29uVVJMOworICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpCisgICAgICAgIGYtPmxvYWRlcigp
LT5zZXRJY29uVVJMKG1faWNvblVSTCk7CiB9CiAKIHZvaWQgRG9jdW1lbnQ6OnNldFVzZVNlY3Vy
ZUtleWJvYXJkRW50cnlXaGVuQWN0aXZlKGJvb2wgdXNlc1NlY3VyZUtleWJvYXJkKQpJbmRleDog
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDYgKzYwNywx
NyBAQCAgICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZVRpdGxlKHRoCiAgICAgfQogfQog
Cit2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkK
K3sKKyAgICBpZiAoaWNvblVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChtX3BhZ2VJY29uVVJMICE9IGljb25VUkwpIHsKKyAgICAgICAgbV9wYWdlSWNvblVSTCA9IGlj
b25VUkw7CisgICAgICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAg
IH0KK30KKwogS1VSTCBEb2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CiB7CiAg
ICAgLy8gUmV0dXJuIHRoZSBVUkwgdG8gYmUgdXNlZCBmb3IgaGlzdG9yeSBhbmQgQi9GIGxpc3Qu
CkluZGV4OiBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vu
c2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwog
ICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldElj
b25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNv
ZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZP
Uk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAg
ICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0
aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmlu
ZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBL
VVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVm
bGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBTdHJpbmcg
bV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0
cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xp
ZW50cy5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHJl
dmlzaW9uIDU1ODIxKQorKysgV2ViQ29yZS9sb2FkZXIvRW1wdHlDbGllbnRzLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTIxNCw2ICsyMTQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZUljb24oKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFy
dFByb3Zpc2lvbmFsTG9hZCgpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2Vp
dmVUaXRsZShjb25zdCBTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNv
bnN0IFJlc291cmNlRXJyb3ImKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
TG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFt
ZUxvYWRlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5j
cHAJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0zOTAzLDYgKzM5MDMsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0
VGl0bGUoY29uc3QgU3RyaW5nJgogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxl
KTsKIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25V
UkwpCit7CisgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJMKTsKK30KKwog
S1VSTCBGcmFtZUxvYWRlcjo6b3JpZ2luYWxSZXF1ZXN0VVJMKCkgY29uc3QKIHsKICAgICByZXR1
cm4gYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkudXJsKCk7CkBAIC00
MDIyLDYgKzQwMjcsMTMgQEAgICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bAogICAgIH0KIH0KIAordm9pZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRM
b2FkZXIqIGxvYWRlcikKK3sKKyAgICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpIHsK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKKyAgICB9Cit9CisK
IHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1f
Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1l
TG9hZGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShy
ZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE4NCw2ICsxODQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9h
ZGluZygpIGNvbnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7
CiAgICAgdm9pZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlk
Q2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5
cGUoKSBjb25zdDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29u
c3Q7CkBAIC0yOTksNiArMzAwLDcgQEAgICAgIHZvaWQgd3JpdGUoY29uc3QgY2hhciogc3RyaW5n
LCBpbnQgbAogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAgIHZvaWQgc2V0VGl0bGUo
Y29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogCiAg
ICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdlPik7CiAg
ICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1fbG9hZGlu
Z0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVu
dC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAko
cmV2aXNpb24gNTU4MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjMsNiArMTIzLDcgQEAgICAgICAgICAvLyBBbiBpbmxpbmUgZnVu
Y3Rpb24gY2Fubm90IGJlIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNp
b25hbExvYWQoKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKSA9IDA7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENoYW5nZUljb25zKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRDb21taXRMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWls
UHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKSA9IDA7Cklu
ZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDMtMTAgIERhdmUgTW9vcmUgIDxkYXZl
bW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0IHN1cHBvcnQgZm9yIGljb24gY2hhbmdlcy4KKworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAg
ICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExh
eW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChkdW1w
SWNvbkNoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3Rh
dGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBJY29uQ2hhbmdlcyk6
CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcEljb25DaGFuZ2VzKToKKyAg
ICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAgICAg
ICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9X
aW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRDaGFuZ2VJY29u
cyk6CisKIDIwMTAtMDMtMTAgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFJvbGwgb3V0IHRoZSBwcmVwYXJlLUNoYW5nZUxvZyBwYXJ0IG9mIHI1NTg3MApJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xs
ZXIuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBM
YXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3Vy
Y2VBc1dlYkFyY2hpdmUoZmFsc2UpCiAgICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2Up
CiAgICAgLCBtX2R1bXBUaXRsZUNoYW5nZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uQ2hhbmdl
cyhmYWxzZSkKICAgICAsIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwg
bV9kdW1wV2lsbENhY2hlUmVzcG9uc2UoZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmll
d3ModHJ1ZSkKQEAgLTE4Niw2ICsxODcsMTMgQEAgICAgIGNvbnRyb2xsZXItPnNldER1bXBUaXRs
ZUNoYW5nZXModHJ1ZQogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
IH0KIAorc3RhdGljIEpTVmFsdWVSZWYgZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0
UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0
LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNW
YWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9s
bGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZh
dGUodGhpc09iamVjdCkpOworICAgIGNvbnRyb2xsZXItPnNldER1bXBJY29uQ2hhbmdlcyh0cnVl
KTsKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRp
YyBKU1ZhbHVlUmVmIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBj
b250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6
ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVS
ZWYqIGV4Y2VwdGlvbikKIHsKICAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9
IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRo
aXNPYmplY3QpKTsKQEAgLTEzOTcsNiArMTQwNSw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91
dFRlc3RDb250cm9sbGVyOjoKICAgICAgICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1
bXBTb3VyY2VBc1dlYkFyY2hpdmVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3Rh
dHVzQ2FsbGJhY2tzIiwgZHVtcFN0YXR1c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImR1bXBUaXRsZUNoYW5nZXMiLCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKKyAgICAgICAgeyAiZHVtcEljb25DaGFuZ2VzIiwgZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxDYWNo
ZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRvQ29t
cGxldGVGb3JFbGVtZW50V2l0aElkIiwgZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50
V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBlbmNv
ZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNTU4MjEpCisr
KyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTIsNiArMTUyLDkgQEAgcHVibGljOgogICAgIGJvb2wgZHVtcFRpdGxl
Q2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQogICAgIHZvaWQg
c2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9kdW1wVGl0bGVD
aGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNvbkNoYW5nZXMo
KSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQgc2V0RHVtcElj
b25DaGFuZ2VzKGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFuZ2VzID0gZHVt
cEljb25DaGFuZ2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgdm9pZCBzZXRE
dW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2spIHsg
bV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0K
ICAgICAKQEAgLTI2MCw2ICsyNjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wU291cmNl
QXNXZWJBcmNoaXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwogICAgIGJvb2wg
bV9kdW1wVGl0bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7CiAgICAgYm9v
bCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdpbGxDYWNoZVJl
c3BvbnNlOwogICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDogV2ViS2l0VG9v
bHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcA0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJ
KHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxNiBAQCAgICAg
aWYgKDo6Z0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVGl0CiAgICAgcmV0dXJuIFNfT0s7CiB9
CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5n
ZUljb25zKAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsCisgICAgLyogW2luXSAq
LyBJV2ViRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRy
b2xsZXItPmR1bXBJY29uQ2hhbmdlcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdl
SWNvbnNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigp
KTsKKworICAgIHJldHVybiBTX09LOworfQorCiB2b2lkIEZyYW1lTG9hZERlbGVnYXRlOjpwcm9j
ZXNzV29yaygpCiB7CiAgICAgLy8gaWYgYW5vdGhlciBsb2FkIHN0YXJ0ZWQsIHRoZW4gd2FpdCBm
b3IgaXQgdG8gY29tcGxldGUuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4v
RnJhbWVMb2FkRGVsZWdhdGUuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5k
ZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0
aXRsZSwKICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1
YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDaGFuZ2VJY29ucygKKyAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUg
KmZyYW1lKTsKKwogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNl
aXZlSWNvbiggCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAg
IC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBpbWFnZSwKSW5kZXg6IFdlYktpdFRvb2xzL1dpbkxhdW5j
aGVyL1dpbkxhdW5jaGVyLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hl
ci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdFRvb2xzL1dpbkxhdW5j
aGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1Ymxp
YzoNCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqd2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpm
cmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKyAgICANCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKCANCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKndlYlZpZXcsDQogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaEJpdG1hcCwNCklu
ZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTAtMDMtMTAgIERhdmUg
TW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZp
Y29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAg
ICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hp
Y2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZy
YW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50OjpkaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6CisgICAgICAg
ICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgorCiAyMDEwLTAzLTEwICBEYXJpbiBGaXNo
ZXIgIDxkYXJpbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSmVyZW15IE9y
bG93LgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZp
c2lvbiA1NTgyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAko
d29ya2luZyBjb3B5KQpAQCAtMTg3LDYgKzE4Nyw5IEBAICAgICAvLyBBIGNsaWVudC1zaWRlIHJl
ZGlyZWN0IGNvbXBsZXRlZC4KICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBhdmFpbGFibGUuCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5n
ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisKICAg
ICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1
NTgyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzEyLDYgKzcxMiwxMiBAQCAgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1f
d2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ2hhbmdlSWNvbnMoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuaAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3Jj
L0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw3ICs5OSw3IEBA
ICAgICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCAtLS0tLS0KICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUG9wU3RhdGVXaXRoaW5QYWdlKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoV2lsbENsb3NlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24o
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKSW5kZXg6IFdlYktp
dC9ndGsvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNSBAQAorMjAxMC0wMy0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
TmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICAq
IFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWl2ZUljb25VUkwpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6d2lsbENoYW5nZUljb25VUkwpOgorICAgICAg
ICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlkQ2hhbmdlSWNvblVSTCk6CisgICAgICAg
ICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKwogMjAxMC0wMy0wOSAg
UGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgR3VzdGF2byBOb3JvbmhhIFNpbHZhLgpJbmRleDogV2ViS2l0L2d0ay9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvZ3Rr
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2aXNpb24gNTU4MjEp
CisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCAgICAgICAgIGdfc2lnbmFsX2VtaXRf
YnlfbmFtZSh3ZWJWaWV3LCAiCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIGlm
IChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkp
CkBAIC04Myw2ICs4Myw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBAQAorMjAxMC0wMy0xMCAgRGF2ZSBN
b29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmlj
b25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAg
ICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGlj
aCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJh
bWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNw
YXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hh
bmdlSWNvbnMpOgorCiAyMDEwLTAzLTEwICBKb2huIFN1bGxpdmFuICA8c3VsbGl2YW5AYXBwbGUu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRpbSBIYXRjaGVyLgpJbmRleDogV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA1NTgyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSk7CisgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zp
c2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJ
bmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQ0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTk4LDYgKzU5OCwxMSBA
QCAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlCiAgICAgICAgIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1l
OiksIChOU1N0cmluZyAqKXRpdGxlLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxvdyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24u
Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
CiB7CiAgICAgLy8gVGVsbCB0aGUgY2xpZW50IHdlJ3ZlIGNvbW1pdHRlZCB0aGlzIFVSTC4KSW5k
ZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvQ2hhbmdl
TG9nCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMiBAQAorMjAxMC0wMy0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJl
IGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9i
amVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5v
dGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2ls
bAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25z
KCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
ODEyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdl
VGl0bGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5n
ZUljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hh
bmdlSWNvblVSTCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5oOgorCiAyMDEwLTAzLTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBIYXVzbWFubi4KSW5kZXg6IFdlYktpdC9xdC9XZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcA0KPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkocmV2aXNpb24gNTU4
MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM1Niw2ICszNTYsMTkgQEAgICAgICAgICBwcmludGYoIiVzIC0g
ZGlkUmVjZWl2ZVRpdGxlOiAlcwogfQogCiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBxUHJpbnRhYmxlKGRy
dERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUpKSk7CisKKyAgICBpZiAo
IW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJWE1FOiBUbyBiZSBub3Rp
ZmllZCBvZiBjaGFuZ2luZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlvbgorICAgIC8vIGVtaXQg
aWNvbnNDaGFuZ2VkKCk7Cit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZENvbW1pdExvYWQoKQogewogICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCkBA
IC01MDAsNyArNTEzLDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hhbmdlVGl0
bAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1l
bnRMb2FkZXIgKikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNwYXRjaERpZFJlY2VpdmVU
aXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQv
d2luL0NoYW5nZUxvZwkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEwLTAzLTEwICBEYXZlIE1vb3JlICA8
ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9y
IGEgcGFnZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUg
RG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwK
KyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRl
ckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlk
Q2hhbmdlSWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVn
YXRlLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5j
cHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAg
ICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMp
OgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMDMtMTAgIEVyaWMgVWhyaGFuZSAgPGVy
aWN1QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBMZXZpbi4KSW5k
ZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsDQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09DQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5p
ZGwJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxv
YWREZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTExNCw2ICsxMTQsMTUgQEAgICAgICAg
ICAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZQogICAgIEhSRVNVTFQgZGlkUmVjZWl2
ZVRpdGxlKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gQlNUUiB0aXRsZSwgW2luXSBJV2Vi
RnJhbWUqIGZyYW1lKTsKIAogICAgIC8qIQorICAgICAgICBAbWV0aG9kIHdlYlZpZXc6ZGlkQ2hh
bmdlSWNvbnM6Zm9yRnJhbWU6CisgICAgICAgIEBhYnN0cmFjdCBOb3RpZmllcyB0aGUgZGVsZWdh
dGUgdGhhdCB0aGUgcGFnZSBpY29ucyBmb3IgYSBmcmFtZSBoYXZlIGJlZW4gY2hhbmdlZAorICAg
ICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBtZXNzYWdlCisgICAg
ICAgIEBwYXJhbSBmcmFtZSBUaGUgZnJhbWUgZm9yIHdoaWNoIHRoZSBpY29uIFVSTCBoYXMgYmVl
biByZWNlaXZlZAorICAgICAgICAtICh2b2lkKXdlYlZpZXc6KFdlYlZpZXcgKilzZW5kZXIgZGlk
Q2hhbmdlSWNvbnNmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFtZTsKKyAgICAqLworICAgIEhSRVNV
TFQgZGlkQ2hhbmdlSWNvbnMoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUq
IGZyYW1lKTsKKworICAgIC8qIQogICAgICAgICBAbWV0aG9kIHdlYlZpZXc6ZGlkUmVjZWl2ZUlj
b246Zm9yRnJhbWU6CiAgICAgICAgIEBhYnN0cmFjdCBOb3RpZmllcyB0aGUgZGVsZWdhdGUgdGhh
dCBhIHBhZ2UgaWNvbiBpbWFnZSBmb3IgYSBmcmFtZSBoYXMgYmVlbiByZWNlaXZlZAogICAgICAg
ICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5nIHRoZSBtZXNzYWdlCkluZGV4OiBX
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcA0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
Y3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNzYsNiArMzc2LDE0IEBAICAg
ICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPmZyYW1lTG9hZERlbGUKICAgICAgICAgZnJhbWVMb2Fk
RGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3RyaW5nKHRpdGxlKSwgbV93ZWJG
cmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7
CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJhbWVMb2FkRGVsZWdhdGU7Cisg
ICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxlZ2F0ZSgmZnJhbWVMb2FkRGVs
ZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZENoYW5nZUljb25zKHdlYlZp
ZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53
ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03Miw2ICs3
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0
cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuY3BwDQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09DQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU1ODIxKQorKysgV2Vi
S2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MjksNiArMTUyOSwxMSBA
QCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvCiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2Fk
ZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhh
bmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAg
IHJldHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0
L3dpbi9XZWJGcmFtZS5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5oCShy
ZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpA
QCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0TWFpbkZyYW1l
RG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZVRpdGxlKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVRpdGxl
KFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUlj
b25zKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCBib29sIGNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29uc3Q7CiAgICAgdmly
dHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIE1JTUVUeXBl
KSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlzdHNGb3JVUkxTY2hl
bWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>50509</attachid>
            <date>2010-03-11 08:53:57 -0800</date>
            <delta_ts>2010-04-10 14:06:03 -0700</delta_ts>
            <desc>Fixed build failures</desc>
            <filename>icons.patch</filename>
            <type>text/plain</type>
            <size>40526</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDMtMTAgIERhdmUgTW9vcmUgIDxkYXZl
bW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEFkZCB0ZXN0IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisg
ICAgICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4K
KyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKwogMjAx
MC0wMy0xMCAgQ2hyaXMgRmxlaXphY2ggIDxjZmxlaXphY2hAYXBwbGUuY29tPgogCiAgICAgICAg
IFNraXBwaW5nIHRlc3Qgb24gR1RLIGFuZCBXSU4uIE5vIFJldmlldy4KSW5kZXg6IExheW91dFRl
c3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorbWFpbiBmcmFtZSAtIGRpZENo
YW5nZUljb25zCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNv
bi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9u
LmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxoZWFkPgorPHRpdGxlPk9yaWdpbmFs
IFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1p
Y29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28iLz4KKzxzY3JpcHQ+Citm
dW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0ID0gZG9jdW1lbnQuY3JlYXRlVGV4
dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZWJ1
Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQgKCdkaXYnKTsKKyAgICBk
aXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYuYXBwZW5kQ2hpbGQoZGl2KTsKK30K
KworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7CisgICAgdmFyIGRvY0hlYWQgPSBkb2N1
bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdOworICAgIHZhciBsaW5rcyA9IGRv
Y0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsKKyAgICBmb3IgKHZhciBpID0gMDsg
aSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIgbGluayA9IGxpbmtzW2ldOworICAg
ICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYgbGluay5yZWw9PSJzaG9ydGN1dCBp
Y29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxkKGxpbmspOworICAgICAgICBicmVh
azsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9zdC4KKyAgICAgIH0KKyAgICB9Cisg
ICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7CisgICAgbGluay50
eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwgPSAic2hvcnRjdXQgaWNvbiI7Cisg
ICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFkLmFwcGVuZENoaWxkKGxpbmspOwor
fQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250
cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAg
ICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25DaGFuZ2VzKCk7CisgICAgfQorICAg
IGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAgICBkZWJ1Z091dHB1dCAoJ09yaWdp
bmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBuZXdVUkwgPSAnaHR0cDovL3Rlc3Qu
Y29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0ICgnU2V0dGluZyBuZXcgaWNvbiBV
UkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24obmV3VVJMKTsKKyAgICBpY29uVVJM
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50c0J5
VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1Z091dHB1dCAoJ05ldyBpY29uVVJM
IGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2Fk
PSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+Cis8L2Rpdj4KKzwvYm9keT4KKzwv
aHRtbD4KSW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTAtMDMtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFy
ZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBv
YmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBu
b3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdp
bGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0z
MzgxMgorCisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKwor
ICAgICAgICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6
c2V0SWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjpp
Y29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJD
b3JlOjpFbXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAg
ICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBs
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wMy0xMCAgSmlhbiBMaSAgPGppYW5s
aUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRG1pdHJ5IFRpdG92LgpJbmRl
eDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTQzNzIsNiArNDM3Miw4IEBAICAgICAvLyBGSVhNRSAtIDxyZGFy
Oi8vcHJvYmxlbS80NzI3NjQ1PiAKICAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKICAgICBl
bHNlIGlmICghdHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7Cisg
ICAgaWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25V
UkwobV9pY29uVVJMKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRF
bnRyeVdoZW5BY3RpdmUoYm9vbCB1c2VzU2VjdXJlS2V5Ym9hcmQpCkluZGV4OiBXZWJDb3JlL2xv
YWRlci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3Vt
ZW50TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDYgKzYwNywxNyBAQCAgICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZVRpdGxlKHRoCiAgICAgfQogfQogCit2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBpZiAo
aWNvblVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BhZ2VJY29u
VVJMICE9IGljb25VUkwpIHsKKyAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7CisgICAg
ICAgIGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIH0KK30KKwogS1VS
TCBEb2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJu
IHRoZSBVUkwgdG8gYmUgdXNlZCBmb3IgaGlzdG9yeSBhbmQgQi9GIGxpc3QuCkluZGV4OiBXZWJD
b3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAg
ICAgICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKICAgICAgICAgdm9pZCBz
ZXRUaXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0
cmluZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7
IHJldHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1
MCw2ICsxNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVj
b3JkaW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7
IHJldHVybiBtX3BhZ2VUaXRsZTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBj
b25zdCB7IHJldHVybiBtX3BhZ2VJY29uVVJMOyB9CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0
b3J5KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgp
IGNvbnN0OwpAQCAtMjU3LDYgKzI1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAKICAgICAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOwor
ICAgICAgICBTdHJpbmcgbV9wYWdlSWNvblVSTDsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlk
ZUVuY29kaW5nOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNTU4MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjE0LDYg
KzIxNCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNv
bigpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0
cmluZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJv
ciYpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDU1ODIx
KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
OTAzLDYgKzM5MDMsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5n
JgogICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAordm9pZCBGcmFt
ZUxvYWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgZG9jdW1l
bnRMb2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJMKTsKK30KKwogS1VSTCBGcmFtZUxvYWRlcjo6
b3JpZ2luYWxSZXF1ZXN0VVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRM
b2FkZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkudXJsKCk7CkBAIC00MDIyLDYgKzQwMjcsMTIgQEAg
ICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bAogICAgIH0KIH0KIAordm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sK
KyAgICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIG1fY2xpZW50LT5k
aXNwYXRjaERpZENoYW5nZUljb25zKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVu
dCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODQsNiArMTg0LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxD
aGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9j
dW1lbnRMb2FkZXIqKTsKKyAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7
CiAKICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kg
c3VicmVzb3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMjk5LDYgKzMwMCw3IEBAICAgICB2
b2lkIHdyaXRlKGNvbnN0IGNoYXIqIHN0cmluZywgaW50IGwKICAgICB2b2lkIGNhbmNlbEFuZENs
ZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgc2V0
SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlzaW9uYWxMb2Fk
KFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNMb2FkaW5nRnJvbUNhY2hlZFBh
Z2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpJbmRleDogV2Vi
Q29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBA
QCAgICAgICAgIC8vIEFuIGlubGluZSBmdW5jdGlvbiBjYW5ub3QgYmUgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKSW5kZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgV2Vi
S2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAt
MDMtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0IHN1cHBvcnQgZm9y
IGljb24gY2hhbmdlcy4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29u
dHJvbGxlcik6CisgICAgICAgIChkdW1wSWNvbkNoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChM
YXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGljRnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRy
b2xsZXI6OmR1bXBJY29uQ2hhbmdlcyk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6
c2V0RHVtcEljb25DaGFuZ2VzKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAoRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaDoK
KyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oOgorICAgICAgICAoV2luTGF1bmNo
ZXJXZWJIb3N0OjpkaWRDaGFuZ2VJY29ucyk6CisKIDIwMTAtMDMtMTAgIEFkYW0gUm9iZW4gIDxh
cm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJvbGwgb3V0IHRoZSBwcmVwYXJlLUNoYW5nZUxv
ZyBwYXJ0IG9mIHI1NTg3MApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0
VGVzdENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJU
cmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTU2LDYgKzU2LDcgQEAgTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250
cm9sbAogICAgICwgbV9kdW1wU291cmNlQXNXZWJBcmNoaXZlKGZhbHNlKQogICAgICwgbV9kdW1w
U3RhdHVzQ2FsbGJhY2tzKGZhbHNlKQogICAgICwgbV9kdW1wVGl0bGVDaGFuZ2VzKGZhbHNlKQor
ICAgICwgbV9kdW1wSWNvbkNoYW5nZXMoZmFsc2UpCiAgICAgLCBtX2R1bXBWaXNpdGVkTGlua3ND
YWxsYmFjayhmYWxzZSkKICAgICAsIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlKGZhbHNlKQogICAg
ICwgbV9jYWxsQ2xvc2VPbldlYlZpZXdzKHRydWUpCkBAIC0xODYsNiArMTg3LDEzIEBAICAgICBj
b250cm9sbGVyLT5zZXREdW1wVGl0bGVDaGFuZ2VzKHRydWUKICAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBJY29uQ2hh
bmdlc0NhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwg
SlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFs
dWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRU
ZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9s
bGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5z
ZXREdW1wSWNvbkNoYW5nZXModHJ1ZSk7CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOworfQorCiBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wV2lsbENhY2hlUmVzcG9uc2VD
YWxsYmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2Jq
ZWN0UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVm
IGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENv
bnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+
KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CkBAIC0xMzk3LDYgKzE0MDUsNyBAQCBK
U1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRUZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImR1bXBT
b3VyY2VBc1dlYkFyY2hpdmUiLCBkdW1wU291cmNlQXNXZWJBcmNoaXZlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiZHVtcFN0YXR1c0NhbGxiYWNrcyIsIGR1bXBTdGF0dXNDYWxsYmFja3ND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRpdGxl
Q2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAgIHsgImR1bXBJY29uQ2hhbmdlcyIsIGR1
bXBJY29uQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2FjaGVS
ZXNwb25zZSIsIGR1bXBXaWxsQ2FjaGVSZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnREb2Vz
QXV0b0NvbXBsZXRlRm9yRWxlbWVudFdpdGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImVuY29kZUhvc3ROYW1lIiwgZW5jb2RlSG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRl
c3RDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Miw2ICsxNTIsOSBAQCBwdWJsaWM6
CiAgICAgYm9vbCBkdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVD
aGFuZ2VzOyB9CiAgICAgdm9pZCBzZXREdW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hh
bmdlcykgeyBtX2R1bXBUaXRsZUNoYW5nZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBi
b29sIGR1bXBJY29uQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEljb25DaGFuZ2VzOyB9
CisgICAgdm9pZCBzZXREdW1wSWNvbkNoYW5nZXMoYm9vbCBkdW1wSWNvbkNoYW5nZXMpIHsgbV9k
dW1wSWNvbkNoYW5nZXMgPSBkdW1wSWNvbkNoYW5nZXM7IH0KKwogICAgIGJvb2wgZHVtcFZpc2l0
ZWRMaW5rc0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJh
Y2s7IH0KICAgICB2b2lkIHNldER1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhib29sIGR1bXBWaXNp
dGVkTGlua3NDYWxsYmFjaykgeyBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayA9IGR1bXBWaXNp
dGVkTGlua3NDYWxsYmFjazsgfQogICAgIApAQCAtMjYwLDYgKzI2Myw3IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmU7CiAgICAgYm9vbCBtX2R1bXBTdGF0dXND
YWxsYmFja3M7CiAgICAgYm9vbCBtX2R1bXBUaXRsZUNoYW5nZXM7CisgICAgYm9vbCBtX2R1bXBJ
Y29uQ2hhbmdlczsKICAgICBib29sIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOwogICAgIGJv
b2wgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2U7CiAgICAgYm9vbCBtX2NhbGxDbG9zZU9uV2ViVmll
d3M7CkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5
LDYgKzE4OSwxNiBAQCAgICAgaWYgKDo6Z0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1wVGl0CiAg
ICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2Fk
RGVsZWdhdGU6OmRpZENoYW5nZUljb25zKAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZp
ZXcsCisgICAgLyogW2luXSAqLyBJV2ViRnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZG9uZSAm
JiBnTGF5b3V0VGVzdENvbnRyb2xsZXItPmR1bXBJY29uQ2hhbmdlcygpKQorICAgICAgICBwcmlu
dGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVz
dWx0KGZyYW1lKS5jX3N0cigpKTsKKworICAgIHJldHVybiBTX09LOworfQorCiB2b2lkIEZyYW1l
TG9hZERlbGVnYXRlOjpwcm9jZXNzV29yaygpCiB7CiAgICAgLy8gaWYgYW5vdGhlciBsb2FkIHN0
YXJ0ZWQsIHRoZW4gd2FpdCBmb3IgaXQgdG8gY29tcGxldGUuCkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAkocmV2aXNpb24g
NTU4MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzQsNiArNzQsMTAgQEAgcHVibGljOgogICAgICAgICAv
KiBbaW5dICovIEJTVFIgdGl0bGUsCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFt
ZSk7CiAKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNv
bnMoCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCisgICAgICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3
ZWJWaWV3LAogICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJL
aXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMSwxMTUg
KzEsMTE5IEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA2IEFwcGxlIENvbXB1dGVyLCBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUg
InJlc291cmNlLmgiCi0jaW5jbHVkZSA8V2ViS2l0L1dlYktpdC5oPgotCi1jbGFzcyBXaW5MYXVu
Y2hlcldlYkhvc3QgOiBwdWJsaWMgSVdlYkZyYW1lTG9hZERlbGVnYXRlCi17Ci1wdWJsaWM6Ci0g
ICAgV2luTGF1bmNoZXJXZWJIb3N0KCkgOiBtX3JlZkNvdW50KDEpIHt9Ci0KLSAgICAvLyBJVW5r
bm93bgotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBRdWVyeUludGVyZmFj
ZShSRUZJSUQgcmlpZCwgdm9pZCoqIHBwdk9iamVjdCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERN
RVRIT0RDQUxMVFlQRSBBZGRSZWYodm9pZCk7Ci0gICAgdmlydHVhbCBVTE9ORyBTVERNRVRIT0RD
QUxMVFlQRSBSZWxlYXNlKHZvaWQpOwotCi0gICAgLy8gSVdlYkZyYW1lTG9hZERlbGVnYXRlCi0g
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAotICAg
ICAgICAvKiBbaW5dICovIElXZWJGcmFtZSogLypmcmFtZSovKSB7IHJldHVybiBTX09LOyB9Ci0g
ICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVTZXJ2
ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCAKLSAgICAgICAgLyogW2luXSAq
LyBJV2ViVmlldyAqd2ViVmlldywKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1l
KSB7IHJldHVybiBTX09LOyB9Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3IoIAotICAgICAgICAvKiBbaW5d
ICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIElXZWJFcnJvciAqZXJy
b3IsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsg
fQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRDb21taXRM
b2FkRm9yRnJhbWUoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAg
ICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIHVwZGF0ZUFkZHJlc3NC
YXIod2ViVmlldyk7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZ
UEUgZGlkUmVjZWl2ZVRpdGxlKCAKLSAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmll
dywKLSAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLAotICAgICAgICAvKiBbaW5dICovIElX
ZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIAotICAgICAgICAvKiBbaW5dICov
IElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIE9MRV9IQU5ETEUgaEJpdG1h
cCwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9
Ci0gICAgCi0gICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZEZpbmlzaExv
YWRGb3JGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lKiAvKmZyYW1lKi8pIHsgcmV0dXJuIFNfT0s7IH0KLSAg
ICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmFpbExvYWRXaXRo
RXJyb3IoIAotICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAv
KiBbaW5dICovIElXZWJFcnJvciAqZXJyb3IsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmb3JGcmFtZSkgeyByZXR1cm4gU19PSzsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBT
VERNRVRIT0RDQUxMVFlQRSBkaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2VGb3JGcmFtZSggCi0g
ICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8g
SVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQotCi0gICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIHdpbGxQZXJmb3JtQ2xpZW50UmVkaXJlY3RUb1VSTCggCi0gICAg
ICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gQlNU
UiB1cmwsCi0gICAgICAgIC8qIFtpbl0gKi8gZG91YmxlIGRlbGF5U2Vjb25kcywKLSAgICAgICAg
LyogW2luXSAqLyBEQVRFIGZpcmVEYXRlLAotICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAq
ZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KLSAgICAKLSAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkQ2FuY2VsQ2xpZW50UmVkaXJlY3RGb3JGcmFtZSggCi0gICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQotICAgIAotICAgIHZpcnR1YWwgSFJFU1VMVCBTVERN
RVRIT0RDQUxMVFlQRSB3aWxsQ2xvc2VGcmFtZSggCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYlZp
ZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1
cm4gU19PSzsgfQotICAgIAotICAgIHZpcnR1YWwgLyogW2xvY2FsXSAqLyBIUkVTVUxUIFNURE1F
VEhPRENBTExUWVBFIHdpbmRvd1NjcmlwdE9iamVjdEF2YWlsYWJsZSggCi0gICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCi0gICAgICAgIC8qIFtpbl0gKi8gSlNDb250ZXh0UmVm
IGNvbnRleHQsCi0gICAgICAgIC8qIFtpbl0gKi8gSlNPYmplY3RSZWYgd2luZG93U2NyaXB0T2Jq
ZWN0KSAgeyByZXR1cm4gU19PSzsgfQotCi0gICAgdmlydHVhbCAvKiBbbG9jYWxdICovIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2xlYXJXaW5kb3dPYmplY3QoIAotICAgICAgICAvKiBb
aW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAotICAgICAgICAvKiBbaW5dICovIEpTQ29udGV4dFJl
ZiBjb250ZXh0LAotICAgICAgICAvKiBbaW5dICovIEpTT2JqZWN0UmVmIHdpbmRvd1NjcmlwdE9i
amVjdCwKLSAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09L
OyB9Ci0KLSAgICAvLyBXaW5MYXVuY2hlcldlYkhvc3QKLQotcHJvdGVjdGVkOgotICAgIEhSRVNV
TFQgdXBkYXRlQWRkcmVzc0JhcihJV2ViVmlldyogd2ViVmlldyk7Ci0KLXByb3RlY3RlZDoKLSAg
ICBVTE9ORyAgICAgICAgICAgICAgICAgICBtX3JlZkNvdW50OwotfTsKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMDYgQXBwbGUgQ29tcHV0ZXIsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRF
UiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVS
LCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAicmVzb3VyY2UuaCIKKyNpbmNsdWRlIDxX
ZWJLaXQvV2ViS2l0Lmg+CisKK2NsYXNzIFdpbkxhdW5jaGVyV2ViSG9zdCA6IHB1YmxpYyBJV2Vi
RnJhbWVMb2FkRGVsZWdhdGUKK3sKK3B1YmxpYzoKKyAgICBXaW5MYXVuY2hlcldlYkhvc3QoKSA6
IG1fcmVmQ291bnQoMSkge30KKworICAgIC8vIElVbmtub3duCisgICAgdmlydHVhbCBIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIFF1ZXJ5SW50ZXJmYWNlKFJFRklJRCByaWlkLCB2b2lkKiogcHB2
T2JqZWN0KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIEFkZFJlZih2b2lk
KTsKKyAgICB2aXJ0dWFsIFVMT05HIFNURE1FVEhPRENBTExUWVBFIFJlbGVhc2Uodm9pZCk7CisK
KyAgICAvLyBJV2ViRnJhbWVMb2FkRGVsZWdhdGUKKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSggCisgICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
KiAvKmZyYW1lKi8pIHsgcmV0dXJuIFNfT0s7IH0KKyAgICAKKyAgICB2aXJ0dWFsIEhSRVNVTFQg
U1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAg
ICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKyAgICAK
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkRmFpbFByb3Zpc2lvbmFs
TG9hZFdpdGhFcnJvciggCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCisg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkVycm9yICplcnJvciwKKyAgICAgICAgLyogW2luXSAqLyBJ
V2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVT
VUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENvbW1pdExvYWRGb3JGcmFtZSggCisgICAgICAgIC8q
IFtpbl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmcmFtZSkgeyByZXR1cm4gdXBkYXRlQWRkcmVzc0Jhcih3ZWJWaWV3KTsgfQorICAgIAorICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlVGl0bGUoIAorICAg
ICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIEJT
VFIgdGl0bGUsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4g
U19PSzsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRD
aGFuZ2VJY29ucygKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9CisgICAgCisg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKCAKKyAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAgICAgLyogW2luXSAqLyBP
TEVfSEFORExFIGhCaXRtYXAsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkg
eyByZXR1cm4gU19PSzsgfQorICAgIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxM
VFlQRSBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3
KiB3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSogLypmcmFtZSovKSB7IHJl
dHVybiBTX09LOyB9CisgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBF
IGRpZEZhaWxMb2FkV2l0aEVycm9yKCAKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2Vi
VmlldywKKyAgICAgICAgLyogW2luXSAqLyBJV2ViRXJyb3IgKmVycm9yLAorICAgICAgICAvKiBb
aW5dICovIElXZWJGcmFtZSAqZm9yRnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKyAgICAKKyAgICB2
aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlTG9jYXRpb25XaXRoaW5Q
YWdlRm9yRnJhbWUoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAg
ICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKworICAg
IHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aWxsUGVyZm9ybUNsaWVudFJlZGly
ZWN0VG9VUkwoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAg
ICAvKiBbaW5dICovIEJTVFIgdXJsLAorICAgICAgICAvKiBbaW5dICovIGRvdWJsZSBkZWxheVNl
Y29uZHMsCisgICAgICAgIC8qIFtpbl0gKi8gREFURSBmaXJlRGF0ZSwKKyAgICAgICAgLyogW2lu
XSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9CisgICAgCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENhbmNlbENsaWVudFJlZGlyZWN0Rm9yRnJh
bWUoIAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBb
aW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKyAgICAKKyAgICB2aXJ0
dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgd2lsbENsb3NlRnJhbWUoIAorICAgICAgICAv
KiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFt
ZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKyAgICAKKyAgICB2aXJ0dWFsIC8qIFtsb2NhbF0g
Ki8gSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSB3aW5kb3dTY3JpcHRPYmplY3RBdmFpbGFibGUo
IAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5d
ICovIEpTQ29udGV4dFJlZiBjb250ZXh0LAorICAgICAgICAvKiBbaW5dICovIEpTT2JqZWN0UmVm
IHdpbmRvd1NjcmlwdE9iamVjdCkgIHsgcmV0dXJuIFNfT0s7IH0KKworICAgIHZpcnR1YWwgLyog
W2xvY2FsXSAqLyBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENsZWFyV2luZG93T2JqZWN0
KCAKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAgICAgICAgLyogW2lu
XSAqLyBKU0NvbnRleHRSZWYgY29udGV4dCwKKyAgICAgICAgLyogW2luXSAqLyBKU09iamVjdFJl
ZiB3aW5kb3dTY3JpcHRPYmplY3QsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFt
ZSkgeyByZXR1cm4gU19PSzsgfQorCisgICAgLy8gV2luTGF1bmNoZXJXZWJIb3N0CisKK3Byb3Rl
Y3RlZDoKKyAgICBIUkVTVUxUIHVwZGF0ZUFkZHJlc3NCYXIoSVdlYlZpZXcqIHdlYlZpZXcpOwor
Citwcm90ZWN0ZWQ6CisgICAgVUxPTkcgICAgICAgICAgICAgICAgICAgbV9yZWZDb3VudDsKK307
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9j
aHJvbWl1bS9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIxIEBACisyMDEwLTAzLTEwICBEYXZl
IE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2
aWNvbnMgZm9yIGEgcGFnZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAg
ICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdo
aWNoIHdpbGwKKyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBG
cmFtZUxvYWRlckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIHB1YmxpYy9XZWJGcmFtZUNsaWVu
dC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6ZGlkQ2hhbmdlSWNvbnMpOgor
ICAgICAgICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAg
ICAqIHNyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuaDoKKwogMjAxMC0wMy0xMCAgRGFyaW4gRmlz
aGVyICA8ZGFyaW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEplcmVteSBP
cmxvdy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJldmlz
aW9uIDU1ODIxKQorKysgV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDkgQEAgICAgIC8vIEEgY2xpZW50LXNpZGUgcmVk
aXJlY3QgY29tcGxldGVkLgogICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5n
JiB0aXRsZSkgeyB9CiAKKyAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqKSB7IH0KKwogICAg
IC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NTgy
MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzEyLDYgKzcxMiwxMiBAQCAgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVu
dCgpKQogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2Vi
RnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIGlmIChtX3dlYkZy
YW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUlj
b25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2ViRnJh
bWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFt
ZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAICAg
ICAvLyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCAtLS0tLS0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0
YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExv
YWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKQEAgLTEyOSw2
ICsxMzAsOCBAQCAgICAgLy8gV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgLS0tLS0tCiAgICAg
dmlydHVhbCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0
Jik7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpE
b2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNv
cmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2Vi
Q29yZTo6RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICB2aXJ0dWFsIHZv
aWQgZmluaXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVh
bCB2b2lkIHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NTgyMSkKKysr
IFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIw
MTAtMDMtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNj
cmlwdGlvbiBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVM
b2FkZXJDbGllbnQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTAtMDMtMDkgIFBoaWxpcHBlIE5vcm1hbmQg
IDxwbm9ybWFuZEBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9y
b25oYSBTaWx2YS4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC9ndGsvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NTMsNiArNzUzLDExIEBAICAgICAgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lKHdlYlZpZXcsICIK
ICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFn
ZSkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Myw2ICs4Myw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZl
SWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFs
TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENo
YW5nZUljb25zKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdl
YktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTkgQEAKKzIwMTAtMDMtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAg
ICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMC0wMy0x
MCAgSm9obiBTdWxsaXZhbiAgPHN1bGxpdmFuQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBUaW0gSGF0Y2hlci4KSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU1ODIxKQorKysgV2ViS2l0L21hYy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05
OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDU1ODIxKQor
KysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtNTk4LDYgKzU5OCwxMSBAQCAgICAgaWYgKGltcGxlbWVudGF0aW9ucy0+
ZGlkUmVjZWl2ZVRpdGxlCiAgICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRh
dGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdl
YlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLCBtX3dl
YkZyYW1lLmdldCgpKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpCit7CisgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxv
dyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24uCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgLy8gVGVsbCB0aGUgY2xpZW50
IHdlJ3ZlIGNvbW1pdHRlZCB0aGlzIFVSTC4KSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJL
aXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDMt
MTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVu
IHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3Jp
cHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxv
YWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRp
b25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1l
dGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
ckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6
OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wMy0xMCAgUm9iZXJ0IEhv
Z2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1
c21hbm4uCkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRR
dC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50UXQuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9y
dC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU2LDYgKzM1Niwx
OSBAQCAgICAgICAgIHByaW50ZigiJXMgLSBkaWRSZWNlaXZlVGl0bGU6ICVzCiB9CiAKIAordm9p
ZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBp
ZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hh
bmdlSWNvbnNcbiIsIHFQcmludGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1
bHQobV9mcmFtZSkpKTsKKworICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgLy8gRklYTUU6IFRvIGJlIG5vdGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQg
bm90aWZpY2F0aW9uCisgICAgLy8gZW1pdCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZy
YW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1
bXBGcmFtZUxvYWRlckNhbGxiYWNrcykKQEAgLTUwMCw3ICs1MTMsNyBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVl
ZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJ
bmRleDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudFF0LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw2ICsxMTAsNyBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJp
bmcmIHRpdGxlKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMo
KTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291
cmNlRXJyb3ImKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU1ODIxKQorKysg
V2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAx
MC0wMy0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9u
IHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBh
IHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1l
bnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBv
bmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZh
Y2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2Vi
RnJhbWU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTAz
LTEwICBFcmljIFVocmhhbmUgIDxlcmljdUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgRGF2aWQgTGV2aW4uCkluZGV4OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1l
TG9hZERlbGVnYXRlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlLmlkbAkocmV2aXNpb24gNTU4MjEpCisrKyBXZWJLaXQvd2luL0lu
dGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlLmlkbAkod29ya2luZyBjb3B5KQpAQCAtMTE0
LDYgKzExNCwxNSBAQCAgICAgICAgIC0gKHZvaWQpd2ViVmlldzooV2ViVmlldyAqKXNlbmRlCiAg
ICAgSFJFU1VMVCBkaWRSZWNlaXZlVGl0bGUoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBC
U1RSIHRpdGxlLCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogCiAgICAgLyohCisgICAgICAgIEBt
ZXRob2Qgd2ViVmlldzpkaWRDaGFuZ2VJY29uczpmb3JGcmFtZToKKyAgICAgICAgQGFic3RyYWN0
IE5vdGlmaWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IHRoZSBwYWdlIGljb25zIGZvciBhIGZyYW1lIGhh
dmUgYmVlbiBjaGFuZ2VkCisgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRp
bmcgdGhlIG1lc3NhZ2UKKyAgICAgICAgQHBhcmFtIGZyYW1lIFRoZSBmcmFtZSBmb3Igd2hpY2gg
dGhlIGljb24gVVJMIGhhcyBiZWVuIHJlY2VpdmVkCisgICAgICAgIC0gKHZvaWQpd2ViVmlldzoo
V2ViVmlldyAqKXNlbmRlciBkaWRDaGFuZ2VJY29uc2ZvckZyYW1lOihXZWJGcmFtZSAqKWZyYW1l
OworICAgICovCisgICAgSFJFU1VMVCBkaWRDaGFuZ2VJY29ucyhbaW5dIElXZWJWaWV3KiB3ZWJW
aWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworCisgICAgLyohCiAgICAgICAgIEBtZXRob2Qg
d2ViVmlldzpkaWRSZWNlaXZlSWNvbjpmb3JGcmFtZToKICAgICAgICAgQGFic3RyYWN0IE5vdGlm
aWVzIHRoZSBkZWxlZ2F0ZSB0aGF0IGEgcGFnZSBpY29uIGltYWdlIGZvciBhIGZyYW1lIGhhcyBi
ZWVuIHJlY2VpdmVkCiAgICAgICAgIEBwYXJhbSB3ZWJWaWV3IFRoZSBXZWJWaWV3IHNlbmRpbmcg
dGhlIG1lc3NhZ2UKSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzYsNiArMzc2LDE0IEBAICAgICBpZiAoU1VDQ0VFREVEKHdlYlZpZXctPmZyYW1lTG9hZERlbGUK
ICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3Ry
aW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4gZnJh
bWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWREZWxl
Z2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRp
ZENoYW5nZUljb25zKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZp
ZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zp
c2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkZy
YW1lLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkocmV2aXNpb24g
NTU4MjEpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTUy
OSw2ICsxNTI5LDExIEBAIHZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG8K
ICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCit2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29u
cyhEb2N1bWVudExvYWRlciopCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwogYm9vbCBX
ZWJGcmFtZTo6Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qp
IGNvbnN0CiB7CiAgICAgcmV0dXJuIFdlYlZpZXc6OmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCk7
CkluZGV4OiBXZWJLaXQvd2luL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9X
ZWJGcmFtZS5oCShyZXZpc2lvbiA1NTgyMSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuaAkod29y
a2luZyBjb3B5KQpAQCAtMjg5LDYgKzI4OSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
c2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZvaWQgd2lsbENo
YW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUljb25zKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCBi
b29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JikgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXZWJDb3JlOjpTdHJp
bmcmIE1JTUVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50YXRpb25FeGlz
dHNGb3JVUkxTY2hlbWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBVUkxTY2hlbWUpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53052</attachid>
            <date>2010-04-10 14:06:03 -0700</date>
            <delta_ts>2010-04-10 14:23:58 -0700</delta_ts>
            <desc>Patch to implement</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>29762</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorCiAy
MDEwLTA0LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIGZpeCB0byByZWdyZXNzaW9ucyBpbiByNTc0MTYuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorbWFpbiBmcmFtZSAtIGRpZENo
YW5nZUljb25zCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNv
bi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9u
LmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+T3JpZ2lu
YWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94
LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rl
YnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAg
IGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOwor
fQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsKKyAgICB2YXIgZG9jSGVhZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgdmFyIGxpbmtzID0g
ZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBsaW5rID0gbGlua3NbaV07Cisg
ICAgICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29uIiAmJiBsaW5rLnJlbD09InNob3J0Y3V0
IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3ZlQ2hpbGQobGluayk7CisgICAgICAgIGJy
ZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBhdCBtb3N0LgorICAgICAgfQorICAgIH0K
KyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAgICBsaW5r
LnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBpY29uIjsK
KyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQobGluayk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAgICB9Cisg
ICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworICAgIGRlYnVnT3V0cHV0ICgnT3Jp
Z2luYWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOworICAgIG5ld1VSTCA9ICdodHRwOi8vdGVz
dC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5ldyBpY29u
IFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2SWNvbihuZXdVUkwpOworICAgIGljb25V
UkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAgIGRlYnVnT3V0cHV0ICgnTmV3IGljb25V
UkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1v
b3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFn
ZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1l
bnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAg
ICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVu
dCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4MTIKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldEljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6aWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDQtMTAgIExhc3psbyBHb21i
b3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzQx
OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2
ICs0NDExLDggQEAgdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAg
ICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgp
KQorICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lk
IERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNT
ZWN1cmVLZXlib2FyZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNp
b24gNTc0MTgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwNyw2ICs2MDcsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUo
Y29uc3QgU3RyaQogICAgIH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAg
ICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOworICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRD
aGFuZ2VJY29ucyh0aGlzKTsKKyAgICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZv
ckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9y
IGhpc3RvcnkgYW5kIEIvRiBsaXN0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFy
eUxvYWRDb21wbGV0ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcm
KTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBjb25z
dCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5j
b2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1MCw2ICsxNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
Y29uVVJMOyB9CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMjU3LDYgKzI1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJl
Y3Q7CiAKICAgICAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOworICAgICAgICBTdHJpbmcgbV9wYWdl
SWNvblVSTDsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk2Myw2ICszOTYzLDExIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExv
YWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25V
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldElj
b25VUkwoaWNvblVSTCk7Cit9CisKIEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVS
TCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpOwpAQCAtNDA4MCw2ICs0MDg1LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpZENoYW5nZVRpdGxlKERvY3VtZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRp
ZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7CisgICAgaWYgKGxvYWRlciA9
PSBtX2RvY3VtZW50TG9hZGVyKQorICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQog
ewogICAgIGlmIChtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsK
KyAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7CiAKICAgICBGcmFtZUxv
YWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVzb3VyY2VDYWNo
ZVBvbGljeSgpIGNvbnN0OwpAQCAtMzAyLDYgKzMwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNh
bmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlz
aW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNMb2FkaW5nRnJv
bUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NDE4KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTEwICBE
YXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBzdXBwb3J0IGZvciBpY29uIGNo
YW5nZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAoZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldER1bXBJ
Y29uQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAg
ICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9z
dDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byByZWdyZXNzaW9ucyBpbiBy
NTc0MTYuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw2ICs1Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAg
ICAsIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1f
ZHVtcEljb25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2so
ZmFsc2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2Fs
bENsb3NlT25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcElj
b25DaGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ3Miw2ICsxNDgwLDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNX
ZWJBcmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNo
YW5nZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2Ui
LCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVt
ZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21w
bGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVI
b3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA1NzQxOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2Vz
OyB9CiAgICAgdm9pZCBzZXREdW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hhbmdlcykg
eyBtX2R1bXBUaXRsZUNoYW5nZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBib29sIGR1
bXBJY29uQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEljb25DaGFuZ2VzOyB9CisgICAg
dm9pZCBzZXREdW1wSWNvbkNoYW5nZXMoYm9vbCBkdW1wSWNvbkNoYW5nZXMpIHsgbV9kdW1wSWNv
bkNoYW5nZXMgPSBkdW1wSWNvbkNoYW5nZXM7IH0KKwogICAgIGJvb2wgZHVtcFZpc2l0ZWRMaW5r
c0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0K
ICAgICB2b2lkIHNldER1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhib29sIGR1bXBWaXNpdGVkTGlu
a3NDYWxsYmFjaykgeyBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayA9IGR1bXBWaXNpdGVkTGlu
a3NDYWxsYmFjazsgfQogICAgIApAQCAtMjcyLDYgKzI3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmU7CiAgICAgYm9vbCBtX2R1bXBTdGF0dXNDYWxsYmFj
a3M7CiAgICAgYm9vbCBtX2R1bXBUaXRsZUNoYW5nZXM7CisgICAgYm9vbCBtX2R1bXBJY29uQ2hh
bmdlczsKICAgICBib29sIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOwogICAgIGJvb2wgbV9k
dW1wV2lsbENhY2hlUmVzcG9uc2U7CiAgICAgYm9vbCBtX2NhbGxDbG9zZU9uV2ViVmlld3M7Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9h
ZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiAr
MTg5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkQ2hhbmdlSWNvbnMoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywK
KyAgICAvKiBbaW5dICovIElXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdM
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEljb25DaGFuZ2VzKCkpCisgICAgICAgIHByaW50Zigi
JXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpLmNfc3RyKCkpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKIHZvaWQgRnJhbWVMb2Fk
RGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAvLyBpZiBhbm90aGVyIGxvYWQgc3RhcnRl
ZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3
NDE4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
OwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25z
KAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5d
ICovIElXZWJGcmFtZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFJlY2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2Vi
VmlldywKICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTAgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoDQor
ICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2luXSAq
LyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQorICAgIA0KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRM
RSBoQml0bWFwLA0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
MC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9u
IHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBh
IHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1l
bnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBv
bmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQt
MDkgIEV2YW4gU3RhZGUgIDxlc3RhZGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBhdmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVUaXRsZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAg
Ly8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1
bWVudCBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWQoV2ViRnJhbWUqKSB7IH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI2
LDYgKzcyNiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAg
ICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwg
dGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhjb25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93
ZWJGcmFtZSk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENv
bW1pdExvYWQoKQogewogICAgIFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmll
d0ltcGwoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQg
YnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmg6CisKIDIwMTAtMDQtMDcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDog
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENv
bW1pdExvYWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlz
aW9uIDU3NDE4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAg
ZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0
aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRv
IGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTA5ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1v
b3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFn
ZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1l
bnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAg
ICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVu
dCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRD
aGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxs
Q2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0Lmg6CisKIDIwMTAtMDQtMTEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1NzQxOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCwxOSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFi
bGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAg
IGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRvIGJl
IG5vdGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAgLy8g
ZW1pdCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKQEAgLTUxMiw3ICs1MjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFu
Z2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDU3NDE4KQor
KysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9v
cmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29u
cyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAg
IFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2gg
d2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1l
TG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2Fk
RGVsZWdhdGUuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wNC0wOSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBEZWJ1Zy9SZWxlYXNlIGJ1aWxk
IGZpeCBhZnRlciByNTcyNDQKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVM
b2FkRGVsZWdhdGUuaWRsDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw2ICsxMTQsMTUgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxlZ2F0ZSA6IElVbmtubwog
ICAgIEhSRVNVTFQgZGlkUmVjZWl2ZVRpdGxlKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0g
QlNUUiB0aXRsZSwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKIAogICAgIC8qIQorICAgICAgICBA
bWV0aG9kIHdlYlZpZXc6ZGlkQ2hhbmdlSWNvbnM6Zm9yRnJhbWU6CisgICAgICAgIEBhYnN0cmFj
dCBOb3RpZmllcyB0aGUgZGVsZWdhdGUgdGhhdCB0aGUgcGFnZSBpY29ucyBmb3IgYSBmcmFtZSBo
YXZlIGJlZW4gY2hhbmdlZAorICAgICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5k
aW5nIHRoZSBtZXNzYWdlCisgICAgICAgIEBwYXJhbSBmcmFtZSBUaGUgZnJhbWUgZm9yIHdoaWNo
IHRoZSBpY29uIFVSTCBoYXMgYmVlbiByZWNlaXZlZAorICAgICAgICAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZGlkQ2hhbmdlSWNvbnNmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFt
ZTsKKyAgICAqLworICAgIEhSRVNVTFQgZGlkQ2hhbmdlSWNvbnMoW2luXSBJV2ViVmlldyogd2Vi
VmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKworICAgIC8qIQogICAgICAgICBAbWV0aG9k
IHdlYlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6CiAgICAgICAgIEBhYnN0cmFjdCBOb3Rp
ZmllcyB0aGUgZGVsZWdhdGUgdGhhdCBhIHBhZ2UgaWNvbiBpbWFnZSBmb3IgYSBmcmFtZSBoYXMg
YmVlbiByZWNlaXZlZAogICAgICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5n
IHRoZSBtZXNzYWdlCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzIsNiArMzcyLDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBC
U3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBt
X3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4g
ZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWRE
ZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUt
PmRpZENoYW5nZUljb25zKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NDE4KQor
KysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hh
bmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJl
cXVlc3QpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4vV2ViRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAg
dmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIE1JTUVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50
YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBVUkxTY2hlbWUp
IGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53054</attachid>
            <date>2010-04-10 14:23:58 -0700</date>
            <delta_ts>2010-04-10 16:41:04 -0700</delta_ts>
            <desc>Removed stupid Ctrl-Ms</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>29762</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIExheW91dFRlc3Rz
L0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MTgpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisK
KyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorCiAy
MDEwLTA0LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkIGZpeCB0byByZWdyZXNzaW9ucyBpbiByNTc0MTYuCkluZGV4OiBMYXlvdXRUZXN0
cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBAQAorbWFpbiBmcmFtZSAtIGRpZENo
YW5nZUljb25zCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNv
bi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9u
LmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sDQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
DQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJl
dmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+T3JpZ2lu
YWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94
LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4K
K2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVU
ZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Rl
YnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAg
IGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOwor
fQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsKKyAgICB2YXIgZG9jSGVhZCA9IGRv
Y3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgdmFyIGxpbmtzID0g
ZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBsaW5rID0gbGlua3NbaV07Cisg
ICAgICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29uIiAmJiBsaW5rLnJlbD09InNob3J0Y3V0
IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3ZlQ2hpbGQobGluayk7CisgICAgICAgIGJy
ZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBhdCBtb3N0LgorICAgICAgfQorICAgIH0K
KyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAgICBsaW5r
LnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBpY29uIjsK
KyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQobGluayk7
Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENv
bnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOwor
ICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAgICB9Cisg
ICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworICAgIGRlYnVnT3V0cHV0ICgnT3Jp
Z2luYWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOworICAgIG5ld1VSTCA9ICdodHRwOi8vdGVz
dC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5ldyBpY29u
IFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2SWNvbihuZXdVUkwpOworICAgIGljb25V
UkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAgIGRlYnVnT3V0cHV0ICgnTmV3IGljb25V
UkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxv
YWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogV2ViQ29yZS9DaGFuZ2VMb2cNCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJDb3Jl
L0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1v
b3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFn
ZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1l
bnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAg
ICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVu
dCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4MTIKKworICAgICAgICBUZXN0OiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1s
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldEljb25VUkwpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTCk6CisgICAgICAgICog
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmg6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRl
cjo6aWNvblVSTCk6CisgICAgICAgICogbG9hZGVyL0VtcHR5Q2xpZW50cy5oOgorICAgICAgICAo
V2ViQ29yZTo6RW1wdHlGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpk
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogbG9hZGVyL0ZyYW1lTG9hZGVyLmg6CisgICAgICAg
ICogbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50Lmg6CisKIDIwMTAtMDQtMTAgIExhc3psbyBHb21i
b3MgIDxsYXN6bG8uMS5nb21ib3NAbm9raWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRleDogV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzQx
OCkKKysrIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2
ICs0NDExLDggQEAgdm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAg
ICAgICBtX2ljb25VUkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkK
ICAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgp
KQorICAgICAgICBmLT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lk
IERvY3VtZW50OjpzZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNT
ZWN1cmVLZXlib2FyZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcA0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNp
b24gNTc0MTgpCisrKyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTYwNyw2ICs2MDcsMTcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0VGl0bGUo
Y29uc3QgU3RyaQogICAgIH0KIH0KIAordm9pZCBEb2N1bWVudExvYWRlcjo6c2V0SWNvblVSTChj
b25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgaWYgKGljb25VUkwuaXNFbXB0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAobV9wYWdlSWNvblVSTCAhPSBpY29uVVJMKSB7CisgICAg
ICAgIG1fcGFnZUljb25VUkwgPSBpY29uVVJMOworICAgICAgICBmcmFtZUxvYWRlcigpLT5kaWRD
aGFuZ2VJY29ucyh0aGlzKTsKKyAgICB9Cit9CisKIEtVUkwgRG9jdW1lbnRMb2FkZXI6OnVybEZv
ckhpc3RvcnkoKSBjb25zdAogewogICAgIC8vIFJldHVybiB0aGUgVVJMIHRvIGJlIHVzZWQgZm9y
IGhpc3RvcnkgYW5kIEIvRiBsaXN0LgpJbmRleDogV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2Fk
ZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
Ym9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAgICAgIHZvaWQgc2V0UHJpbWFy
eUxvYWRDb21wbGV0ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRUaXRsZShjb25zdCBTdHJpbmcm
KTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYpOwogICAgICAgICBjb25z
dCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiBtX292ZXJyaWRlRW5j
b2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1MCw2ICsxNTEsNyBAQCBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3JkaW5nUmVzcG9uc2VzKCk7CiAg
ICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsg
fQorICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VJ
Y29uVVJMOyB9CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5KCkgY29uc3Q7CiAgICAgICAg
IGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNvbnN0OwpAQCAtMjU3LDYgKzI1
OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9vbCBtX2lzQ2xpZW50UmVkaXJl
Y3Q7CiAKICAgICAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOworICAgICAgICBTdHJpbmcgbV9wYWdl
SWNvblVSTDsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVuY29kaW5nOwogCkluZGV4OiBX
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYkNvcmUvbG9h
ZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRl
eDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvbG9h
ZGVyL0ZyYW1lTG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzk2Myw2ICszOTYzLDExIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmluZyYKICAgICBkb2N1bWVudExv
YWRlcigpLT5zZXRUaXRsZSh0aXRsZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OnNldEljb25V
UkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQoreworICAgIGRvY3VtZW50TG9hZGVyKCktPnNldElj
b25VUkwoaWNvblVSTCk7Cit9CisKIEtVUkwgRnJhbWVMb2FkZXI6Om9yaWdpbmFsUmVxdWVzdFVS
TCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIGFjdGl2ZURvY3VtZW50TG9hZGVyKCktPm9yaWdpbmFs
UmVxdWVzdCgpLnVybCgpOwpAQCAtNDA4MCw2ICs0MDg1LDEyIEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmRpZENoYW5nZVRpdGxlKERvY3VtZW4KICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXI6OmRp
ZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCit7CisgICAgaWYgKGxvYWRlciA9
PSBtX2RvY3VtZW50TG9hZGVyKQorICAgICAgICBtX2NsaWVudC0+ZGlzcGF0Y2hEaWRDaGFuZ2VJ
Y29ucygpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyOjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQog
ewogICAgIGlmIChtX2NyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuaAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKTsK
KyAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7CiAKICAgICBGcmFtZUxv
YWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3VicmVzb3VyY2VDYWNo
ZVBvbGljeSgpIGNvbnN0OwpAQCAtMzAyLDYgKzMwMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNh
bmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAg
IHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQgY29tbWl0UHJvdmlz
aW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wgaXNMb2FkaW5nRnJv
bUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZTsgfQpJ
bmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaA0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0t
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NDE4KQorKysg
V2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2
LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAw
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJj
ZUVycm9yJikgPSAwOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9nDQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTEwICBE
YXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBzdXBwb3J0IGZvciBpY29uIGNo
YW5nZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAoZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldER1bXBJ
Y29uQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAg
ICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9z
dDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTEwICBSb2JlcnQgSG9nYW4gIDxyb2JlcnRA
d2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byByZWdyZXNzaW9ucyBpbiBy
NTc0MTYuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJv
bGxlci5jcHANCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01
Niw2ICs1Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAg
ICAsIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0Nh
bGxiYWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1f
ZHVtcEljb25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2so
ZmFsc2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2Fs
bENsb3NlT25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1
ZVJlZiBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZp
bmVkKGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxs
YmFjayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0
UmVmIHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFy
Z3VtZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRy
b2xsZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpT
T2JqZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcElj
b25DaGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0
KTsKK30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2so
SlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0
aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVu
dHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVy
KiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVj
dEdldFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ3Miw2ICsxNDgwLDcgQEAgSlNTdGF0aWNG
dW5jdGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNX
ZWJBcmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ss
IGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnRE
ZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNo
YW5nZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5
QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2Ui
LCBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFk
T25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVt
ZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21w
bGV0ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVI
b3N0TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRv
b2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZp
c2lvbiA1NzQxOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250
cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1Niw2ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBkdW1wVGl0bGVDaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2Vz
OyB9CiAgICAgdm9pZCBzZXREdW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hhbmdlcykg
eyBtX2R1bXBUaXRsZUNoYW5nZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBib29sIGR1
bXBJY29uQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcEljb25DaGFuZ2VzOyB9CisgICAg
dm9pZCBzZXREdW1wSWNvbkNoYW5nZXMoYm9vbCBkdW1wSWNvbkNoYW5nZXMpIHsgbV9kdW1wSWNv
bkNoYW5nZXMgPSBkdW1wSWNvbkNoYW5nZXM7IH0KKwogICAgIGJvb2wgZHVtcFZpc2l0ZWRMaW5r
c0NhbGxiYWNrKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0K
ICAgICB2b2lkIHNldER1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhib29sIGR1bXBWaXNpdGVkTGlu
a3NDYWxsYmFjaykgeyBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayA9IGR1bXBWaXNpdGVkTGlu
a3NDYWxsYmFjazsgfQogICAgIApAQCAtMjcyLDYgKzI3NSw3IEBAIHByaXZhdGU6CiAgICAgYm9v
bCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmU7CiAgICAgYm9vbCBtX2R1bXBTdGF0dXNDYWxsYmFj
a3M7CiAgICAgYm9vbCBtX2R1bXBUaXRsZUNoYW5nZXM7CisgICAgYm9vbCBtX2R1bXBJY29uQ2hh
bmdlczsKICAgICBib29sIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOwogICAgIGJvb2wgbV9k
dW1wV2lsbENhY2hlUmVzcG9uc2U7CiAgICAgYm9vbCBtX2NhbGxDbG9zZU9uV2ViVmlld3M7Cklu
ZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3Bw
DQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09DQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9h
ZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xODksNiAr
MTg5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWcKICAgICBy
ZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxl
Z2F0ZTo6ZGlkQ2hhbmdlSWNvbnMoCisgICAgLyogW2luXSAqLyBJV2ViVmlldyogd2ViVmlldywK
KyAgICAvKiBbaW5dICovIElXZWJGcmFtZSogZnJhbWUpCit7CisgICAgaWYgKCFkb25lICYmIGdM
YXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEljb25DaGFuZ2VzKCkpCisgICAgICAgIHByaW50Zigi
JXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgZGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQo
ZnJhbWUpLmNfc3RyKCkpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisKIHZvaWQgRnJhbWVMb2Fk
RGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAvLyBpZiBhbm90aGVyIGxvYWQgc3RhcnRl
ZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBS
ZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oDQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3
NDE4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyog
W2luXSAqLyBCU1RSIHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUp
OwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25z
KAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5d
ICovIElXZWJGcmFtZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENB
TExUWVBFIGRpZFJlY2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2Vi
VmlldywKICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdFRv
b2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0
VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiAr
NjEsMTAgQEAgcHVibGljOg0KICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAg
ICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0K
KyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoDQor
ICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2luXSAq
LyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQorICAgIA0KICAgICB2aXJ0dWFs
IEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRM
RSBoQml0bWFwLA0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cNCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0N
Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAx
MC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9u
IHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBh
IHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJh
bWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1l
bnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBv
bmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMv
V2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENo
YW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQt
MDkgIEV2YW4gU3RhZGUgIDxlc3RhZGVAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEVyaWMgU2VpZGVsLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNs
aWVudC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJh
bWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAg
ICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBhdmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVUaXRsZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAg
Ly8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lk
IGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1
bWVudCBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVu
dExvYWQoV2ViRnJhbWUqKSB7IH0KIApJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxv
YWRlckNsaWVudEltcGwuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJv
bWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzI2
LDYgKzcyNiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRSCiAg
ICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZlVGl0bGUobV93ZWJGcmFtZSwg
dGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyhjb25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNs
aWVudCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93
ZWJGcmFtZSk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENv
bW1pdExvYWQoKQogewogICAgIFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmll
d0ltcGwoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBz
dGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIHZpcnR1
YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAg
ICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVudExv
YWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRvY3VtZW50
TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlzaGVkTG9h
ZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVH
bG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZw0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0K
LS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQg
YnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6
OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmg6CisKIDIwMTAtMDQtMDcgIEFuZHJleSBLb3N5YWtvdiAgPGNhc2VxQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5LgpJbmRleDog
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHANCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0NCi0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCB2
b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCit2b2lk
IEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJ
bXBsZW1lbnRlZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENv
bW1pdExvYWQoKQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgNCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlz
aW9uIDU3NDE4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4
KQorKysgV2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZp
Y2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAg
ZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0
aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJ
bXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRv
IGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJD
bGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTA5ICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVy
LgpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9xdC9D
aGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1v
b3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFn
ZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1l
bnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAg
ICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVu
dCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRD
aGFuZ2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxs
Q2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudFF0Lmg6CisKIDIwMTAtMDQtMTEgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNpbW9uIEhhdXNtYW5uLgpJbmRleDogV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwDQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lv
biA1NzQxOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCwxOSBAQCB2b2lkIEZyYW1lTG9hZGVy
Q2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2Fs
bGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFi
bGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAg
IGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRvIGJl
IG5vdGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAgLy8g
ZW1pdCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRp
c3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNr
cykKQEAgLTUxMiw3ICs1MjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFu
Z2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVj
ZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaA0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC9x
dC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDU3NDE4KQor
KysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJj
ZUVycm9yJik7CkluZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZw0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdl
YktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9v
cmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29u
cyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAg
IFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2gg
d2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1l
TG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2Fk
RGVsZWdhdGUuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5n
ZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5o
OgorICAgICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wNC0wOSAgQWRhbSBSb2JlbiAg
PGFyb2JlbkBhcHBsZS5jb20+CiAKICAgICAgICAgV2luZG93cyBEZWJ1Zy9SZWxlYXNlIGJ1aWxk
IGZpeCBhZnRlciByNTcyNDQKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVM
b2FkRGVsZWdhdGUuaWRsDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lX
ZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9J
bnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTEx
NCw2ICsxMTQsMTUgQEAgaW50ZXJmYWNlIElXZWJGcmFtZUxvYWREZWxlZ2F0ZSA6IElVbmtubwog
ICAgIEhSRVNVTFQgZGlkUmVjZWl2ZVRpdGxlKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0g
QlNUUiB0aXRsZSwgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKIAogICAgIC8qIQorICAgICAgICBA
bWV0aG9kIHdlYlZpZXc6ZGlkQ2hhbmdlSWNvbnM6Zm9yRnJhbWU6CisgICAgICAgIEBhYnN0cmFj
dCBOb3RpZmllcyB0aGUgZGVsZWdhdGUgdGhhdCB0aGUgcGFnZSBpY29ucyBmb3IgYSBmcmFtZSBo
YXZlIGJlZW4gY2hhbmdlZAorICAgICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5k
aW5nIHRoZSBtZXNzYWdlCisgICAgICAgIEBwYXJhbSBmcmFtZSBUaGUgZnJhbWUgZm9yIHdoaWNo
IHRoZSBpY29uIFVSTCBoYXMgYmVlbiByZWNlaXZlZAorICAgICAgICAtICh2b2lkKXdlYlZpZXc6
KFdlYlZpZXcgKilzZW5kZXIgZGlkQ2hhbmdlSWNvbnNmb3JGcmFtZTooV2ViRnJhbWUgKilmcmFt
ZTsKKyAgICAqLworICAgIEhSRVNVTFQgZGlkQ2hhbmdlSWNvbnMoW2luXSBJV2ViVmlldyogd2Vi
VmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKworICAgIC8qIQogICAgICAgICBAbWV0aG9k
IHdlYlZpZXc6ZGlkUmVjZWl2ZUljb246Zm9yRnJhbWU6CiAgICAgICAgIEBhYnN0cmFjdCBOb3Rp
ZmllcyB0aGUgZGVsZWdhdGUgdGhhdCBhIHBhZ2UgaWNvbiBpbWFnZSBmb3IgYSBmcmFtZSBoYXMg
YmVlbiByZWNlaXZlZAogICAgICAgICBAcGFyYW0gd2ViVmlldyBUaGUgV2ViVmlldyBzZW5kaW5n
IHRoZSBtZXNzYWdlCkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC0zNzIsNiArMzcyLDE0IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
UmUKICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBC
U3RyaW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBt
X3dlYkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZT4g
ZnJhbWVMb2FkRGVsZWdhdGU7CisgICAgaWYgKFNVQ0NFRURFRCh3ZWJWaWV3LT5mcmFtZUxvYWRE
ZWxlZ2F0ZSgmZnJhbWVMb2FkRGVsZWdhdGUpKSkKKyAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUt
PmRpZENoYW5nZUljb25zKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdl
YlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgNCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCi0tLSBXZWJLaXQvd2lu
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NDE4KQor
KysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRp
dGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3VtZW50TG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5kZXg6IFdlYktpdC93aW4v
V2ViRnJhbWUuY3BwDQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hh
bmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisK
IGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJl
cXVlc3QpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oDQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotLS0gV2Vi
S2l0L3dpbi9XZWJGcmFtZS5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC93aW4vV2ViRnJh
bWUuaAkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgc2V0TWFpbkZyYW1lRG9jdW1lbnRSZWFkeShib29sKTsKICAgICB2aXJ0dWFsIHZv
aWQgd2lsbENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVh
bCB2b2lkIGRpZENoYW5nZVRpdGxlKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CisgICAgdmly
dHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAg
dmlydHVhbCBib29sIGNhbkhhbmRsZVJlcXVlc3QoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0JikgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGNhblNob3dNSU1FVHlwZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmIE1JTUVUeXBlKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgcmVwcmVzZW50
YXRpb25FeGlzdHNGb3JVUkxTY2hlbWUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBVUkxTY2hlbWUp
IGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53059</attachid>
            <date>2010-04-10 16:41:04 -0700</date>
            <delta_ts>2010-04-16 10:22:37 -0700</delta_ts>
            <desc>Fix chromium error</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>31103</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xMCAgTGFzemxvIEdvbWJvcyAgPGxhc3ps
by4xLmdvbWJvc0Bub2tpYS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hk
ZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc0MTgpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NjMsNiArMzk2MywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODAsNiArNDA4NSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzQxOCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDIsNiArMzAzLDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMDkgIEV2YW4gU3RhZGUgIDxlc3RhZGVA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkocmV2aXNpb24gNTc0MTgpCisr
KyBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTE5Miw2ICsxOTIsOSBAQCBwdWJsaWM6CiAgICAgLy8gVGhlIHBhZ2UgdGl0bGUgaXMgYXZh
aWxhYmxlLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVGl0bGUoV2ViRnJhbWUqLCBjb25z
dCBXZWJTdHJpbmcmIHRpdGxlKSB7IH0KIAorICAgIC8vIFRoZSBpY29ucyBmb3IgdGhlIHBhZ2Ug
aGF2ZSBjaGFuZ2VkLgorICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJGcmFtZSop
IHsgfQorCiAgICAgLy8gVGhlIGZyYW1lJ3MgZG9jdW1lbnQgZmluaXNoZWQgbG9hZGluZy4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkKFdlYkZyYW1lKikgeyB9CiAKSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudElt
cGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03MjYsNiArNzI2LDEyIEBAIHZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZFIKICAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCkt
PmRpZFJlY2VpdmVUaXRsZShtX3dlYkZyYW1lLCB0aXRsZSk7CiB9CiAKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAobV93ZWJG
cmFtZS0+Y2xpZW50KCkpCisgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRDaGFuZ2VJ
Y29ucyhtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBGcmFtZUxvYWRlckNsaWVudEltcGw6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgV2ViVmlld0ltcGwqIHdlYnZpZXcgPSBtX3dlYkZy
YW1lLT52aWV3SW1wbCgpOwpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTEwMiw2ICsxMDIsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRp
dGxlKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3Im
KTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CkBAIC0xMjksNiArMTMwLDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
dm9pZCBzdGFydERvd25sb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAg
IHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIq
KTsKKyAgICB2aXJ0dWFsIHZvaWQgd2lsbENoYW5nZUljb25VUkwoV2ViQ29yZTo6RG9jdW1lbnRM
b2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1
bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBjb21taXR0ZWRMb2FkKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKiwgY29uc3QgY2hhciosIGludCk7CiAgICAgdmlydHVhbCB2b2lkIGZpbmlz
aGVkTG9hZGluZyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVHbG9iYWxIaXN0b3J5KCk7CkluZGV4OiBXZWJLaXQvZ3RrL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvZ3RrL0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MjEpCisrKyBXZWJLaXQv
Z3RrL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDEwLTA0LTEw
ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24g
YW5kIGJ1ZyBVUkwgKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRSZWNlaXZlSWNvblVSTCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50Ojp3aWxsQ2hhbmdlSWNvblVSTCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaWRDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorCiAyMDEwLTA0LTA3ICBBbmRyZXkgS29zeWFrb3YgIDxjYXNlcUBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5k
ZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuY3BwCShyZXZpc2lvbiA1NzQxOCkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNiArNzUzLDExIEBA
IHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKK3Zv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFnZSkKSW5kZXg6IFdlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlz
aW9uIDU3NDE4KQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3Ry
aW5nJik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAg
ICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2Fk
KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzQxOCkK
KysrIFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAK
KzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNh
dGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZy
b20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhl
IGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1w
bGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBh
ZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0wOSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4K
SW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIHByaXZh
dGU6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxl
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQubW0JKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L21hYy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTkz
LDYgKzU5MywxMSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAg
ICAgICAgIENhbGxGcmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVU
aXRsZUZvckZyYW1lRnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRp
dGxlOmZvckZyYW1lOiksIChOU1N0cmluZyAqKXRpdGxlLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0K
IAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7
CisgICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxvdyBjb250YWluZXIgdG8gdXBk
YXRlIGZhdmljb24uCit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpCiB7CiAgICAgLy8gVGVsbCB0aGUgY2xpZW50IHdlJ3ZlIGNvbW1pdHRlZCB0
aGlzIFVSTC4KSW5kZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
L3F0L0NoYW5nZUxvZwkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxk
YXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3Ig
YSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBE
b2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAor
ICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVy
Q2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRRdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRj
aERpZENoYW5nZUljb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpZENoYW5nZVRpdGxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6
OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50
UXQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50UXQuaDoKKwogMjAxMC0wNC0xMSAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJL
aXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZp
c2lvbiA1NzQxOCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY4LDYgKzM2OCwxOSBAQCB2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVu
dFF0OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVy
Q2FsbGJhY2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmlu
dGFibGUoZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKwor
ICAgIGlmICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRv
IGJlIG5vdGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAg
Ly8gZW1pdCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6
OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxi
YWNrcykKQEAgLTUxMiw3ICs1MjUsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxD
aGFuZ2VUaXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRs
ZShEb2N1bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VU
aXRsZShEb2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
cXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1NzQxOCkK
KysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTEwOSw2ICsxMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3Vy
Y2VFcnJvciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29y
ZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25z
IGZvciBhIHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAg
VGhlIERvY3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3
aWxsCisgICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVM
b2FkZXJDbGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRj
aERpZENoYW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWRE
ZWxlZ2F0ZS5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6
CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJhbWU6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA0LTA5ICBBZGFtIFJvYmVuICA8
YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXaW5kb3dzIERlYnVnL1JlbGVhc2UgYnVpbGQg
Zml4IGFmdGVyIHI1NzI0NApJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2
b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJl
dHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0L3dp
bi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNp
b24gNTc0MTgpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3Vt
ZW50UmVhZHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBNSU1FVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsCShyZXZpc2lvbiA1NzQx
OCkKKysrIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGUuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC0xMTQsNiArMTE0LDE1IEBAIGludGVyZmFjZSBJV2ViRnJhbWVMb2Fk
RGVsZWdhdGUgOiBJVW5rbm8KICAgICBIUkVTVUxUIGRpZFJlY2VpdmVUaXRsZShbaW5dIElXZWJW
aWV3KiB3ZWJWaWV3LCBbaW5dIEJTVFIgdGl0bGUsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSk7CiAK
ICAgICAvKiEKKyAgICAgICAgQG1ldGhvZCB3ZWJWaWV3OmRpZENoYW5nZUljb25zOmZvckZyYW1l
OgorICAgICAgICBAYWJzdHJhY3QgTm90aWZpZXMgdGhlIGRlbGVnYXRlIHRoYXQgdGhlIHBhZ2Ug
aWNvbnMgZm9yIGEgZnJhbWUgaGF2ZSBiZWVuIGNoYW5nZWQKKyAgICAgICAgQHBhcmFtIHdlYlZp
ZXcgVGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgbWVzc2FnZQorICAgICAgICBAcGFyYW0gZnJhbWUg
VGhlIGZyYW1lIGZvciB3aGljaCB0aGUgaWNvbiBVUkwgaGFzIGJlZW4gcmVjZWl2ZWQKKyAgICAg
ICAgLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIGRpZENoYW5nZUljb25zZm9yRnJh
bWU6KFdlYkZyYW1lICopZnJhbWU7CisgICAgKi8KKyAgICBIUkVTVUxUIGRpZENoYW5nZUljb25z
KFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSk7CisKKyAgICAv
KiEKICAgICAgICAgQG1ldGhvZCB3ZWJWaWV3OmRpZFJlY2VpdmVJY29uOmZvckZyYW1lOgogICAg
ICAgICBAYWJzdHJhY3QgTm90aWZpZXMgdGhlIGRlbGVnYXRlIHRoYXQgYSBwYWdlIGljb24gaW1h
Z2UgZm9yIGEgZnJhbWUgaGFzIGJlZW4gcmVjZWl2ZWQKICAgICAgICAgQHBhcmFtIHdlYlZpZXcg
VGhlIFdlYlZpZXcgc2VuZGluZyB0aGUgbWVzc2FnZQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDU3NDE4
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMTQgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2
ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUpLCBtX3dlYkZyYW1lKTsKIH0KIAordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKKyAgICBDT01QdHI8SVdlYkZy
YW1lTG9hZERlbGVnYXRlPiBmcmFtZUxvYWREZWxlZ2F0ZTsKKyAgICBpZiAoU1VDQ0VFREVEKHdl
YlZpZXctPmZyYW1lTG9hZERlbGVnYXRlKCZmcmFtZUxvYWREZWxlZ2F0ZSkpKQorICAgICAgICBm
cmFtZUxvYWREZWxlZ2F0ZS0+ZGlkQ2hhbmdlSWNvbnMod2ViVmlldywgbV93ZWJGcmFtZSk7Cit9
CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7
CiAgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKSW5kZXg6IFdl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJl
dmlzaW9uIDU3NDE4KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3Bh
dGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaERvY3Vt
ZW50TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZpbmlzaExvYWQoKTsKSW5k
ZXg6IFdlYktpdFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9v
cmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0IHN1cHBvcnQgZm9yIGljb24gY2hhbmdlcy4KKworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAq
IER1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKExheW91
dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGxlcik6CisgICAgICAgIChkdW1wSWNv
bkNoYW5nZXNDYWxsYmFjayk6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c3RhdGlj
RnVuY3Rpb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OmR1bXBJY29uQ2hhbmdlcyk6Cisg
ICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6c2V0RHVtcEljb25DaGFuZ2VzKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwOgorICAgICAgICAo
RnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBEdW1wUmVuZGVy
VHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaDoKKyAgICAgICAgKiBXaW5MYXVuY2hlci9XaW5M
YXVuY2hlci5oOgorICAgICAgICAoV2luTGF1bmNoZXJXZWJIb3N0OjpkaWRDaGFuZ2VJY29ucyk6
CisKIDIwMTAtMDQtMTAgIFJvYmVydCBIb2dhbiAgPHJvYmVydEB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFVucmV2aWV3ZWQgZml4IHRvIHJlZ3Jlc3Npb25zIGluIHI1NzQxNi4KSW5kZXg6IFdlYktp
dFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAJ
KHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw3IEBAIExheW91dFRl
c3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAsIG1fZHVtcFNvdXJjZUFzV2Vi
QXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxiYWNrcyhmYWxzZSkKICAgICAs
IG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVtcEljb25DaGFuZ2VzKGZhbHNl
KQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFsc2UpCiAgICAgLCBtX2R1bXBX
aWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENsb3NlT25XZWJWaWV3cyh0cnVl
KQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wVGl0bGVDaGFuZ2Vz
Q2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwogfQogCitz
dGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25DaGFuZ2VzKHRydWUpOworICAg
IHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30KKwogc3RhdGljIEpTVmFs
dWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQs
IEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJn
dW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhj
ZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGlj
X2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVj
dCkpOwpAQCAtMTQ3Miw2ICsxNDgwLDcgQEAgSlNTdGF0aWNGdW5jdGlvbiogTGF5b3V0VGVzdENv
bnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJBcmNoaXZlIiwgZHVtcFNvdXJj
ZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pT
UHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBTdGF0dXNDYWxs
YmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRl
UmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAi
ZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxsYmFjaywga0pTUHJvcGVydHlB
dHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAorICAg
ICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNoYW5nZXNDYWxsYmFjaywga0pTUHJv
cGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9
LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2UiLCBkdW1wV2lsbENhY2hlUmVzcG9u
c2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZv
ckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWRD
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0TmFtZSIsIGVuY29kZUhvc3RO
YW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xh
eW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNTc0MTgpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xNTYsNiArMTU2LDkgQEAgcHVibGljOgogICAgIGJvb2wgZHVtcFRpdGxlQ2hhbmdlcygp
IGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQogICAgIHZvaWQgc2V0RHVtcFRp
dGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9kdW1wVGl0bGVDaGFuZ2VzID0g
ZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNvbkNoYW5nZXMoKSBjb25zdCB7
IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQgc2V0RHVtcEljb25DaGFuZ2Vz
KGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFuZ2VzID0gZHVtcEljb25DaGFu
Z2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaygpIGNvbnN0IHsgcmV0
dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgdm9pZCBzZXREdW1wVmlzaXRl
ZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2spIHsgbV9kdW1wVmlz
aXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0KICAgICAKQEAg
LTI3Miw2ICsyNzUsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1wU291cmNlQXNXZWJBcmNo
aXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwogICAgIGJvb2wgbV9kdW1wVGl0
bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7CiAgICAgYm9vbCBtX2R1bXBW
aXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdpbGxDYWNoZVJlc3BvbnNlOwog
ICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCShyZXZpc2lvbiA1
NzQxOCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTYgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZwogICAgIHJldHVybiBTX09LOwogfQogCitIUkVTVUxU
IFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucygKKyAg
ICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
KiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RDb250cm9sbGVyLT5kdW1w
SWNvbkNoYW5nZXMoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4iLCBk
ZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19zdHIoKSk7CisKKyAgICBy
ZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6cHJvY2Vzc1dvcmsoKQog
ewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVuIHdhaXQgZm9yIGl0IHRvIGNv
bXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0Zy
YW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3NDE4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc0LDYg
Kzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLAogICAgICAg
ICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAgdmlydHVhbCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAorICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOworCiAg
ICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJlY2VpdmVJY29uKCAKICAg
ICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKICAgICAgICAgLyogW2luXSAqLyBP
TEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNo
ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5o
CShyZXZpc2lvbiA1NzQyNCkKKysrIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVy
LmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1YmxpYzoNCiAgICAgICAgIC8q
IFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFt
ZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhP
RENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4g
U19PSzsgfQ0KKw0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVj
ZWl2ZUljb24oIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCiAgICAg
ICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBoQml0bWFwLA0KSW5kZXg6IExheW91dFRlc3RzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3
NDE4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0ZXN0
IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogZmFzdC9kb20vaWNv
bi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2RvbS9p
Y29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKwogMjAxMC0wNC0xMCAgUm9iZXJ0IEhvZ2Fu
ICA8cm9iZXJ0QHdlYmtpdC5vcmc+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmaXggdG8gcmVncmVz
c2lvbnMgaW4gcjU3NDE2LgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJv
cGVydHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2lj
b24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3Rz
L2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAg
LTAsMCArMSw0IEBACittYWluIGZyYW1lIC0gZGlkQ2hhbmdlSWNvbnMKK09yaWdpbmFsIGljb25V
UkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbworU2V0dGluZyBuZXcgaWNvbiBV
UkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCitOZXcgaWNvblVSTCBpczogaHR0
cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2lj
b24tdXJsLXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
aWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+T3JpZ2luYWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVs
PSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNv
bS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikg
eworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1l
bnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAg
ICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGlj
b25VUkwpIHsKKyAgICB2YXIgZG9jSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1l
KCJoZWFkIilbMF07CisgICAgdmFyIGxpbmtzID0gZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgibGluayIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsK
KyAgICAgIHZhciBsaW5rID0gbGlua3NbaV07CisgICAgICBpZiAobGluay50eXBlPT0iaW1hZ2Uv
eC1pY29uIiAmJiBsaW5rLnJlbD09InNob3J0Y3V0IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQu
cmVtb3ZlQ2hpbGQobGluayk7CisgICAgICAgIGJyZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBt
YXRjaCBhdCBtb3N0LgorICAgICAgfQorICAgIH0KKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAgICBsaW5rLnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAg
ICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBpY29uIjsKKyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOwor
ICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkg
eworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0
VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxl
ci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAgICB9CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVsw
XS5ocmVmOworICAgIGRlYnVnT3V0cHV0ICgnT3JpZ2luYWwgaWNvblVSTCBpczogJyArIGljb25V
UkwpOworICAgIG5ld1VSTCA9ICdodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAg
ZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5ldyBpY29uIFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAg
c2V0RmF2SWNvbihuZXdVUkwpOworICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5
VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsK
KworICAgIGRlYnVnT3V0cHV0ICgnTmV3IGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKwor
PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9
J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgo=
</data>
<flag name="review"
          id="36705"
          type_id="1"
          status="-"
          setter="dglazkov"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53534</attachid>
            <date>2010-04-16 10:22:37 -0700</date>
            <delta_ts>2010-04-16 10:45:35 -0700</delta_ts>
            <desc>Patch to fix idl issue</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>30991</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNiAgQW50b25pbyBHb21lcyAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQgKHdpdGggUXQg
NC43KSBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NzIsNiArMzk3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODksNiArNDA5NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDUsNiArMzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMTYgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBh
dmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFn
ZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1l
KikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKQEAgLTEyOSw2ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTAtMDQtMTMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbiB0byBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeS4KSW5kZXg6
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNiArNzUzLDExIEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFnZSkKSW5kZXg6IFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDU3NzIxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysr
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlv
biB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20g
YSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZy
YW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQg
b25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNSAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5Myw2ICs1OTMs
MTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JG
cmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29udGFpbmVyIHRvIHVwZGF0ZSBmYXZp
Y29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwu
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3Jl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBh
cmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQg
b2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAg
bm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3
aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFu
Z2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hh
bmdlSWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6CisKIDIwMTAtMDQtMTUgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRl
eDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsMTkgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwogfQogCiAKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4i
LCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUp
KSk7CisKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBUbyBiZSBub3RpZmllZCBvZiBjaGFuZ2luZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlv
bgorICAgIC8vIGVtaXQgaWNvbnNDaGFuZ2VkKCk7Cit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCkBAIC01MjUsNyArNTM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
Ojp3aWxsQ2hhbmdlVGl0bAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIgKikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBm
YXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisg
ICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwg
d2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9m
IEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJh
bWU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA0LTE1
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIGFzIFdlYktpdCBTUEkKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA1Nzcy
MSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ0LDYg
KzE1NDQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMbwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZUljb25zKERv
Y3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIFdlYkZy
YW1lOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29u
c3QKIHsKICAgICByZXR1cm4gV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKSW5k
ZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRN
YWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlSWNvbnMoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
TUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlMi5pZGwJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NCArNTIsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIgCiAgICAg
SFJFU1VMVCBkaWRQdXNoU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2luXSBJV2ViVmlldyogd2Vi
VmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKICAgICBIUkVTVUxUIGRpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFt
ZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUG9wU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2lu
XSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBIUkVTVUxU
IGRpZENoYW5nZUljb25zKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBm
cmFtZSk7CisKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzIsNiArMzcyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUK
ICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3Ry
aW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGU+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgfHwgIWZyYW1lTG9h
ZERlbGVnYXRlUHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJGcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUyPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKFF1ZXJ5LCBmcmFtZUxv
YWREZWxlZ2F0ZVByaXYpOworICAgIGlmICghZnJhbWVMb2FkRGVsZWdhdGVQcml2MikKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRDaGFu
Z2VJY29ucyh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAor
MjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Qgc3VwcG9y
dCBmb3IgaWNvbiBjaGFuZ2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbGVyKToKKyAgICAgICAgKGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcEljb25DaGFuZ2VzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREdW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hh
bmdlSWNvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmg6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNiAgVG9ueSBDaGFu
ZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2
ICs1Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAs
IG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxi
YWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVt
cEljb25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFs
c2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENs
b3NlT25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25D
aGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ5MCw2ICsxNDk4LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJB
cmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNoYW5n
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2UiLCBk
dW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50
RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0
TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
ZHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQog
ICAgIHZvaWQgc2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9k
dW1wVGl0bGVDaGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNv
bkNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQg
c2V0RHVtcEljb25DaGFuZ2VzKGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFu
Z2VzID0gZHVtcEljb25DaGFuZ2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAg
dm9pZCBzZXREdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2spIHsgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2s7IH0KICAgICAKQEAgLTI3Myw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
dW1wU291cmNlQXNXZWJBcmNoaXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwog
ICAgIGJvb2wgbV9kdW1wVGl0bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7
CiAgICAgYm9vbCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdp
bGxDYWNoZVJlc3BvbnNlOwogICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTYg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZwogICAgIHJldHVybiBT
X09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRDaGFuZ2VJY29ucygKKyAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8q
IFtpbl0gKi8gSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wSWNvbkNoYW5nZXMoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRp
ZENoYW5nZUljb25zXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSku
Y19zdHIoKSk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0
ZTo6cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVu
IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBC
U1RSIHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAorICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJG
cmFtZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
ZFJlY2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKICAg
ICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0VG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL1dpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1
YmxpYzoNCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKw0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBoQml0bWFwLA0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9v
cmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAg
ICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKwogMjAxMC0w
NC0xNiAgTWFjaWVqIFN0YWNob3dpYWsgIDxtanNAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IEFkYW0gQmFydGguCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1w
cm9wZXJ0eS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20v
aWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQpA
QCAtMCwwICsxLDQgQEAKK21haW4gZnJhbWUgLSBkaWRDaGFuZ2VJY29ucworT3JpZ2luYWwgaWNv
blVSTCBpczogaHR0cDovL3Rlc3QuY29tL29sZGZhdmljb24uaWNvCitTZXR0aW5nIG5ldyBpY29u
IFVSTCB0bzogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KK05ldyBpY29uVVJMIGlzOiBo
dHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20v
aWNvbi11cmwtcHJvcGVydHkuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFz
dC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw1MiBA
QAorPGh0bWw+Cis8aGVhZD4KKzx0aXRsZT5PcmlnaW5hbCBUaXRsZTwvdGl0bGU+Cis8bGluayBy
ZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iaHR0cDovL3Rlc3Qu
Y29tL29sZGZhdmljb24uaWNvIi8+Cis8c2NyaXB0PgorZnVuY3Rpb24gZGVidWdPdXRwdXQoc3Ry
KSB7CisgICAgdGV4dCA9IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHN0cik7CisgICAgZGVidWdE
aXYgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnZGVidWdEaXYnKTsKKyAgICBkaXYgPSBkb2N1
bWVudC5jcmVhdGVFbGVtZW50ICgnZGl2Jyk7CisgICAgZGl2LmFwcGVuZENoaWxkKHRleHQpOwor
ICAgIGRlYnVnRGl2LmFwcGVuZENoaWxkKGRpdik7Cit9CisKK2Z1bmN0aW9uIHNldEZhdkljb24o
aWNvblVSTCkgeworICAgIHZhciBkb2NIZWFkID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05h
bWUoImhlYWQiKVswXTsKKyAgICB2YXIgbGlua3MgPSBkb2NIZWFkLmdldEVsZW1lbnRzQnlUYWdO
YW1lKCJsaW5rIik7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkg
eworICAgICAgdmFyIGxpbmsgPSBsaW5rc1tpXTsKKyAgICAgIGlmIChsaW5rLnR5cGU9PSJpbWFn
ZS94LWljb24iICYmIGxpbmsucmVsPT0ic2hvcnRjdXQgaWNvbiIpIHsKKyAgICAgICAgZG9jSGVh
ZC5yZW1vdmVDaGlsZChsaW5rKTsKKyAgICAgICAgYnJlYWs7IC8vIEFzc3VtaW5nIG9ubHkgb25l
IG1hdGNoIGF0IG1vc3QuCisgICAgICB9CisgICAgfQorICAgIHZhciBsaW5rID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgibGluayIpOworICAgIGxpbmsudHlwZSA9ICJpbWFnZS94LWljb24iOwor
ICAgIGxpbmsucmVsID0gInNob3J0Y3V0IGljb24iOworICAgIGxpbmsuaHJlZiA9IGljb25VUkw7
CisgICAgZG9jSGVhZC5hcHBlbmRDaGlsZChsaW5rKTsKK30KKworZnVuY3Rpb24gcnVuVGVzdHMo
KSB7CisgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikgeworICAgICAgICBsYXlv
dXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBJY29uQ2hhbmdlcygpOworICAgIH0KKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIp
WzBdLmhyZWY7CisgICAgZGVidWdPdXRwdXQgKCdPcmlnaW5hbCBpY29uVVJMIGlzOiAnICsgaWNv
blVSTCk7CisgICAgbmV3VVJMID0gJ2h0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvJzsKKyAg
ICBkZWJ1Z091dHB1dCAoJ1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiAnICsgbmV3VVJMKTsKKyAg
ICBzZXRGYXZJY29uKG5ld1VSTCk7CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVm
OworCisgICAgZGVidWdPdXRwdXQgKCdOZXcgaWNvblVSTCBpczogJyArIGljb25VUkwpOworfQor
Cis8L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5IG9ubG9hZD0ncnVuVGVzdHMoKTsnPgorPGRpdiBp
ZD0nZGVidWdEaXYnPgorPC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53536</attachid>
            <date>2010-04-16 10:45:35 -0700</date>
            <delta_ts>2010-04-16 11:37:35 -0700</delta_ts>
            <desc>Skip test on other platforms</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>33131</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNiAgQW50b25pbyBHb21lcyAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQgKHdpdGggUXQg
NC43KSBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NzIsNiArMzk3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODksNiArNDA5NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDUsNiArMzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMTYgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBh
dmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFn
ZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1l
KikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKQEAgLTEyOSw2ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTAtMDQtMTMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbiB0byBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeS4KSW5kZXg6
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNiArNzUzLDExIEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFnZSkKSW5kZXg6IFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDU3NzIxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysr
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlv
biB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20g
YSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZy
YW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQg
b25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNSAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5Myw2ICs1OTMs
MTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JG
cmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29udGFpbmVyIHRvIHVwZGF0ZSBmYXZp
Y29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwu
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3Jl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBh
cmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQg
b2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAg
bm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3
aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFu
Z2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hh
bmdlSWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6CisKIDIwMTAtMDQtMTUgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRl
eDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsMTkgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwogfQogCiAKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4i
LCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUp
KSk7CisKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBUbyBiZSBub3RpZmllZCBvZiBjaGFuZ2luZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlv
bgorICAgIC8vIGVtaXQgaWNvbnNDaGFuZ2VkKCk7Cit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCkBAIC01MjUsNyArNTM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
Ojp3aWxsQ2hhbmdlVGl0bAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIgKikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBm
YXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisg
ICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwg
d2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9m
IEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJh
bWU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA0LTE1
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIGFzIFdlYktpdCBTUEkKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA1Nzcy
MSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ0LDYg
KzE1NDQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMbwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZUljb25zKERv
Y3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIFdlYkZy
YW1lOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29u
c3QKIHsKICAgICByZXR1cm4gV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKSW5k
ZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRN
YWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlSWNvbnMoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
TUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlMi5pZGwJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NCArNTIsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIgCiAgICAg
SFJFU1VMVCBkaWRQdXNoU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2luXSBJV2ViVmlldyogd2Vi
VmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKICAgICBIUkVTVUxUIGRpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFt
ZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUG9wU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2lu
XSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBIUkVTVUxU
IGRpZENoYW5nZUljb25zKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBm
cmFtZSk7CisKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzIsNiArMzcyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUK
ICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3Ry
aW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGU+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgfHwgIWZyYW1lTG9h
ZERlbGVnYXRlUHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJGcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUyPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKFF1ZXJ5LCBmcmFtZUxv
YWREZWxlZ2F0ZVByaXYpOworICAgIGlmICghZnJhbWVMb2FkRGVsZWdhdGVQcml2MikKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRDaGFu
Z2VJY29ucyh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAor
MjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Qgc3VwcG9y
dCBmb3IgaWNvbiBjaGFuZ2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbGVyKToKKyAgICAgICAgKGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcEljb25DaGFuZ2VzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREdW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hh
bmdlSWNvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmg6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNiAgVG9ueSBDaGFu
ZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2
ICs1Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAs
IG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxi
YWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVt
cEljb25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFs
c2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENs
b3NlT25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25D
aGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ5MCw2ICsxNDk4LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJB
cmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNoYW5n
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2UiLCBk
dW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50
RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0
TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
ZHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQog
ICAgIHZvaWQgc2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9k
dW1wVGl0bGVDaGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNv
bkNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQg
c2V0RHVtcEljb25DaGFuZ2VzKGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFu
Z2VzID0gZHVtcEljb25DaGFuZ2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAg
dm9pZCBzZXREdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2spIHsgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2s7IH0KICAgICAKQEAgLTI3Myw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
dW1wU291cmNlQXNXZWJBcmNoaXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwog
ICAgIGJvb2wgbV9kdW1wVGl0bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7
CiAgICAgYm9vbCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdp
bGxDYWNoZVJlc3BvbnNlOwogICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTYg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZwogICAgIHJldHVybiBT
X09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRDaGFuZ2VJY29ucygKKyAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8q
IFtpbl0gKi8gSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wSWNvbkNoYW5nZXMoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRp
ZENoYW5nZUljb25zXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSku
Y19zdHIoKSk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0
ZTo6cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVu
IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBC
U1RSIHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAorICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJG
cmFtZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
ZFJlY2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKICAg
ICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0VG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL1dpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1
YmxpYzoNCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKw0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBoQml0bWFwLA0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9v
cmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAg
ICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBTa2lwcGVkIG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbgorCiAyMDEwLTA0LTE2ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9p
Y29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAorbWFpbiBmcmFtZSAtIGRpZENoYW5nZUljb25zCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRw
Oi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRw
Oi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNv
bS9uZXdmYXZpb24uaWNvCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9w
ZXJ0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVy
bC1wcm9wZXJ0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQg
aWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNv
bi5pY28iLz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZWJ1Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQgKCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYu
YXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7Cisg
ICAgdmFyIGRvY0hlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBd
OworICAgIHZhciBsaW5rcyA9IGRvY0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIg
bGluayA9IGxpbmtzW2ldOworICAgICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYg
bGluay5yZWw9PSJzaG9ydGN1dCBpY29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxk
KGxpbmspOworICAgICAgICBicmVhazsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9z
dC4KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaW5rIik7CisgICAgbGluay50eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwg
PSAic2hvcnRjdXQgaWNvbiI7CisgICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFk
LmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25D
aGFuZ2VzKCk7CisgICAgfQorICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAg
ICBkZWJ1Z091dHB1dCAoJ09yaWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBu
ZXdVUkwgPSAnaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0
ICgnU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24o
bmV3VVJMKTsKKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhl
YWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1
Z091dHB1dCAoJ05ldyBpY29uVVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDU3NzIxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNzkyLDMgKzI3OTIsNCBAQCBCVUc0MTQ1NSBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9sb2NhCiAvLyBDYXVzZWQgYnkgcjU3Njk1LiBXaWxsIGludmVzdGlnYXRl
LgogQlVHX0pJQU5MSSBMSU5VWCA6IGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3Jt
LWRhdGEtd2l0aC1zbGljZWQtZmlsZS5odG1sID0gVEVYVAogCitCVUczMzgxMiBTS0lQIGZhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwgPSBGQUlMCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9ndGsvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsv
U2tpcHBlZAkocmV2aXNpb24gNTc3MjEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvU2tp
cHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjE3MCw2ICsyMTcwLDcgQEAgZmFzdC9kb20vZG9tLXBh
cnNlLXNlcmlhbGl6ZS1kaXNwbGF5Lmh0bQogZmFzdC9kb20vZG9tLXBhcnNlLXNlcmlhbGl6ZS5o
dG1sCiBmYXN0L2RvbS9mb2N1cy1jb250ZW50ZWRpdGFibGUuaHRtbAogZmFzdC9kb20vZ2MtMTAu
aHRtbAorZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAogZmFzdC9kb20vaW1wb3J0Tm9k
ZUhUTUwuaHRtbAogZmFzdC9kb20vaW1wb3J0Tm9kZVhNTC54aHRtbAogZmFzdC9kb20vaW5uZXIt
dGV4dC5odG1sCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkocmV2aXNpb24gNTc3MjEp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAt
MTU4LDMgKzE1OCw2IEBAIGZhc3Qvb3ZlcmZsb3cvc2Nyb2xsYmFyLXJlc3RvcmVkLWFuZC10aGUK
ICMgTWFjIHBvcnQgZG9lc24ndCBwdXQgdGV4dC9odG1sIG9uIHRoZSBwYXN0ZWJvYXJkIGZvciBh
cHAgY29tcGF0aWJpbGl0eTogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE5ODkzCiBlZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwuaHRtbAogZmFzdC9l
dmVudHMvb25kcm9wLXRleHQtaHRtbC5odG1sCisKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTMzODEyCitmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkod29ya2luZyBjb3B5KQpAQCAtMjc5OCw2ICsyNzk4LDcg
QEAgZmFzdC9kb20vSFRNTFN0eWxlRWxlbWVudC9pbnNlcnQtcGFyc2VyLQogZmFzdC9kb20vSFRN
TFRhYmxlRWxlbWVudC9jb2xTcGFuLmh0bWwKIGZhc3QvZG9tL0hUTUxUYWJsZUVsZW1lbnQvY3Jl
YXRlQ2FwdGlvbi5odG1sCiBmYXN0L2RvbS9IVE1MVGV4dEFyZWFFbGVtZW50L3Jlc2V0LXRleHRh
cmVhLmh0bWwKK2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKIGZhc3QvZG9tL2ltcG9y
dE5vZGVIVE1MLmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5vZGVYTUwueGh0bWwKIGZhc3QvZG9tL2lu
bmVyLXRleHQuaHRtbAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53545</attachid>
            <date>2010-04-16 11:34:55 -0700</date>
            <delta_ts>2010-04-16 13:41:36 -0700</delta_ts>
            <desc>Fix expectations syntax error</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>33133</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNiAgQW50b25pbyBHb21lcyAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQgKHdpdGggUXQg
NC43KSBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NzIsNiArMzk3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODksNiArNDA5NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDUsNiArMzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMTYgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBh
dmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFn
ZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1l
KikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKQEAgLTEyOSw2ICsxMzAsOCBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIHN0YXJ0RG93bmxvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAg
ICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
OwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRl
ciopOworICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdlSWNvblVSTChXZWJDb3JlOjpEb2N1bWVu
dExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29uVVJMKFdlYkNvcmU6OkRv
Y3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lkIGNvbW1pdHRlZExvYWQoV2ViQ29yZTo6
RG9jdW1lbnRMb2FkZXIqLCBjb25zdCBjaGFyKiwgaW50KTsKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoZWRMb2FkaW5nKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyKik7CiAgICAgdmlydHVhbCB2b2lk
IHVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktp
dC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQt
MTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlv
biBhbmQgYnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFJlY2VpdmVJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OndpbGxDaGFuZ2VJY29uVVJMKToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJD
bGllbnQ6OmRpZENoYW5nZUljb25VUkwpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmg6CisKIDIwMTAtMDQtMTMgIFRpbW90aHkgSGF0Y2hlciAgPHRpbW90
aHlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlbmFtZSBTZWN1cml0eU9yaWdpbjo6d2hpdGVMaXN0
QWNjZXNzRnJvbU9yaWdpbiB0byBhZGRPcmlnaW5BY2Nlc3NXaGl0ZWxpc3RFbnRyeS4KSW5kZXg6
IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsu
Y3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NTMsNiArNzUzLDExIEBAIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKK3ZvaWQg
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29t
bWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fbG9hZGluZ0Vycm9yUGFnZSkKSW5kZXg6IFdlYktpdC9n
dGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBX
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9u
IDU3NzIxKQorKysgV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5oCSh3b3JraW5nIGNvcHkpCkBAIC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5n
Jik7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNv
dXJjZUVycm9yJik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNv
bnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysr
IFdlYktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlv
biB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20g
YSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZy
YW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVt
ZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQg
b25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNSAgTWFyayBSb3dlICA8bXJv
d2VAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBX
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShy
ZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtOTksNiArOTksNyBAQCBwcml2YXRlOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lm1tCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBv
cnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTU5Myw2ICs1OTMs
MTEgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBD
YWxsRnJhbWVMb2FkRGVsZWdhdGUoaW1wbGVtZW50YXRpb25zLT5kaWRSZWNlaXZlVGl0bGVGb3JG
cmFtZUZ1bmMsIHdlYlZpZXcsIEBzZWxlY3Rvcih3ZWJWaWV3OmRpZFJlY2VpdmVUaXRsZTpmb3JG
cmFtZTopLCAoTlNTdHJpbmcgKil0aXRsZSwgbV93ZWJGcmFtZS5nZXQoKSk7CiB9CiAKK3ZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgICAv
LyBGSVhNRTogSW1wbGVtZW50IHRoaXMgdG8gYWxsb3cgY29udGFpbmVyIHRvIHVwZGF0ZSBmYXZp
Y29uLgorfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExv
YWQoKQogewogICAgIC8vIFRlbGwgdGhlIGNsaWVudCB3ZSd2ZSBjb21taXR0ZWQgdGhpcyBVUkwu
CkluZGV4OiBXZWJLaXQvcXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3F0L0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3Jl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBh
cmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQg
b2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAg
bm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3
aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFu
Z2VUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0Ojp3aWxsQ2hh
bmdlSWNvblVSTCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRD
aGFuZ2VJY29uVVJMKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0Lmg6CisKIDIwMTAtMDQtMTUgIEtlbnQgSGFuc2VuICA8a2VudC5oYW5zZW5Abm9raWEuY29t
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtlbm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpJbmRl
eDogV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRRdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4MSw2ICszODEsMTkgQEAgdm9pZCBG
cmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZFJlYwogfQogCiAKK3ZvaWQgRnJhbWVMb2Fk
ZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgaWYgKGR1bXBGcmFt
ZUxvYWRlckNhbGxiYWNrcykKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENoYW5nZUljb25zXG4i
LCBxUHJpbnRhYmxlKGRydERlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KG1fZnJhbWUp
KSk7CisKKyAgICBpZiAoIW1fd2ViRnJhbWUpCisgICAgICAgIHJldHVybjsKKworICAgIC8vIEZJ
WE1FOiBUbyBiZSBub3RpZmllZCBvZiBjaGFuZ2luZyBpY29uIFVSTFMgYWRkIG5vdGlmaWNhdGlv
bgorICAgIC8vIGVtaXQgaWNvbnNDaGFuZ2VkKCk7Cit9CisKKwogdm9pZCBGcmFtZUxvYWRlckNs
aWVudFF0OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIGlmIChkdW1wRnJhbWVMb2Fk
ZXJDYWxsYmFja3MpCkBAIC01MjUsNyArNTM4LDcgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0
Ojp3aWxsQ2hhbmdlVGl0bAogfQogCiAKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hh
bmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIgKikKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlk
Q2hhbmdlVGl0bGUoRG9jdW1lbnRMb2FkZXIqKQogewogICAgIC8vIG5vIG5lZWQgZm9yLCBkaXNw
YXRjaERpZFJlY2VpdmVUaXRsZSBpcyB0aGUgcmlnaHQgY2FsbGJhY2sKIH0KSW5kZXg6IFdlYktp
dC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJiB0aXRsZSk7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJik7
CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4v
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjMgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBm
YXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisg
ICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwg
d2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9m
IEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogSW50ZXJmYWNlcy9JV2ViRnJh
bWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGw6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViRnJhbWUuY3BwOgorICAgICAgICAoV2ViRnJh
bWU6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJGcmFtZS5oOgorCiAyMDEwLTA0LTE1
ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KIAogICAgICAgICBFeHBvc2UgVXNlckNv
bnRlbnRVUkxQYXR0ZXJuIGFzIFdlYktpdCBTUEkKSW5kZXg6IFdlYktpdC93aW4vV2ViRnJhbWUu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCShyZXZpc2lvbiA1Nzcy
MSkKKysrIFdlYktpdC93aW4vV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTQ0LDYg
KzE1NDQsMTEgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbnRMbwogICAg
IG5vdEltcGxlbWVudGVkKCk7CiB9CiAKK3ZvaWQgV2ViRnJhbWU6OmRpZENoYW5nZUljb25zKERv
Y3VtZW50TG9hZGVyKikKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCiBib29sIFdlYkZy
YW1lOjpjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCkgY29u
c3QKIHsKICAgICByZXR1cm4gV2ViVmlldzo6Y2FuSGFuZGxlUmVxdWVzdChyZXF1ZXN0KTsKSW5k
ZXg6IFdlYktpdC93aW4vV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYkZy
YW1lLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTEsNiArMjkxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzZXRN
YWluRnJhbWVEb2N1bWVudFJlYWR5KGJvb2wpOwogICAgIHZpcnR1YWwgdm9pZCB3aWxsQ2hhbmdl
VGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hh
bmdlVGl0bGUoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlk
Q2hhbmdlSWNvbnMoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wg
Y2FuSGFuZGxlUmVxdWVzdChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmKSBjb25zdDsK
ICAgICB2aXJ0dWFsIGJvb2wgY2FuU2hvd01JTUVUeXBlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
TUlNRVR5cGUpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCByZXByZXNlbnRhdGlvbkV4aXN0c0Zv
clVSTFNjaGVtZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIFVSTFNjaGVtZSkgY29uc3Q7CkluZGV4
OiBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRs
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdh
dGVQcml2YXRlMi5pZGwJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAkod29ya2luZyBjb3B5KQpAQCAtNTIs
NCArNTIsNiBAQCBpbnRlcmZhY2UgSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIgCiAgICAg
SFJFU1VMVCBkaWRQdXNoU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2luXSBJV2ViVmlldyogd2Vi
VmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKICAgICBIUkVTVUxUIGRpZFJlcGxhY2VTdGF0
ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFt
ZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUG9wU3RhdGVXaXRoaW5QYWdlRm9yRnJhbWUoW2lu
XSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKyAgICBIUkVTVUxU
IGRpZENoYW5nZUljb25zKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBm
cmFtZSk7CisKIH0KSW5kZXg6IFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0z
NzIsNiArMzcyLDIwIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUK
ICAgICAgICAgZnJhbWVMb2FkRGVsZWdhdGUtPmRpZFJlY2VpdmVUaXRsZSh3ZWJWaWV3LCBCU3Ry
aW5nKHRpdGxlKSwgbV93ZWJGcmFtZSk7CiB9CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CisgICAgQ09NUHRyPElXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZh
dGU+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjsKKyAgICBpZiAoRkFJTEVEKHdlYlZpZXctPmZyYW1l
TG9hZERlbGVnYXRlUHJpdmF0ZSgmZnJhbWVMb2FkRGVsZWdhdGVQcml2KSkgfHwgIWZyYW1lTG9h
ZERlbGVnYXRlUHJpdikKKyAgICAgICAgcmV0dXJuOworCisgICAgQ09NUHRyPElXZWJGcmFtZUxv
YWREZWxlZ2F0ZVByaXZhdGUyPiBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKFF1ZXJ5LCBmcmFtZUxv
YWREZWxlZ2F0ZVByaXYpOworICAgIGlmICghZnJhbWVMb2FkRGVsZWdhdGVQcml2MikKKyAgICAg
ICAgcmV0dXJuOworICAgICAgICAKKyAgICBmcmFtZUxvYWREZWxlZ2F0ZVByaXYyLT5kaWRDaGFu
Z2VJY29ucyh3ZWJWaWV3LCBtX3dlYkZyYW1lKTsKK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3KiB3ZWJWaWV3ID0g
bV93ZWJGcmFtZS0+d2ViVmlldygpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTcxLDYgKzcxLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJl
Y2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3Qg
V2ViQ29yZTo6U3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmluaXNoRG9jdW1lbnRMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkRmluaXNoTG9hZCgpOwpJbmRleDogV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJLaXRUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAor
MjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3Qgc3VwcG9y
dCBmb3IgaWNvbiBjaGFuZ2VzLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVz
dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRl
c3RDb250cm9sbGVyKToKKyAgICAgICAgKGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrKToKKyAgICAg
ICAgKExheW91dFRlc3RDb250cm9sbGVyOjpzdGF0aWNGdW5jdGlvbnMpOgorICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6ZHVtcEljb25DaGFuZ2VzKToKKyAgICAgICAgKExheW91dFRlc3RDb250cm9s
bGVyOjpzZXREdW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5jcHA6CisgICAgICAgIChGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hh
bmdlSWNvbnMpOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0
ZS5oOgorICAgICAgICAqIFdpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmg6CisgICAgICAgIChXaW5M
YXVuY2hlcldlYkhvc3Q6OmRpZENoYW5nZUljb25zKToKKwogMjAxMC0wNC0xNiAgVG9ueSBDaGFu
ZyAgPHRvbnlAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERpbWl0cmkgR2xh
emtvdi4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRU
ZXN0Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2
ICs1Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAs
IG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxi
YWNrcyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVt
cEljb25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFs
c2UpCiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENs
b3NlT25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJl
ZiBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVk
KGNvbnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxsYmFj
ayhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVm
IHRoaXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3Vt
ZW50c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xs
ZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2Jq
ZWN0R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25D
aGFuZ2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsK
K30KKwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlND
b250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlz
T2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNb
XSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBj
b250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdl
dFByaXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ5MCw2ICsxNDk4LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJB
cmNoaXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAg
IHsgImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNoYW5n
ZXNDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0
cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2UiLCBk
dW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25s
eSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50
RG9lc0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0
ZUZvckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0
TmFtZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9u
bHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xz
L0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgcHVibGljOgogICAgIGJvb2wg
ZHVtcFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQog
ICAgIHZvaWQgc2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9k
dW1wVGl0bGVDaGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNv
bkNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQg
c2V0RHVtcEljb25DaGFuZ2VzKGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFu
Z2VzID0gZHVtcEljb25DaGFuZ2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxs
YmFjaygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAg
dm9pZCBzZXREdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2spIHsgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2Fs
bGJhY2s7IH0KICAgICAKQEAgLTI3Myw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9k
dW1wU291cmNlQXNXZWJBcmNoaXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwog
ICAgIGJvb2wgbV9kdW1wVGl0bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7
CiAgICAgYm9vbCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdp
bGxDYWNoZVJlc3BvbnNlOwogICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdh
dGUuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dp
bi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTYg
QEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZwogICAgIHJldHVybiBT
X09LOwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpk
aWRDaGFuZ2VJY29ucygKKyAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8q
IFtpbl0gKi8gSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRl
c3RDb250cm9sbGVyLT5kdW1wSWNvbkNoYW5nZXMoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRp
ZENoYW5nZUljb25zXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSku
Y19zdHIoKSk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0
ZTo6cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVu
IHdhaXQgZm9yIGl0IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVt
cFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtp
bmcgY29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBC
U1RSIHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAg
dmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAorICAgICAg
ICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJG
cmFtZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRp
ZFJlY2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKICAg
ICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0VG9vbHMvV2lu
TGF1bmNoZXIvV2luTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVu
Y2hlci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xzL1dpbkxh
dW5jaGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1
YmxpYzoNCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0g
Ki8gSVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVh
bCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyog
W2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1l
ICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKw0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVU
SE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmll
dyAqd2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBoQml0bWFwLA0KSW5k
ZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9v
cmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEFkZCB0ZXN0IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAg
ICAgICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBTa2lwcGVkIG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbgorCiAyMDEwLTA0LTE2ICBNYWNpZWog
U3RhY2hvd2lhayAgPG1qc0BhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQWRhbSBC
YXJ0aC4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9w
ZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9p
Y29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNCBA
QAorbWFpbiBmcmFtZSAtIGRpZENoYW5nZUljb25zCitPcmlnaW5hbCBpY29uVVJMIGlzOiBodHRw
Oi8vdGVzdC5jb20vb2xkZmF2aWNvbi5pY28KK1NldHRpbmcgbmV3IGljb24gVVJMIHRvOiBodHRw
Oi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbworTmV3IGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNv
bS9uZXdmYXZpb24uaWNvCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVybC1wcm9w
ZXJ0eS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXBy
b3BlcnR5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2RvbS9pY29uLXVy
bC1wcm9wZXJ0eS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDUyIEBACis8aHRtbD4KKzxo
ZWFkPgorPHRpdGxlPk9yaWdpbmFsIFRpdGxlPC90aXRsZT4KKzxsaW5rIHJlbD0ic2hvcnRjdXQg
aWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJodHRwOi8vdGVzdC5jb20vb2xkZmF2aWNv
bi5pY28iLz4KKzxzY3JpcHQ+CitmdW5jdGlvbiBkZWJ1Z091dHB1dChzdHIpIHsKKyAgICB0ZXh0
ID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUoc3RyKTsKKyAgICBkZWJ1Z0RpdiA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdkZWJ1Z0RpdicpOworICAgIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQgKCdkaXYnKTsKKyAgICBkaXYuYXBwZW5kQ2hpbGQodGV4dCk7CisgICAgZGVidWdEaXYu
YXBwZW5kQ2hpbGQoZGl2KTsKK30KKworZnVuY3Rpb24gc2V0RmF2SWNvbihpY29uVVJMKSB7Cisg
ICAgdmFyIGRvY0hlYWQgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBd
OworICAgIHZhciBsaW5rcyA9IGRvY0hlYWQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKTsK
KyAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpbmtzLmxlbmd0aDsgKytpKSB7CisgICAgICB2YXIg
bGluayA9IGxpbmtzW2ldOworICAgICAgaWYgKGxpbmsudHlwZT09ImltYWdlL3gtaWNvbiIgJiYg
bGluay5yZWw9PSJzaG9ydGN1dCBpY29uIikgeworICAgICAgICBkb2NIZWFkLnJlbW92ZUNoaWxk
KGxpbmspOworICAgICAgICBicmVhazsgLy8gQXNzdW1pbmcgb25seSBvbmUgbWF0Y2ggYXQgbW9z
dC4KKyAgICAgIH0KKyAgICB9CisgICAgdmFyIGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50
KCJsaW5rIik7CisgICAgbGluay50eXBlID0gImltYWdlL3gtaWNvbiI7CisgICAgbGluay5yZWwg
PSAic2hvcnRjdXQgaWNvbiI7CisgICAgbGluay5ocmVmID0gaWNvblVSTDsKKyAgICBkb2NIZWFk
LmFwcGVuZENoaWxkKGxpbmspOworfQorCitmdW5jdGlvbiBydW5UZXN0cygpIHsKKyAgICBpZiAo
d2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAgIGxheW91dFRlc3RDb250cm9s
bGVyLmR1bXBBc1RleHQoKTsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEljb25D
aGFuZ2VzKCk7CisgICAgfQorICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFn
TmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKyAg
ICBkZWJ1Z091dHB1dCAoJ09yaWdpbmFsIGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKKyAgICBu
ZXdVUkwgPSAnaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28nOworICAgIGRlYnVnT3V0cHV0
ICgnU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86ICcgKyBuZXdVUkwpOworICAgIHNldEZhdkljb24o
bmV3VVJMKTsKKyAgICBpY29uVVJMID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhl
YWQiKVswXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpWzBdLmhyZWY7CisKKyAgICBkZWJ1
Z091dHB1dCAoJ05ldyBpY29uVVJMIGlzOiAnICsgaWNvblVSTCk7Cit9CisKKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25sb2FkPSdydW5UZXN0cygpOyc+Cis8ZGl2IGlkPSdkZWJ1Z0Rpdic+
Cis8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHJldmlzaW9uIDU3NzIxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yNzkyLDMgKzI3OTIsNCBAQCBCVUc0MTQ1NSBTS0lQIDogaHR0cC90
ZXN0cy9zZWN1cml0eS9sb2NhCiAvLyBDYXVzZWQgYnkgcjU3Njk1LiBXaWxsIGludmVzdGlnYXRl
LgogQlVHX0pJQU5MSSBMSU5VWCA6IGh0dHAvdGVzdHMvbG9jYWwvZm9ybWRhdGEvc2VuZC1mb3Jt
LWRhdGEtd2l0aC1zbGljZWQtZmlsZS5odG1sID0gVEVYVAogCitCVUczMzgxMiBTS0lQIDogZmFz
dC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbCA9IEZBSUwKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL2d0ay9Ta2lwcGVkCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2d0
ay9Ta2lwcGVkCShyZXZpc2lvbiA1NzcyMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9T
a2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yMTcwLDYgKzIxNzAsNyBAQCBmYXN0L2RvbS9kb20t
cGFyc2Utc2VyaWFsaXplLWRpc3BsYXkuaHRtCiBmYXN0L2RvbS9kb20tcGFyc2Utc2VyaWFsaXpl
Lmh0bWwKIGZhc3QvZG9tL2ZvY3VzLWNvbnRlbnRlZGl0YWJsZS5odG1sCiBmYXN0L2RvbS9nYy0x
MC5odG1sCitmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiBmYXN0L2RvbS9pbXBvcnRO
b2RlSFRNTC5odG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlWE1MLnhodG1sCiBmYXN0L2RvbS9pbm5l
ci10ZXh0Lmh0bWwKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCShyZXZpc2lvbiA1Nzcy
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBA
IC0xNTgsMyArMTU4LDYgQEAgZmFzdC9vdmVyZmxvdy9zY3JvbGxiYXItcmVzdG9yZWQtYW5kLXRo
ZQogIyBNYWMgcG9ydCBkb2Vzbid0IHB1dCB0ZXh0L2h0bWwgb24gdGhlIHBhc3RlYm9hcmQgZm9y
IGFwcCBjb21wYXRpYmlsaXR5OiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTk4OTMKIGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC5odG1sCiBmYXN0
L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLmh0bWwKKworIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKK2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwK
SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAkocmV2aXNpb24gNTc3MjEpCisrKyBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCSh3b3JraW5nIGNvcHkpCkBAIC0yNzk4LDYgKzI3OTgs
NyBAQCBmYXN0L2RvbS9IVE1MU3R5bGVFbGVtZW50L2luc2VydC1wYXJzZXItCiBmYXN0L2RvbS9I
VE1MVGFibGVFbGVtZW50L2NvbFNwYW4uaHRtbAogZmFzdC9kb20vSFRNTFRhYmxlRWxlbWVudC9j
cmVhdGVDYXB0aW9uLmh0bWwKIGZhc3QvZG9tL0hUTUxUZXh0QXJlYUVsZW1lbnQvcmVzZXQtdGV4
dGFyZWEuaHRtbAorZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAogZmFzdC9kb20vaW1w
b3J0Tm9kZUhUTUwuaHRtbAogZmFzdC9kb20vaW1wb3J0Tm9kZVhNTC54aHRtbAogZmFzdC9kb20v
aW5uZXItdGV4dC5odG1sCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53559</attachid>
            <date>2010-04-16 13:41:36 -0700</date>
            <delta_ts>2010-04-18 16:27:36 -0700</delta_ts>
            <desc>Fix chromium error</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>32379</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNiAgQW50b25pbyBHb21lcyAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQgKHdpdGggUXQg
NC43KSBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NzIsNiArMzk3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODksNiArNDA5NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDUsNiArMzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMTYgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBh
dmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFn
ZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1l
KikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQg
YnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5oOgorCiAyMDEwLTA0LTEzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW4gdG8gYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkuCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2
aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQo
KQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA0LTEw
ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0
aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0
LgorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2Fk
ZXIsIHdoaWNoIHdpbGwKKyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9u
cyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRo
b2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTAtMDQtMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsNiArNTkzLDExIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5j
LCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwg
KE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUgZmF2aWNvbi4KK30K
Kwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsK
ICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29tbWl0dGVkIHRoaXMgVVJMLgpJbmRleDog
V2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5n
ZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3
aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0
aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAg
ICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAx
MC0wNC0xNSAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDYgKzM4MSwxOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIGlm
ICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRvIGJlIG5v
dGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAgLy8gZW1p
dCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykK
QEAgLTUyNSw3ICs1MzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VU
aXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw2ICsxMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0
ZVByaXZhdGUyLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6ZGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMDQtMTUgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBVc2VyQ29udGVudFVSTFBhdHRl
cm4gYXMgV2ViS2l0IFNQSQpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2
b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJl
dHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0L3dp
bi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNp
b24gNTc3MjEpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3Vt
ZW50UmVhZHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBNSU1FVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlk
bAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9h
ZERlbGVnYXRlUHJpdmF0ZTIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Miw0ICs1Miw2IEBAIGlu
dGVyZmFjZSBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiAKICAgICBIUkVTVUxUIGRpZFB1
c2hTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElX
ZWJGcmFtZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZv
ckZyYW1lKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSk7CiAg
ICAgSFJFU1VMVCBkaWRQb3BTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3
ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworICAgIEhSRVNVTFQgZGlkQ2hhbmdlSWNv
bnMoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKwogfQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMjAg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUpLCBt
X3dlYkZyYW1lKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZp
ZXcoKTsKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2Fk
RGVsZWdhdGVQcml2OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQ
cml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2
KQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZTI+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjIoUXVlcnksIGZyYW1lTG9hZERlbGVnYXRlUHJp
dik7CisgICAgaWYgKCFmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdjItPmRpZENoYW5nZUljb25zKHdlYlZp
ZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53
ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTEwICBE
YXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBzdXBwb3J0IGZvciBpY29uIGNo
YW5nZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAoZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldER1bXBJ
Y29uQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAg
ICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9z
dDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTE2ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgICwgbV9kdW1wU291cmNl
QXNXZWJBcmNoaXZlKGZhbHNlKQogICAgICwgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzKGZhbHNlKQog
ICAgICwgbV9kdW1wVGl0bGVDaGFuZ2VzKGZhbHNlKQorICAgICwgbV9kdW1wSWNvbkNoYW5nZXMo
ZmFsc2UpCiAgICAgLCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhmYWxzZSkKICAgICAsIG1f
ZHVtcFdpbGxDYWNoZVJlc3BvbnNlKGZhbHNlKQogICAgICwgbV9jYWxsQ2xvc2VPbldlYlZpZXdz
KHRydWUpCkBAIC0xODcsNiArMTg4LDEzIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBUaXRsZUNo
YW5nZXNDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREdW1wSWNvbkNoYW5nZXModHJ1ZSk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CkBAIC0xNDkwLDYgKzE0OTgsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImR1bXBTb3VyY2VBc1dlYkFyY2hpdmUiLCBkdW1w
U291cmNlQXNXZWJBcmNoaXZlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFN0YXR1
c0NhbGxiYWNrcyIsIGR1bXBTdGF0dXNDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRpdGxlQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgImR1bXBJY29uQ2hhbmdlcyIsIGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2FjaGVSZXNwb25zZSIsIGR1bXBXaWxsQ2FjaGVS
ZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVsZW1lbnREb2VzQXV0b0NvbXBs
ZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVuY29kZUhvc3ROYW1lIiwgZW5jb2Rl
SG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw2ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wVGl0bGVDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2VzOyB9CiAgICAgdm9pZCBzZXRE
dW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hhbmdlcykgeyBtX2R1bXBUaXRsZUNoYW5n
ZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBib29sIGR1bXBJY29uQ2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcEljb25DaGFuZ2VzOyB9CisgICAgdm9pZCBzZXREdW1wSWNvbkNo
YW5nZXMoYm9vbCBkdW1wSWNvbkNoYW5nZXMpIHsgbV9kdW1wSWNvbkNoYW5nZXMgPSBkdW1wSWNv
bkNoYW5nZXM7IH0KKwogICAgIGJvb2wgZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0KICAgICB2b2lkIHNldER1bXBW
aXNpdGVkTGlua3NDYWxsYmFjayhib29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaykgeyBtX2R1
bXBWaXNpdGVkTGlua3NDYWxsYmFjayA9IGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsgfQogICAg
IApAQCAtMjczLDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBTb3VyY2VBc1dl
YkFyY2hpdmU7CiAgICAgYm9vbCBtX2R1bXBTdGF0dXNDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1
bXBUaXRsZUNoYW5nZXM7CisgICAgYm9vbCBtX2R1bXBJY29uQ2hhbmdlczsKICAgICBib29sIG1f
ZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOwogICAgIGJvb2wgbV9kdW1wV2lsbENhY2hlUmVzcG9u
c2U7CiAgICAgYm9vbCBtX2NhbGxDbG9zZU9uV2ViVmlld3M7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlz
aW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxNiBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5nZUljb25z
KAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsCisgICAgLyogW2luXSAqLyBJV2Vi
RnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uQ2hhbmdlcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNc
biIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKwor
ICAgIHJldHVybiBTX09LOworfQorCiB2b2lkIEZyYW1lTG9hZERlbGVnYXRlOjpwcm9jZXNzV29y
aygpCiB7CiAgICAgLy8gaWYgYW5vdGhlciBsb2FkIHN0YXJ0ZWQsIHRoZW4gd2FpdCBmb3IgaXQg
dG8gY29tcGxldGUuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsMTAgQEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIEJTVFIgdGl0bGUsCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CiAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoCisgICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7
CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24o
IAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5d
ICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5M
YXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1
bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTAgQEAgcHVibGljOg0KICAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUg
KmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoDQorICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJl
dHVybiBTX09LOyB9DQorDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0K
ICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTc3MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNraXBwZWQgb24g
YWxsIHBsYXRmb3JtcyBidXQgV2luCisKIDIwMTAtMDQtMTYgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3Bl
cnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACittYWluIGZyYW1l
IC0gZGlkQ2hhbmdlSWNvbnMKK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9v
bGRmYXZpY29uLmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9u
ZXdmYXZpb24uaWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5p
Y28KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
T3JpZ2luYWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJp
bWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2Rpdicp
OworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChk
aXYpOworfQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsKKyAgICB2YXIgZG9jSGVh
ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgdmFyIGxp
bmtzID0gZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBsaW5rID0gbGlua3Nb
aV07CisgICAgICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29uIiAmJiBsaW5rLnJlbD09InNo
b3J0Y3V0IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3ZlQ2hpbGQobGluayk7CisgICAg
ICAgIGJyZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBhdCBtb3N0LgorICAgICAgfQor
ICAgIH0KKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAg
ICBsaW5rLnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBp
Y29uIjsKKyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQo
bGluayk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAg
ICB9CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilb
MF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworICAgIGRlYnVnT3V0cHV0
ICgnT3JpZ2luYWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOworICAgIG5ld1VSTCA9ICdodHRw
Oi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5l
dyBpY29uIFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2SWNvbihuZXdVUkwpOworICAg
IGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAgIGRlYnVnT3V0cHV0ICgnTmV3
IGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNTc3MjEpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTI3OTIsMyArMjc5Miw0IEBAIEJVRzQxNDU1IFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2xvY2EKIC8vIENhdXNlZCBieSByNTc2OTUuIFdpbGwgaW52ZXN0aWdhdGUuCiBCVUdfSklBTkxJ
IExJTlVYIDogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNs
aWNlZC1maWxlLmh0bWwgPSBURVhUCiAKK0JVRzMzODEyIFNLSVAgOiBmYXN0L2RvbS9pY29uLXVy
bC1wcm9wZXJ0eS5odG1sID0gRkFJTApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJl
dmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtp
bmcgY29weSkKQEAgLTIxNzAsNiArMjE3MCw3IEBAIGZhc3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxp
emUtZGlzcGxheS5odG0KIGZhc3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUuaHRtbAogZmFzdC9k
b20vZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKIGZhc3QvZG9tL2djLTEwLmh0bWwKK2Zhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5vZGVIVE1MLmh0bWwK
IGZhc3QvZG9tL2ltcG9ydE5vZGVYTUwueGh0bWwKIGZhc3QvZG9tL2lubmVyLXRleHQuaHRtbApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTE1OCwzICsxNTgs
NiBAQCBmYXN0L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3JlZC1hbmQtdGhlCiAjIE1hYyBwb3J0
IGRvZXNuJ3QgcHV0IHRleHQvaHRtbCBvbiB0aGUgcGFzdGVib2FyZCBmb3IgYXBwIGNvbXBhdGli
aWxpdHk6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTg5MwogZWRp
dGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLmh0bWwKIGZhc3QvZXZlbnRzL29uZHJv
cC10ZXh0LWh0bWwuaHRtbAorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0zMzgxMgorZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbApJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1NzcyMSkKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3OTgsNiArMjc5OCw3IEBAIGZhc3QvZG9t
L0hUTUxTdHlsZUVsZW1lbnQvaW5zZXJ0LXBhcnNlci0KIGZhc3QvZG9tL0hUTUxUYWJsZUVsZW1l
bnQvY29sU3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVFbGVtZW50L2NyZWF0ZUNhcHRpb24u
aHRtbAogZmFzdC9kb20vSFRNTFRleHRBcmVhRWxlbWVudC9yZXNldC10ZXh0YXJlYS5odG1sCitm
YXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlSFRNTC5o
dG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlWE1MLnhodG1sCiBmYXN0L2RvbS9pbm5lci10ZXh0Lmh0
bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53628</attachid>
            <date>2010-04-18 08:07:54 -0700</date>
            <delta_ts>2010-04-18 16:27:44 -0700</delta_ts>
            <desc>Fixed test_expectations collision</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>32571</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNiAgQW50b25pbyBHb21lcyAgPHRvbmlr
aXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgUXRXZWJLaXQgKHdpdGggUXQg
NC43KSBidWlsZCBmaXguCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxMSw2ICs0NDExLDggQEAg
dm9pZCBEb2N1bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25V
UkwgPSBpY29uVVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9p
Y29uVVJMID0gaWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBm
LT5sb2FkZXIoKS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50Ojpz
ZXRVc2VTZWN1cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2Fy
ZCkKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysg
V2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcs
NiArNjA3LDE3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAg
ICB9CiB9CiAKK3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBp
Y29uVVJMKQoreworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgaWYgKG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29u
VVJMID0gaWNvblVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhp
cyk7CisgICAgfQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29u
c3QKIHsKICAgICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBC
L0YgbGlzdC4KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc3MjEpCisr
KyBXZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDks
NiArMTA5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0lu
QVBJU2Vuc2UoKSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJv
b2wpOwogICAgICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lk
IHNldEljb25VUkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJp
ZGVFbmNvZGluZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYg
UExBVEZPUk0oTUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
ICAgICAgICB2b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3Ry
aW5nJiB0aXRsZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0
IFN0cmluZyYgaWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAg
ICAgICBLVVJMIHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0
b3J5UmVmbGVjdHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBT
dHJpbmcgbV9wYWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAg
ICAgIFN0cmluZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0Vt
cHR5Q2xpZW50cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5o
CShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
U3RhcnRQcm92aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRS
ZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRM
b2FkKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9h
ZChjb25zdCBSZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
RmFpbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIv
RnJhbWVMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM5NzIsNiArMzk3MiwxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
ZXRUaXRsZShjb25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0
bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNv
blVSTCkKK3sKKyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQor
CiBLVVJMIEZyYW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJl
dHVybiBhY3RpdmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAg
LTQwODksNiArNDA5NCwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVuCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVu
dExvYWRlciogbG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikK
KyAgICAgICAgbV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBG
cmFtZUxvYWRlcjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGlu
Z0luaXRpYWxFbXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAg
LTE4Nyw2ICsxODcsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNv
bnN0OwogICAgIHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9p
ZCBkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNv
bnMoRG9jdW1lbnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25z
dDsKICAgICBDYWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0z
MDUsNiArMzA2LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAg
IHZvaWQgc2V0VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0
IFN0cmluZyYpOwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxD
YWNoZWRQYWdlPik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsg
cmV0dXJuIG1fbG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9G
cmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9h
ZGVyQ2xpZW50LmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9
IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2Fk
KCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29u
c3QgU3RyaW5nJiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0
TG9hZCgpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lv
bmFsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2Vi
S2l0L2Nocm9taXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBz
cmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2Fk
ZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJh
bWVMb2FkZXJDbGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMTYgIFRvbnkgQ2hhbmcgIDx0b255QGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4
OiBXZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5
KQpAQCAtMTkyLDYgKzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBh
dmFpbGFibGUuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNv
bnN0IFdlYlN0cmluZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFn
ZSBoYXZlIGNoYW5nZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1l
KikgeyB9CisKICAgICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgog
ICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJ
bmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAko
cmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50
SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQo
KS0+ZGlkUmVjZWl2ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlckNsaWVudEltcGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dl
YkZyYW1lLT5jbGllbnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5n
ZUljb25zKG1fd2ViRnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlz
cGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2Vi
RnJhbWUtPnZpZXdJbXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVy
Q2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2Fk
ZXJDbGllbnRJbXBsLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9G
cmFtZUxvYWRlckNsaWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYg
dGl0bGUpOworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6
OlJlc291cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC9ndGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9ndGsv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIERh
dmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQg
YnVnIFVSTCAoT09QUyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5oOgorCiAyMDEwLTA0LTEzICBUaW1vdGh5IEhhdGNoZXIgIDx0aW1vdGh5QGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW5hbWUgU2VjdXJpdHlPcmlnaW46OndoaXRlTGlzdEFjY2Vzc0Zy
b21PcmlnaW4gdG8gYWRkT3JpZ2luQWNjZXNzV2hpdGVsaXN0RW50cnkuCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2
aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQo
KQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA1NzcyMSkK
KysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA0LTEw
ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0
aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0
LgorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2Fk
ZXIsIHdoaWNoIHdpbGwKKyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9u
cyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRo
b2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTAtMDQtMTUgIE1hcmsgUm93ZSAgPG1yb3dlQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBTYW0gV2VpbmlnLgpJbmRleDogV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24g
NTc3MjEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlk
UmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUpOworICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNp
b25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKSW5k
ZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbQkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTMsNiArNTkzLDExIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAgICAgICAgQ2FsbEZyYW1l
TG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWVGdW5j
LCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0bGU6Zm9yRnJhbWU6KSwg
KE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQogCit2b2lkIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICAgLy8gRklYTUU6
IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRhdGUgZmF2aWNvbi4KK30K
Kwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsK
ICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29tbWl0dGVkIHRoaXMgVVJMLgpJbmRleDog
V2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwyMCBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1
bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJlIGNoYW5n
ZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9iamVjdCB3
aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5vdGlmeSB0
aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2lsbAorICAg
ICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25zKCkuCisK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisK
KyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMp
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlkQ2hhbmdlVGl0bGUp
OgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaDoKKwogMjAx
MC0wNC0xNSAgS2VudCBIYW5zZW4gIDxrZW50LmhhbnNlbkBub2tpYS5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VubmV0aCBSb2hkZSBDaHJpc3RpYW5zZW4uCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA1
NzcyMSkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDYgKzM4MSwxOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIGlm
ICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRvIGJlIG5v
dGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAgLy8gZW1p
dCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykK
QEAgLTUyNSw3ICs1MzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VU
aXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw2ICsxMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0
ZVByaXZhdGUyLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6ZGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMDQtMTUgIEFkYW0gUm9iZW4g
IDxhcm9iZW5AYXBwbGUuY29tPgogCiAgICAgICAgIEV4cG9zZSBVc2VyQ29udGVudFVSTFBhdHRl
cm4gYXMgV2ViS2l0IFNQSQpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0
L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2
b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvCiAgICAgbm90SW1wbGVtZW50
ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIq
KQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRs
ZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJl
dHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0L3dp
bi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNp
b24gNTc3MjEpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5
MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3Vt
ZW50UmVhZHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3Jl
OjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJD
b3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhX
ZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1
ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIHZpcnR1YWwg
Ym9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBNSU1FVHlwZSkgY29u
c3Q7CiAgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNv
bnN0IFdlYkNvcmU6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4v
SW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlk
bAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9h
ZERlbGVnYXRlUHJpdmF0ZTIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Miw0ICs1Miw2IEBAIGlu
dGVyZmFjZSBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiAKICAgICBIUkVTVUxUIGRpZFB1
c2hTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElX
ZWJGcmFtZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZv
ckZyYW1lKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSk7CiAg
ICAgSFJFU1VMVCBkaWRQb3BTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3
ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworICAgIEhSRVNVTFQgZGlkQ2hhbmdlSWNv
bnMoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKwogfQpJ
bmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMjAg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBmcmFt
ZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUpLCBt
X3dlYkZyYW1lKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
aGFuZ2VJY29ucygpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZp
ZXcoKTsKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2Fk
RGVsZWdhdGVQcml2OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQ
cml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2
KQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJp
dmF0ZTI+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjIoUXVlcnksIGZyYW1lTG9hZERlbGVnYXRlUHJp
dik7CisgICAgaWYgKCFmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKQorICAgICAgICByZXR1cm47Cisg
ICAgICAgIAorICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdjItPmRpZENoYW5nZUljb25zKHdlYlZp
ZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53
ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1
cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEs
NyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJp
bmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGaW5pc2hMb2FkKCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1NzcyMSkKKysrIFdlYktpdFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTEwICBE
YXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBzdXBwb3J0IGZvciBpY29uIGNo
YW5nZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5j
cHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIp
OgorICAgICAgICAoZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVz
dENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
TGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpk
dW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldER1bXBJ
Y29uQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVn
YXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyk6Cisg
ICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAg
ICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9z
dDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTE2ICBUb255IENoYW5nICA8dG9ueUBjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDog
V2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlv
dXRUZXN0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU2LDYgKzU2LDcgQEAgTGF5
b3V0VGVzdENvbnRyb2xsZXI6OkxheW91dFRlc3RDb250cm9sbAogICAgICwgbV9kdW1wU291cmNl
QXNXZWJBcmNoaXZlKGZhbHNlKQogICAgICwgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzKGZhbHNlKQog
ICAgICwgbV9kdW1wVGl0bGVDaGFuZ2VzKGZhbHNlKQorICAgICwgbV9kdW1wSWNvbkNoYW5nZXMo
ZmFsc2UpCiAgICAgLCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjayhmYWxzZSkKICAgICAsIG1f
ZHVtcFdpbGxDYWNoZVJlc3BvbnNlKGZhbHNlKQogICAgICwgbV9jYWxsQ2xvc2VPbldlYlZpZXdz
KHRydWUpCkBAIC0xODcsNiArMTg4LDEzIEBAIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBUaXRsZUNo
YW5nZXNDYWxsYmEKICAgICByZXR1cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CiB9
CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrKEpTQ29udGV4dFJl
ZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5jdGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwg
c2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFs
dWVSZWYqIGV4Y2VwdGlvbikKK3sKKyAgICBMYXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxl
ciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RDb250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRl
KHRoaXNPYmplY3QpKTsKKyAgICBjb250cm9sbGVyLT5zZXREdW1wSWNvbkNoYW5nZXModHJ1ZSk7
CisgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOworfQorCiBzdGF0aWMg
SlNWYWx1ZVJlZiBkdW1wV2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjayhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCiB7CiAgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIqIGNvbnRyb2xsZXIgPSBz
dGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0R2V0UHJpdmF0ZSh0aGlz
T2JqZWN0KSk7CkBAIC0xNDkwLDYgKzE0OTgsNyBAQCBKU1N0YXRpY0Z1bmN0aW9uKiBMYXlvdXRU
ZXN0Q29udHJvbGxlcjo6CiAgICAgICAgIHsgImR1bXBTb3VyY2VBc1dlYkFyY2hpdmUiLCBkdW1w
U291cmNlQXNXZWJBcmNoaXZlQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVtcFN0YXR1
c0NhbGxiYWNrcyIsIGR1bXBTdGF0dXNDYWxsYmFja3NDYWxsYmFjaywga0pTUHJvcGVydHlBdHRy
aWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAg
ICB7ICJkdW1wVGl0bGVDaGFuZ2VzIiwgZHVtcFRpdGxlQ2hhbmdlc0NhbGxiYWNrLCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0s
CisgICAgICAgIHsgImR1bXBJY29uQ2hhbmdlcyIsIGR1bXBJY29uQ2hhbmdlc0NhbGxiYWNrLCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVs
ZXRlIH0sCiAgICAgICAgIHsgImR1bXBXaWxsQ2FjaGVSZXNwb25zZSIsIGR1bXBXaWxsQ2FjaGVS
ZXNwb25zZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVy
dHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVsZW1lbnREb2VzQXV0b0NvbXBs
ZXRlRm9yRWxlbWVudFdpdGhJZCIsIGVsZW1lbnREb2VzQXV0b0NvbXBsZXRlRm9yRWxlbWVudFdp
dGhJZENhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlB
dHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImVuY29kZUhvc3ROYW1lIiwgZW5jb2Rl
SG9zdE5hbWVDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3Bl
cnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LApJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCShyZXZpc2lvbiA1NzcyMSkKKysrIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE1Niw2ICsxNTYsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBkdW1wVGl0bGVDaGFu
Z2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wVGl0bGVDaGFuZ2VzOyB9CiAgICAgdm9pZCBzZXRE
dW1wVGl0bGVDaGFuZ2VzKGJvb2wgZHVtcFRpdGxlQ2hhbmdlcykgeyBtX2R1bXBUaXRsZUNoYW5n
ZXMgPSBkdW1wVGl0bGVDaGFuZ2VzOyB9CiAKKyAgICBib29sIGR1bXBJY29uQ2hhbmdlcygpIGNv
bnN0IHsgcmV0dXJuIG1fZHVtcEljb25DaGFuZ2VzOyB9CisgICAgdm9pZCBzZXREdW1wSWNvbkNo
YW5nZXMoYm9vbCBkdW1wSWNvbkNoYW5nZXMpIHsgbV9kdW1wSWNvbkNoYW5nZXMgPSBkdW1wSWNv
bkNoYW5nZXM7IH0KKwogICAgIGJvb2wgZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKCkgY29uc3Qg
eyByZXR1cm4gbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2s7IH0KICAgICB2b2lkIHNldER1bXBW
aXNpdGVkTGlua3NDYWxsYmFjayhib29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjaykgeyBtX2R1
bXBWaXNpdGVkTGlua3NDYWxsYmFjayA9IGR1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsgfQogICAg
IApAQCAtMjczLDYgKzI3Niw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2R1bXBTb3VyY2VBc1dl
YkFyY2hpdmU7CiAgICAgYm9vbCBtX2R1bXBTdGF0dXNDYWxsYmFja3M7CiAgICAgYm9vbCBtX2R1
bXBUaXRsZUNoYW5nZXM7CisgICAgYm9vbCBtX2R1bXBJY29uQ2hhbmdlczsKICAgICBib29sIG1f
ZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOwogICAgIGJvb2wgbV9kdW1wV2lsbENhY2hlUmVzcG9u
c2U7CiAgICAgYm9vbCBtX2NhbGxDbG9zZU9uV2ViVmlld3M7CkluZGV4OiBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHJldmlz
aW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERl
bGVnYXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg5LDYgKzE4OSwxNiBAQCBIUkVTVUxUIFNU
RE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnCiAgICAgcmV0dXJuIFNfT0s7CiB9CiAKK0hS
RVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVMb2FkRGVsZWdhdGU6OmRpZENoYW5nZUljb25z
KAorICAgIC8qIFtpbl0gKi8gSVdlYlZpZXcqIHdlYlZpZXcsCisgICAgLyogW2luXSAqLyBJV2Vi
RnJhbWUqIGZyYW1lKQoreworICAgIGlmICghZG9uZSAmJiBnTGF5b3V0VGVzdENvbnRyb2xsZXIt
PmR1bXBJY29uQ2hhbmdlcygpKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNc
biIsIGRlc2NyaXB0aW9uU3VpdGFibGVGb3JUZXN0UmVzdWx0KGZyYW1lKS5jX3N0cigpKTsKKwor
ICAgIHJldHVybiBTX09LOworfQorCiB2b2lkIEZyYW1lTG9hZERlbGVnYXRlOjpwcm9jZXNzV29y
aygpCiB7CiAgICAgLy8gaWYgYW5vdGhlciBsb2FkIHN0YXJ0ZWQsIHRoZW4gd2FpdCBmb3IgaXQg
dG8gY29tcGxldGUuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVM
b2FkRGVsZWdhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93
aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAkocmV2aXNpb24gNTc3MjEpCisrKyBXZWJLaXRUb29scy9E
dW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuaAkod29ya2luZyBjb3B5KQpAQCAt
NzQsNiArNzQsMTAgQEAgcHVibGljOgogICAgICAgICAvKiBbaW5dICovIEJTVFIgdGl0bGUsCiAg
ICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7CiAKKyAgICB2aXJ0dWFsIEhSRVNV
TFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoCisgICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpmcmFtZSk7
CisKICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgZGlkUmVjZWl2ZUljb24o
IAogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAogICAgICAgICAvKiBbaW5d
ICovIE9MRV9IQU5ETEUgaW1hZ2UsCkluZGV4OiBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5M
YXVuY2hlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5j
aGVyLmgJKHJldmlzaW9uIDU3NzIxKQorKysgV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1
bmNoZXIuaAkod29ya2luZyBjb3B5KQpAQCAtNjEsNiArNjEsMTAgQEAgcHVibGljOg0KICAgICAg
ICAgLyogW2luXSAqLyBCU1RSIHRpdGxlLA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUg
KmZyYW1lKSB7IHJldHVybiBTX09LOyB9DQogICAgIA0KKyAgICB2aXJ0dWFsIEhSRVNVTFQgU1RE
TUVUSE9EQ0FMTFRZUEUgZGlkQ2hhbmdlSWNvbnMoDQorICAgICAgICAvKiBbaW5dICovIElXZWJW
aWV3ICp3ZWJWaWV3LA0KKyAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJl
dHVybiBTX09LOyB9DQorDQogICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRSZWNlaXZlSWNvbiggDQogICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LA0K
ICAgICAgICAgLyogW2luXSAqLyBPTEVfSEFORExFIGhCaXRtYXAsDQpJbmRleDogTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNp
b24gNTc3MjEpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwxNSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRk
IHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBmYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIFNraXBwZWQgb24g
YWxsIHBsYXRmb3JtcyBidXQgV2luCisKIDIwMTAtMDQtMTYgIE1hY2llaiBTdGFjaG93aWFrICA8
bWpzQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3Bl
cnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACittYWluIGZyYW1l
IC0gZGlkQ2hhbmdlSWNvbnMKK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9v
bGRmYXZpY29uLmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9u
ZXdmYXZpb24uaWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5p
Y28KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAko
cmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0
bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+
T3JpZ2luYWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJp
bWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNj
cmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5j
cmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2Rpdicp
OworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChk
aXYpOworfQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsKKyAgICB2YXIgZG9jSGVh
ZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgdmFyIGxp
bmtzID0gZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOworICAgIGZvciAodmFy
IGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBsaW5rID0gbGlua3Nb
aV07CisgICAgICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29uIiAmJiBsaW5rLnJlbD09InNo
b3J0Y3V0IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3ZlQ2hpbGQobGluayk7CisgICAg
ICAgIGJyZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBhdCBtb3N0LgorICAgICAgfQor
ICAgIH0KKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAg
ICBsaW5rLnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBp
Y29uIjsKKyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQo
bGluayk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0
VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4
dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAg
ICB9CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilb
MF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworICAgIGRlYnVnT3V0cHV0
ICgnT3JpZ2luYWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOworICAgIG5ld1VSTCA9ICdodHRw
Oi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5l
dyBpY29uIFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2SWNvbihuZXdVUkwpOworICAg
IGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVs
ZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAgIGRlYnVnT3V0cHV0ICgnTmV3
IGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9k
eSBvbmxvYWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9i
b2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9l
eHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNTc3OTQpCisrKyBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTI3ODQsNiArMjc4NCw4IEBAIEJVRzQxNDU1IFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5
L2xvY2EKIC8vIENhdXNlZCBieSByNTc2OTUuIFdpbGwgaW52ZXN0aWdhdGUuCiBCVUdfSklBTkxJ
IExJTlVYIDogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNs
aWNlZC1maWxlLmh0bWwgPSBURVhUCiAKK0JVRzMzODEyIFNLSVAgOiBmYXN0L2RvbS9pY29uLXVy
bC1wcm9wZXJ0eS5odG1sID0gRkFJTAorCiAvLyBGYWlsaW5nIHdpdGggd2Via2l0IHJvbGwgNTc2
NTkgLT4gNTc2NzcuCiBCVUdBSldPTkcgTElOVVggREVCVUcgOiBmYXN0L2NhbnZhcy90b0RhdGFV
Ukwtbm9EYXRhLmh0bWwgPSBDUkFTSAogQlVHQUpXT05HIFdJTiBMSU5VWCA6IGZhc3QvYmFja2dy
b3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtMS5odG1sID0gSU1BR0UgUEFTUwpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNiArMjE3MCw3IEBAIGZhc3Qv
ZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUtZGlzcGxheS5odG0KIGZhc3QvZG9tL2RvbS1wYXJzZS1z
ZXJpYWxpemUuaHRtbAogZmFzdC9kb20vZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKIGZhc3Qv
ZG9tL2djLTEwLmh0bWwKK2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKIGZhc3QvZG9t
L2ltcG9ydE5vZGVIVE1MLmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5vZGVYTUwueGh0bWwKIGZhc3Qv
ZG9tL2lubmVyLXRleHQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBw
ZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlz
aW9uIDU3NzIxKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcg
Y29weSkKQEAgLTE1OCwzICsxNTgsNiBAQCBmYXN0L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3Jl
ZC1hbmQtdGhlCiAjIE1hYyBwb3J0IGRvZXNuJ3QgcHV0IHRleHQvaHRtbCBvbiB0aGUgcGFzdGVi
b2FyZCBmb3IgYXBwIGNvbXBhdGliaWxpdHk6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTg5MwogZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLmh0
bWwKIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAorCisjIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorZmFzdC9kb20vaWNvbi11cmwtcHJvcGVy
dHkuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1NzcyMSkKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3OTgs
NiArMjc5OCw3IEBAIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvaW5zZXJ0LXBhcnNlci0KIGZh
c3QvZG9tL0hUTUxUYWJsZUVsZW1lbnQvY29sU3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVF
bGVtZW50L2NyZWF0ZUNhcHRpb24uaHRtbAogZmFzdC9kb20vSFRNTFRleHRBcmVhRWxlbWVudC9y
ZXNldC10ZXh0YXJlYS5odG1sCitmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiBmYXN0
L2RvbS9pbXBvcnROb2RlSFRNTC5odG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlWE1MLnhodG1sCiBm
YXN0L2RvbS9pbm5lci10ZXh0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53636</attachid>
            <date>2010-04-18 14:20:55 -0700</date>
            <delta_ts>2010-04-20 14:43:41 -0700</delta_ts>
            <desc>Another collision</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>32562</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0xNyAgQWxleGV5IFByb3NrdXJ5YWtvdiAg
PGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBZGFtIEJhcnRoLgpJbmRleDog
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3Vt
ZW50LmNwcAkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQ0ODQsNiArNDQ4NCw4IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEljb25V
UkwoY29uc3QgU3RyaW5nJiAKICAgICAgICAgbV9pY29uVVJMID0gaWNvblVSTDsKICAgICBlbHNl
IGlmICghdHlwZS5pc0VtcHR5KCkpCiAgICAgICAgIG1faWNvblVSTCA9IGljb25VUkw7CisgICAg
aWYgKEZyYW1lKiBmID0gZnJhbWUoKSkKKyAgICAgICAgZi0+bG9hZGVyKCktPnNldEljb25VUkwo
bV9pY29uVVJMKTsKIH0KIAogdm9pZCBEb2N1bWVudDo6c2V0VXNlU2VjdXJlS2V5Ym9hcmRFbnRy
eVdoZW5BY3RpdmUoYm9vbCB1c2VzU2VjdXJlS2V5Ym9hcmQpCkluZGV4OiBXZWJDb3JlL2xvYWRl
ci9Eb2N1bWVudExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuY3BwCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50
TG9hZGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjA3LDYgKzYwNywxNyBAQCB2b2lkIERvY3Vt
ZW50TG9hZGVyOjpzZXRUaXRsZShjb25zdCBTdHJpCiAgICAgfQogfQogCit2b2lkIERvY3VtZW50
TG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sKKyAgICBpZiAoaWNv
blVSTC5pc0VtcHR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChtX3BhZ2VJY29uVVJM
ICE9IGljb25VUkwpIHsKKyAgICAgICAgbV9wYWdlSWNvblVSTCA9IGljb25VUkw7CisgICAgICAg
IGZyYW1lTG9hZGVyKCktPmRpZENoYW5nZUljb25zKHRoaXMpOworICAgIH0KK30KKwogS1VSTCBE
b2N1bWVudExvYWRlcjo6dXJsRm9ySGlzdG9yeSgpIGNvbnN0CiB7CiAgICAgLy8gUmV0dXJuIHRo
ZSBVUkwgdG8gYmUgdXNlZCBmb3IgaGlzdG9yeSBhbmQgQi9GIGxpc3QuCkluZGV4OiBXZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0Rv
Y3VtZW50TG9hZGVyLmgJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRMb2FkZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgYm9vbCBpc0xvYWRpbmdJbkFQSVNlbnNlKCkgY29uc3Q7CiAgICAg
ICAgIHZvaWQgc2V0UHJpbWFyeUxvYWRDb21wbGV0ZShib29sKTsKICAgICAgICAgdm9pZCBzZXRU
aXRsZShjb25zdCBTdHJpbmcmKTsKKyAgICAgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmlu
ZyYpOwogICAgICAgICBjb25zdCBTdHJpbmcmIG92ZXJyaWRlRW5jb2RpbmcoKSBjb25zdCB7IHJl
dHVybiBtX292ZXJyaWRlRW5jb2Rpbmc7IH0KIAogI2lmIFBMQVRGT1JNKE1BQykKQEAgLTE1MCw2
ICsxNTEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICAgICAgdm9pZCBzdG9wUmVjb3Jk
aW5nUmVzcG9uc2VzKCk7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgdGl0bGUoKSBjb25zdCB7IHJl
dHVybiBtX3BhZ2VUaXRsZTsgfQorICAgICAgICBjb25zdCBTdHJpbmcmIGljb25VUkwoKSBjb25z
dCB7IHJldHVybiBtX3BhZ2VJY29uVVJMOyB9CiAKICAgICAgICAgS1VSTCB1cmxGb3JIaXN0b3J5
KCkgY29uc3Q7CiAgICAgICAgIGJvb2wgdXJsRm9ySGlzdG9yeVJlZmxlY3RzRmFpbHVyZSgpIGNv
bnN0OwpAQCAtMjU3LDYgKzI1OSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgYm9v
bCBtX2lzQ2xpZW50UmVkaXJlY3Q7CiAKICAgICAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOworICAg
ICAgICBTdHJpbmcgbV9wYWdlSWNvblVSTDsKIAogICAgICAgICBTdHJpbmcgbV9vdmVycmlkZUVu
Y29kaW5nOwogCkluZGV4OiBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBXZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkocmV2aXNpb24gNTc3OTgpCisrKyBX
ZWJDb3JlL2xvYWRlci9FbXB0eUNsaWVudHMuaAkod29ya2luZyBjb3B5KQpAQCAtMjEyLDYgKzIx
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmlu
ZyYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpIHsgfQogICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYp
IHsgfQogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFJlc291cmNl
RXJyb3ImKSB7IH0KSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDU3Nzk4KQor
KysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOTcy
LDYgKzM5NzIsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2V0VGl0bGUoY29uc3QgU3RyaW5nJgog
ICAgIGRvY3VtZW50TG9hZGVyKCktPnNldFRpdGxlKHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxv
YWRlcjo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIGljb25VUkwpCit7CisgICAgZG9jdW1lbnRM
b2FkZXIoKS0+c2V0SWNvblVSTChpY29uVVJMKTsKK30KKwogS1VSTCBGcmFtZUxvYWRlcjo6b3Jp
Z2luYWxSZXF1ZXN0VVJMKCkgY29uc3QKIHsKICAgICByZXR1cm4gYWN0aXZlRG9jdW1lbnRMb2Fk
ZXIoKS0+b3JpZ2luYWxSZXF1ZXN0KCkudXJsKCk7CkBAIC00MDg5LDYgKzQwOTQsMTIgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkQ2hhbmdlVGl0bGUoRG9jdW1lbgogICAgIH0KIH0KIAordm9pZCBG
cmFtZUxvYWRlcjo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKK3sKKyAg
ICBpZiAobG9hZGVyID09IG1fZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIG1fY2xpZW50LT5kaXNw
YXRjaERpZENoYW5nZUljb25zKCk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXI6OmRpc3BhdGNoRGlk
Q29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKG1fY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCkK
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29y
ZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJDb3JlL2xvYWRl
ci9GcmFtZUxvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xODcsNiArMTg3LDcgQEAgcHVibGlj
OgogICAgIGJvb2wgc3ViZnJhbWVJc0xvYWRpbmcoKSBjb25zdDsKICAgICB2b2lkIHdpbGxDaGFu
Z2VUaXRsZShEb2N1bWVudExvYWRlciopOwogICAgIHZvaWQgZGlkQ2hhbmdlVGl0bGUoRG9jdW1l
bnRMb2FkZXIqKTsKKyAgICB2b2lkIGRpZENoYW5nZUljb25zKERvY3VtZW50TG9hZGVyKik7CiAK
ICAgICBGcmFtZUxvYWRUeXBlIGxvYWRUeXBlKCkgY29uc3Q7CiAgICAgQ2FjaGVQb2xpY3kgc3Vi
cmVzb3VyY2VDYWNoZVBvbGljeSgpIGNvbnN0OwpAQCAtMzA1LDYgKzMwNiw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGNhbmNlbEFuZENsZWFyKCk7CiAKICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0
cmluZyYpOworICAgIHZvaWQgc2V0SWNvblVSTChjb25zdCBTdHJpbmcmKTsKIAogICAgIHZvaWQg
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKFBhc3NSZWZQdHI8Q2FjaGVkUGFnZT4pOwogICAgIGJvb2wg
aXNMb2FkaW5nRnJvbUNhY2hlZFBhZ2UoKSBjb25zdCB7IHJldHVybiBtX2xvYWRpbmdGcm9tQ2Fj
aGVkUGFnZTsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1
Nzc5OCkKKysrIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNiw2ICsxMjYsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCkgPSAwOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpID0gMDsKICAgICAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpID0gMDsK
KyAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKSA9IDA7CiAgICAgICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VF
cnJvciYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29u
c3QgUmVzb3VyY2VFcnJvciYpID0gMDsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNTc3OTgp
CisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MjEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG5v
dGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAg
ICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3Rp
ZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkgdGhlIGNsaWVu
dC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2
ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAg
ICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xp
ZW50OjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1w
bC5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5oOgor
CiAyMDEwLTA0LTE3ICBWYW5nZWxpcyBLb2trZXZpcyAgPHZhbmdlbGlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXQvY2hy
b21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYg
KzE5Miw5IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcGFnZSB0aXRsZSBpcyBhdmFpbGFibGUuCiAg
ICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZShXZWJGcmFtZSosIGNvbnN0IFdlYlN0cmlu
ZyYgdGl0bGUpIHsgfQogCisgICAgLy8gVGhlIGljb25zIGZvciB0aGUgcGFnZSBoYXZlIGNoYW5n
ZWQuCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUljb25zKFdlYkZyYW1lKikgeyB9CisKICAg
ICAvLyBUaGUgZnJhbWUncyBkb2N1bWVudCBmaW5pc2hlZCBsb2FkaW5nLgogICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWQoV2ViRnJhbWUqKSB7IH0KIApJbmRleDogV2ViS2l0
L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkocmV2aXNpb24gNTc3
OTgpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTcyNiw2ICs3MjYsMTIgQEAgdm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkUgogICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkUmVjZWl2
ZVRpdGxlKG1fd2ViRnJhbWUsIHRpdGxlKTsKIH0KIAordm9pZCBGcmFtZUxvYWRlckNsaWVudElt
cGw6OmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChtX3dlYkZyYW1lLT5jbGll
bnQoKSkKKyAgICAgICAgbV93ZWJGcmFtZS0+Y2xpZW50KCktPmRpZENoYW5nZUljb25zKG1fd2Vi
RnJhbWUpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1wbDo6ZGlzcGF0Y2hEaWRDb21t
aXRMb2FkKCkKIHsKICAgICBXZWJWaWV3SW1wbCogd2VidmlldyA9IG1fd2ViRnJhbWUtPnZpZXdJ
bXBsKCk7CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBs
LmgJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNs
aWVudEltcGwuaAkod29ya2luZyBjb3B5KQpAQCAtMTAyLDYgKzEwMiw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1YWwgdm9p
ZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRp
c3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUpOworICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZh
aWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwogICAgIHZp
cnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJy
b3ImKTsKSW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9n
dGsvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxk
YXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiBhbmQgYnVnIFVSTCAoT09Q
UyEpCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6
CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oOgor
CiAyMDEwLTA0LTE3ICBBbGVqYW5kcm8gRy4gQ2FzdHJvICA8YWxleEBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IFhhbiBMb3Blei4KSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCShyZXZpc2lvbiA1Nzc5OCkK
KysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC03NTMsNiArNzUzLDExIEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkUmVjZWkKICAgICB9CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkQ2hhbmdlSWNvbnMoKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIHZv
aWQgRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYg
KG1fbG9hZGluZ0Vycm9yUGFnZSkKSW5kZXg6IFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCSh3b3JraW5nIGNvcHkpCkBA
IC04Miw2ICs4Miw3IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CisgICAgICAgIHZpcnR1YWwg
dm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktp
dC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdC9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUg
IDxkYXZlbW9vcmVAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBm
b3IgYSBwYWdlIGFyZSBjaGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRo
ZSBEb2N1bWVudCBvYmplY3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2ls
bAorICAgICAgICBub3RpZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9h
ZGVyQ2xpZW50IHdpbGwKKyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hE
aWRDaGFuZ2VJY29ucygpLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuaDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVu
dC5tbToKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKwogMjAxMC0wNC0xNSAgR2F2aW4gQmFycmFjbG91Z2ggIDxiYXJyYWNsb3VnaEBhcHBs
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2FtIFdlaW5pZyAmIE9saXZlciBIdW50LgpJ
bmRleDogV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTk5LDYgKzk5LDcgQEAgcHJpdmF0
ZToKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlSWNvbigpOwogICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgdGl0bGUp
OworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENoYW5nZUljb25zKCk7CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYpOwog
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlRXJyb3ImKTsKSW5kZXg6IFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJG
cmFtZUxvYWRlckNsaWVudC5tbQkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC01OTMs
NiArNTkzLDExIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmUKICAg
ICAgICAgQ2FsbEZyYW1lTG9hZERlbGVnYXRlKGltcGxlbWVudGF0aW9ucy0+ZGlkUmVjZWl2ZVRp
dGxlRm9yRnJhbWVGdW5jLCB3ZWJWaWV3LCBAc2VsZWN0b3Iod2ViVmlldzpkaWRSZWNlaXZlVGl0
bGU6Zm9yRnJhbWU6KSwgKE5TU3RyaW5nICopdGl0bGUsIG1fd2ViRnJhbWUuZ2V0KCkpOwogfQog
Cit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sK
KyAgICAgLy8gRklYTUU6IEltcGxlbWVudCB0aGlzIHRvIGFsbG93IGNvbnRhaW5lciB0byB1cGRh
dGUgZmF2aWNvbi4KK30KKwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCkKIHsKICAgICAvLyBUZWxsIHRoZSBjbGllbnQgd2UndmUgY29tbWl0dGVkIHRo
aXMgVVJMLgpJbmRleDogV2ViS2l0L3F0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
cXQvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdC9xdC9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMCBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dFF0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlkQ2hhbmdlVGl0bGUpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50UXQuaDoKKwogMjAxMC0wNC0xOCAgUm9iZXJ0IEhvZ2FuICA8cm9iZXJ0QHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gSGF1c21hbm4uCkluZGV4OiBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCShyZXZpc2lvbiA1
Nzc5OCkKKysrIFdlYktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzgxLDYgKzM4MSwxOSBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xp
ZW50UXQ6OmRpc3BhdGNoRGlkUmVjCiB9CiAKIAordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0Ojpk
aXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJh
Y2tzKQorICAgICAgICBwcmludGYoIiVzIC0gZGlkQ2hhbmdlSWNvbnNcbiIsIHFQcmludGFibGUo
ZHJ0RGVzY3JpcHRpb25TdWl0YWJsZUZvclRlc3RSZXN1bHQobV9mcmFtZSkpKTsKKworICAgIGlm
ICghbV93ZWJGcmFtZSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gRklYTUU6IFRvIGJlIG5v
dGlmaWVkIG9mIGNoYW5naW5nIGljb24gVVJMUyBhZGQgbm90aWZpY2F0aW9uCisgICAgLy8gZW1p
dCBpY29uc0NoYW5nZWQoKTsKK30KKworCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3Bh
dGNoRGlkQ29tbWl0TG9hZCgpCiB7CiAgICAgaWYgKGR1bXBGcmFtZUxvYWRlckNhbGxiYWNrcykK
QEAgLTUyNSw3ICs1MzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OndpbGxDaGFuZ2VU
aXRsCiB9CiAKIAotdm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShEb2N1
bWVudExvYWRlciAqKQordm9pZCBGcmFtZUxvYWRlckNsaWVudFF0OjpkaWRDaGFuZ2VUaXRsZShE
b2N1bWVudExvYWRlciopCiB7CiAgICAgLy8gbm8gbmVlZCBmb3IsIGRpc3BhdGNoRGlkUmVjZWl2
ZVRpdGxlIGlzIHRoZSByaWdodCBjYWxsYmFjawogfQpJbmRleDogV2ViS2l0L3F0L1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQvV2Vi
Q29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5oCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdl
YktpdC9xdC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTEwOSw2ICsxMDksNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBTdHJpbmcmIHRpdGxlKTsKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsUHJvdmlzaW9uYWxMb2FkKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKICAgICAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwyMyBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBJbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0
ZVByaXZhdGUyLmlkbDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHA6CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFu
Z2VJY29ucyk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQu
aDoKKyAgICAgICAgKiBXZWJGcmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6ZGlkQ2hhbmdl
SWNvbnMpOgorICAgICAgICAqIFdlYkZyYW1lLmg6CisKIDIwMTAtMDQtMTYgIEdhdmluIEJhcnJh
Y2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoV2luZG93cyBidWlsZCBmaXgpLgpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHJldmlzaW9uIDU3Nzk4KQor
KysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1NDQsNiArMTU0
NCwxMSBAQCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVudExvCiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFtZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1l
bnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVkKCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6
OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAog
ewogICAgIHJldHVybiBXZWJWaWV3OjpjYW5IYW5kbGVSZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDog
V2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vV2ViRnJhbWUu
aAkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJLaXQvd2luL1dlYkZyYW1lLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTI5MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldE1haW5G
cmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRs
ZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VU
aXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOworICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFu
Z2VJY29ucyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAgIHZpcnR1YWwgYm9vbCBjYW5I
YW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpIGNvbnN0OwogICAg
IHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiBNSU1F
VHlwZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJlcHJlc2VudGF0aW9uRXhpc3RzRm9yVVJM
U2NoZW1lKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgVVJMU2NoZW1lKSBjb25zdDsKSW5kZXg6IFdl
YktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMi5pZGwKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2VzL0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVBy
aXZhdGUyLmlkbAkocmV2aXNpb24gNTc3OTgpCisrKyBXZWJLaXQvd2luL0ludGVyZmFjZXMvSVdl
YkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01Miw0ICs1
Miw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlMiAKICAgICBIUkVT
VUxUIGRpZFB1c2hTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3
LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogICAgIEhSRVNVTFQgZGlkUmVwbGFjZVN0YXRlV2l0
aGluUGFnZUZvckZyYW1lKFtpbl0gSVdlYlZpZXcqIHdlYlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBm
cmFtZSk7CiAgICAgSFJFU1VMVCBkaWRQb3BTdGF0ZVdpdGhpblBhZ2VGb3JGcmFtZShbaW5dIElX
ZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOworICAgIEhSRVNVTFQgZGlk
Q2hhbmdlSWNvbnMoW2luXSBJV2ViVmlldyogd2ViVmlldywgW2luXSBJV2ViRnJhbWUqIGZyYW1l
KTsKKwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3Miw2
ICszNzIsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZQogICAg
ICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmco
dGl0bGUpLCBtX3dlYkZyYW1lKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlz
cGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgV2ViVmlldyogd2ViVmlldyA9IG1fd2ViRnJh
bWUtPndlYlZpZXcoKTsKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4g
ZnJhbWVMb2FkRGVsZWdhdGVQcml2OworICAgIGlmIChGQUlMRUQod2ViVmlldy0+ZnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVs
ZWdhdGVQcml2KQorICAgICAgICByZXR1cm47CisKKyAgICBDT01QdHI8SVdlYkZyYW1lTG9hZERl
bGVnYXRlUHJpdmF0ZTI+IGZyYW1lTG9hZERlbGVnYXRlUHJpdjIoUXVlcnksIGZyYW1lTG9hZERl
bGVnYXRlUHJpdik7CisgICAgaWYgKCFmcmFtZUxvYWREZWxlZ2F0ZVByaXYyKQorICAgICAgICBy
ZXR1cm47CisgICAgICAgIAorICAgIGZyYW1lTG9hZERlbGVnYXRlUHJpdjItPmRpZENoYW5nZUlj
b25zKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAgIFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dl
YkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9y
dC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdC93aW4v
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAt
NzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2
ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJD
b3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
OwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBXZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdl
YktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDEw
LTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdCBzdXBwb3J0IGZv
ciBpY29uIGNoYW5nZXMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29u
dHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5b3V0VGVzdENv
bnRyb2xsZXIpOgorICAgICAgICAoZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2spOgorICAgICAgICAo
TGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0aW9ucyk6CisgICAgICAgICogRHVtcFJl
bmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoKKyAgICAgICAgKExheW91dFRlc3RDb250
cm9sbGVyOjpkdW1wSWNvbkNoYW5nZXMpOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6
OnNldER1bXBJY29uQ2hhbmdlcyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1l
TG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1lTG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJ
Y29ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6
CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaDoKKyAgICAgICAgKFdpbkxhdW5j
aGVyV2ViSG9zdDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAyMDEwLTA0LTE4ICBFcmljIFNlaWRlbCAg
PGVyaWNAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXhpbmcgdGhlIFF0IGJv
dC4KSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVy
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0
Q29udHJvbGxlci5jcHAJKHJldmlzaW9uIDU3Nzk4KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRl
clRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1
Niw3IEBAIExheW91dFRlc3RDb250cm9sbGVyOjpMYXlvdXRUZXN0Q29udHJvbGwKICAgICAsIG1f
ZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZShmYWxzZSkKICAgICAsIG1fZHVtcFN0YXR1c0NhbGxiYWNr
cyhmYWxzZSkKICAgICAsIG1fZHVtcFRpdGxlQ2hhbmdlcyhmYWxzZSkKKyAgICAsIG1fZHVtcElj
b25DaGFuZ2VzKGZhbHNlKQogICAgICwgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soZmFsc2Up
CiAgICAgLCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZShmYWxzZSkKICAgICAsIG1fY2FsbENsb3Nl
T25XZWJWaWV3cyh0cnVlKQpAQCAtMTg3LDYgKzE4OCwxMyBAQCBzdGF0aWMgSlNWYWx1ZVJlZiBk
dW1wVGl0bGVDaGFuZ2VzQ2FsbGJhCiAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNv
bnRleHQpOwogfQogCitzdGF0aWMgSlNWYWx1ZVJlZiBkdW1wSWNvbkNoYW5nZXNDYWxsYmFjayhK
U0NvbnRleHRSZWYgY29udGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRo
aXNPYmplY3QsIHNpemVfdCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50
c1tdLCBKU1ZhbHVlUmVmKiBleGNlcHRpb24pCit7CisgICAgTGF5b3V0VGVzdENvbnRyb2xsZXIq
IGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxMYXlvdXRUZXN0Q29udHJvbGxlcio+KEpTT2JqZWN0
R2V0UHJpdmF0ZSh0aGlzT2JqZWN0KSk7CisgICAgY29udHJvbGxlci0+c2V0RHVtcEljb25DaGFu
Z2VzKHRydWUpOworICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKK30K
Kwogc3RhdGljIEpTVmFsdWVSZWYgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2soSlNDb250
ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2Jq
ZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwg
SlNWYWx1ZVJlZiogZXhjZXB0aW9uKQogewogICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250
cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFBy
aXZhdGUodGhpc09iamVjdCkpOwpAQCAtMTQ5MCw2ICsxNDk4LDcgQEAgSlNTdGF0aWNGdW5jdGlv
biogTGF5b3V0VGVzdENvbnRyb2xsZXI6OgogICAgICAgICB7ICJkdW1wU291cmNlQXNXZWJBcmNo
aXZlIiwgZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZUNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0
ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsg
ImR1bXBTdGF0dXNDYWxsYmFja3MiLCBkdW1wU3RhdHVzQ2FsbGJhY2tzQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiZHVtcFRpdGxlQ2hhbmdlcyIsIGR1bXBUaXRsZUNoYW5nZXNDYWxsYmFj
aywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9u
dERlbGV0ZSB9LAorICAgICAgICB7ICJkdW1wSWNvbkNoYW5nZXMiLCBkdW1wSWNvbkNoYW5nZXND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wV2lsbENhY2hlUmVzcG9uc2UiLCBkdW1w
V2lsbENhY2hlUmVzcG9uc2VDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8
IGtKU1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbGVtZW50RG9l
c0F1dG9Db21wbGV0ZUZvckVsZW1lbnRXaXRoSWQiLCBlbGVtZW50RG9lc0F1dG9Db21wbGV0ZUZv
ckVsZW1lbnRXaXRoSWRDYWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtK
U1Byb3BlcnR5QXR0cmlidXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJlbmNvZGVIb3N0TmFt
ZSIsIGVuY29kZUhvc3ROYW1lQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKSW5kZXg6IFdlYktpdFRvb2xzL0R1
bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0
VG9vbHMvRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkocmV2aXNpb24gNTc3
OTgpCisrKyBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xNTYsNiArMTU2LDkgQEAgcHVibGljOgogICAgIGJvb2wgZHVt
cFRpdGxlQ2hhbmdlcygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFRpdGxlQ2hhbmdlczsgfQogICAg
IHZvaWQgc2V0RHVtcFRpdGxlQ2hhbmdlcyhib29sIGR1bXBUaXRsZUNoYW5nZXMpIHsgbV9kdW1w
VGl0bGVDaGFuZ2VzID0gZHVtcFRpdGxlQ2hhbmdlczsgfQogCisgICAgYm9vbCBkdW1wSWNvbkNo
YW5nZXMoKSBjb25zdCB7IHJldHVybiBtX2R1bXBJY29uQ2hhbmdlczsgfQorICAgIHZvaWQgc2V0
RHVtcEljb25DaGFuZ2VzKGJvb2wgZHVtcEljb25DaGFuZ2VzKSB7IG1fZHVtcEljb25DaGFuZ2Vz
ID0gZHVtcEljb25DaGFuZ2VzOyB9CisKICAgICBib29sIGR1bXBWaXNpdGVkTGlua3NDYWxsYmFj
aygpIGNvbnN0IHsgcmV0dXJuIG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgdm9p
ZCBzZXREdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soYm9vbCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJh
Y2spIHsgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2sgPSBkdW1wVmlzaXRlZExpbmtzQ2FsbGJh
Y2s7IH0KICAgICAKQEAgLTI3Myw2ICsyNzYsNyBAQCBwcml2YXRlOgogICAgIGJvb2wgbV9kdW1w
U291cmNlQXNXZWJBcmNoaXZlOwogICAgIGJvb2wgbV9kdW1wU3RhdHVzQ2FsbGJhY2tzOwogICAg
IGJvb2wgbV9kdW1wVGl0bGVDaGFuZ2VzOworICAgIGJvb2wgbV9kdW1wSWNvbkNoYW5nZXM7CiAg
ICAgYm9vbCBtX2R1bXBWaXNpdGVkTGlua3NDYWxsYmFjazsKICAgICBib29sIG1fZHVtcFdpbGxD
YWNoZVJlc3BvbnNlOwogICAgIGJvb2wgbV9jYWxsQ2xvc2VPbldlYlZpZXdzOwpJbmRleDogV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUu
Y3BwCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9G
cmFtZUxvYWREZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsxODksMTYgQEAg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBGcmFtZUxvYWREZWxlZwogICAgIHJldHVybiBTX09L
OwogfQogCitIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIEZyYW1lTG9hZERlbGVnYXRlOjpkaWRD
aGFuZ2VJY29ucygKKyAgICAvKiBbaW5dICovIElXZWJWaWV3KiB3ZWJWaWV3LAorICAgIC8qIFtp
bl0gKi8gSVdlYkZyYW1lKiBmcmFtZSkKK3sKKyAgICBpZiAoIWRvbmUgJiYgZ0xheW91dFRlc3RD
b250cm9sbGVyLT5kdW1wSWNvbkNoYW5nZXMoKSkKKyAgICAgICAgcHJpbnRmKCIlcyAtIGRpZENo
YW5nZUljb25zXG4iLCBkZXNjcmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChmcmFtZSkuY19z
dHIoKSk7CisKKyAgICByZXR1cm4gU19PSzsKK30KKwogdm9pZCBGcmFtZUxvYWREZWxlZ2F0ZTo6
cHJvY2Vzc1dvcmsoKQogewogICAgIC8vIGlmIGFub3RoZXIgbG9hZCBzdGFydGVkLCB0aGVuIHdh
aXQgZm9yIGl0IHRvIGNvbXBsZXRlLgpJbmRleDogV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJl
bmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHJldmlzaW9uIDU3Nzk4KQorKysgV2Vi
S2l0VG9vbHMvRHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTc0LDYgKzc0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgLyogW2luXSAqLyBCU1RS
IHRpdGxlLAogICAgICAgICAvKiBbaW5dICovIElXZWJGcmFtZSAqZnJhbWUpOwogCisgICAgdmly
dHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKAorICAgICAgICAv
KiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBbaW5dICovIElXZWJGcmFt
ZSAqZnJhbWUpOworCiAgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZFJl
Y2VpdmVJY29uKCAKICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKICAgICAg
ICAgLyogW2luXSAqLyBPTEVfSEFORExFIGltYWdlLApJbmRleDogV2ViS2l0VG9vbHMvV2luTGF1
bmNoZXIvV2luTGF1bmNoZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXRUb29scy9XaW5MYXVuY2hl
ci9XaW5MYXVuY2hlci5oCShyZXZpc2lvbiA1Nzc5OCkKKysrIFdlYktpdFRvb2xzL1dpbkxhdW5j
aGVyL1dpbkxhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxLDYgKzYxLDEwIEBAIHB1Ymxp
YzoNCiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwNCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYkZyYW1lICpmcmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KICAgICANCisgICAgdmlydHVhbCBI
UkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUljb25zKA0KKyAgICAgICAgLyogW2lu
XSAqLyBJV2ViVmlldyAqd2ViVmlldywNCisgICAgICAgIC8qIFtpbl0gKi8gSVdlYkZyYW1lICpm
cmFtZSkgeyByZXR1cm4gU19PSzsgfQ0KKw0KICAgICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9E
Q0FMTFRZUEUgZGlkUmVjZWl2ZUljb24oIA0KICAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAq
d2ViVmlldywNCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBoQml0bWFwLA0KSW5kZXg6
IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDU3Nzk4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZCB0ZXN0IGZvciBpY29uIGNoYW5nZSBub3RpZmljYXRpb25zLgorCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorCisgICAgICAg
ICogZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBT
a2lwcGVkIG9uIGFsbCBwbGF0Zm9ybXMgYnV0IFdpbgorCiAyMDEwLTA0LTE4ICBSb2JlcnQgSG9n
YW4gIDxyb2JlcnRAd2Via2l0Lm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIGZpeCB0byBwaXhl
bCBkaWZmZXJlbmNlcyBpbiB1bnNraXBwZWQgbGF5b3V0IHRlc3RzLgpJbmRleDogTGF5b3V0VGVz
dHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHktZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw0IEBACittYWluIGZyYW1lIC0gZGlkQ2hh
bmdlSWNvbnMKK09yaWdpbmFsIGljb25VUkwgaXM6IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29u
LmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24u
aWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rlc3QuY29tL25ld2Zhdmlvbi5pY28KSW5kZXg6
IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlz
aW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+T3JpZ2luYWwg
VGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWlj
b24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbyIvPgorPHNjcmlwdD4KK2Z1
bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAgIHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVn
RGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRp
di5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQor
CitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwpIHsKKyAgICB2YXIgZG9jSGVhZCA9IGRvY3Vt
ZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF07CisgICAgdmFyIGxpbmtzID0gZG9j
SGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGluayIpOworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAgIHZhciBsaW5rID0gbGlua3NbaV07CisgICAg
ICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29uIiAmJiBsaW5rLnJlbD09InNob3J0Y3V0IGlj
b24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3ZlQ2hpbGQobGluayk7CisgICAgICAgIGJyZWFr
OyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBhdCBtb3N0LgorICAgICAgfQorICAgIH0KKyAg
ICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpbmsiKTsKKyAgICBsaW5rLnR5
cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5rLnJlbCA9ICJzaG9ydGN1dCBpY29uIjsKKyAg
ICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRvY0hlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9
CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRy
b2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAg
ICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wSWNvbkNoYW5nZXMoKTsKKyAgICB9CisgICAg
aWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0RWxl
bWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVmOworICAgIGRlYnVnT3V0cHV0ICgnT3JpZ2lu
YWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOworICAgIG5ld1VSTCA9ICdodHRwOi8vdGVzdC5j
b20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdPdXRwdXQgKCdTZXR0aW5nIG5ldyBpY29uIFVS
TCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2SWNvbihuZXdVUkwpOworICAgIGljb25VUkwg
PSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlU
YWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAgIGRlYnVnT3V0cHV0ICgnTmV3IGljb25VUkwg
aXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9
J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVnRGl2Jz4KKzwvZGl2PgorPC9ib2R5PgorPC9o
dG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlv
bnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3Rf
ZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNTc3OTgpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3ODQs
NiArMjc4NCw4IEBAIEJVRzQxNDU1IFNLSVAgOiBodHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2EKIC8v
IENhdXNlZCBieSByNTc2OTUuIFdpbGwgaW52ZXN0aWdhdGUuCiBCVUdfSklBTkxJIExJTlVYIDog
aHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5kLWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxl
Lmh0bWwgPSBURVhUCiAKK0JVRzMzODEyIFNLSVAgOiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0
eS5odG1sID0gRkFJTAorCiAvLyBGYWlsaW5nIHdpdGggd2Via2l0IHJvbGwgNTc2NTkgLT4gNTc2
NzcuCiBCVUdBSldPTkcgTElOVVggREVCVUcgOiBmYXN0L2NhbnZhcy90b0RhdGFVUkwtbm9EYXRh
Lmh0bWwgPSBDUkFTSAogQlVHQUpXT05HIFdJTiBMSU5VWCA6IGZhc3QvYmFja2dyb3VuZHMvc3Zn
LWFzLWJhY2tncm91bmQtMS5odG1sID0gSU1BR0UgUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L1NraXBwZWQJKHJldmlzaW9uIDU3Nzk4KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAsNiArMjE3MCw3IEBAIGZhc3QvZG9tL2RvbS1w
YXJzZS1zZXJpYWxpemUtZGlzcGxheS5odG0KIGZhc3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUu
aHRtbAogZmFzdC9kb20vZm9jdXMtY29udGVudGVkaXRhYmxlLmh0bWwKIGZhc3QvZG9tL2djLTEw
Lmh0bWwKK2Zhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5v
ZGVIVE1MLmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5vZGVYTUwueGh0bWwKIGZhc3QvZG9tL2lubmVy
LXRleHQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHJldmlzaW9uIDU3Nzk4
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAg
LTE1OCwzICsxNTgsNiBAQCBmYXN0L292ZXJmbG93L3Njcm9sbGJhci1yZXN0b3JlZC1hbmQtdGhl
CiAjIE1hYyBwb3J0IGRvZXNuJ3QgcHV0IHRleHQvaHRtbCBvbiB0aGUgcGFzdGVib2FyZCBmb3Ig
YXBwIGNvbXBhdGliaWxpdHk6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTg5MwogZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLmh0bWwKIGZhc3Qv
ZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwuaHRtbAorCisjIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zMzgxMgorZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkuaHRtbApJ
bmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9Ta2lwcGVkCShyZXZpc2lvbiA1Nzc5OCkKKysrIExheW91dFRl
c3RzL3BsYXRmb3JtL3F0L1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3ODgsNiArMjc4OCw3
IEBAIGZhc3QvZG9tL0hUTUxTdHlsZUVsZW1lbnQvaW5zZXJ0LXBhcnNlci0KIGZhc3QvZG9tL0hU
TUxUYWJsZUVsZW1lbnQvY29sU3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVFbGVtZW50L2Ny
ZWF0ZUNhcHRpb24uaHRtbAogZmFzdC9kb20vSFRNTFRleHRBcmVhRWxlbWVudC9yZXNldC10ZXh0
YXJlYS5odG1sCitmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiBmYXN0L2RvbS9pbXBv
cnROb2RlSFRNTC5odG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlWE1MLnhodG1sCiBmYXN0L2RvbS9p
bm5lci10ZXh0Lmh0bWwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>53967</attachid>
            <date>2010-04-21 10:05:17 -0700</date>
            <delta_ts>2010-04-21 19:28:21 -0700</delta_ts>
            <desc>Resubmitting because last version was reverted incorrectly.</desc>
            <filename>favicons.patch</filename>
            <type>text/plain</type>
            <size>32145</size>
            <attacher name="Dave Moore">davemoore</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Nzk4OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMzEgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hyb21p
dW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBjaGFu
Z2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmplY3Qg
d2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3RpZnkg
dGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwKKyAg
ICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgxMgor
CisgICAgICAgIFRlc3Q6IGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWwKKworICAgICAg
ICAqIGRvbS9Eb2N1bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6c2V0SWNv
blVSTCk6CisgICAgICAgICogbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkRvY3VtZW50TG9hZGVyOjpzZXRJY29uVVJMKToKKyAgICAgICAgKiBsb2FkZXIvRG9j
dW1lbnRMb2FkZXIuaDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyOjppY29uVVJM
KToKKyAgICAgICAgKiBsb2FkZXIvRW1wdHlDbGllbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bXB0eUZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAg
KiBsb2FkZXIvRnJhbWVMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnNldEljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKiBsb2FkZXIvRnJhbWVMb2FkZXIuaDoKKyAgICAgICAgKiBsb2FkZXIv
RnJhbWVMb2FkZXJDbGllbnQuaDoKKwogMjAxMC0wNC0yMSAgWGFuIExvcGV6ICA8eGxvcGV6QGln
YWxpYS5jb20+CiAKICAgICAgICAgVHJ5IHRvIGZpeCBjb21waWxhdGlvbiBvbiBHVEsrIGRlYnVn
IGJvdHMuCkluZGV4OiBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCShyZXZpc2lvbiA1Nzk4OSkKKysrIFdlYkNvcmUvZG9tL0Rv
Y3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQ4NCw2ICs0NDg0LDggQEAgdm9pZCBEb2N1
bWVudDo6c2V0SWNvblVSTChjb25zdCBTdHJpbmcmIAogICAgICAgICBtX2ljb25VUkwgPSBpY29u
VVJMOwogICAgIGVsc2UgaWYgKCF0eXBlLmlzRW1wdHkoKSkKICAgICAgICAgbV9pY29uVVJMID0g
aWNvblVSTDsKKyAgICBpZiAoRnJhbWUqIGYgPSBmcmFtZSgpKQorICAgICAgICBmLT5sb2FkZXIo
KS0+c2V0SWNvblVSTChtX2ljb25VUkwpOwogfQogCiB2b2lkIERvY3VtZW50OjpzZXRVc2VTZWN1
cmVLZXlib2FyZEVudHJ5V2hlbkFjdGl2ZShib29sIHVzZXNTZWN1cmVLZXlib2FyZCkKSW5kZXg6
IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViQ29yZS9s
b2FkZXIvRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsNiArNjA3LDE3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldFRpdGxlKGNvbnN0IFN0cmkKICAgICB9CiB9CiAK
K3ZvaWQgRG9jdW1lbnRMb2FkZXI6OnNldEljb25VUkwoY29uc3QgU3RyaW5nJiBpY29uVVJMKQor
eworICAgIGlmIChpY29uVVJMLmlzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYg
KG1fcGFnZUljb25VUkwgIT0gaWNvblVSTCkgeworICAgICAgICBtX3BhZ2VJY29uVVJMID0gaWNv
blVSTDsKKyAgICAgICAgZnJhbWVMb2FkZXIoKS0+ZGlkQ2hhbmdlSWNvbnModGhpcyk7CisgICAg
fQorfQorCiBLVVJMIERvY3VtZW50TG9hZGVyOjp1cmxGb3JIaXN0b3J5KCkgY29uc3QKIHsKICAg
ICAvLyBSZXR1cm4gdGhlIFVSTCB0byBiZSB1c2VkIGZvciBoaXN0b3J5IGFuZCBCL0YgbGlzdC4K
SW5kZXg6IFdlYkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
Q29yZS9sb2FkZXIvRG9jdW1lbnRMb2FkZXIuaAkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJDb3Jl
L2xvYWRlci9Eb2N1bWVudExvYWRlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDksNiArMTA5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBib29sIGlzTG9hZGluZ0luQVBJU2Vuc2Uo
KSBjb25zdDsKICAgICAgICAgdm9pZCBzZXRQcmltYXJ5TG9hZENvbXBsZXRlKGJvb2wpOwogICAg
ICAgICB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYpOworICAgICAgICB2b2lkIHNldEljb25V
UkwoY29uc3QgU3RyaW5nJik7CiAgICAgICAgIGNvbnN0IFN0cmluZyYgb3ZlcnJpZGVFbmNvZGlu
ZygpIGNvbnN0IHsgcmV0dXJuIG1fb3ZlcnJpZGVFbmNvZGluZzsgfQogCiAjaWYgUExBVEZPUk0o
TUFDKQpAQCAtMTUwLDYgKzE1MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2
b2lkIHN0b3BSZWNvcmRpbmdSZXNwb25zZXMoKTsKICAgICAgICAgY29uc3QgU3RyaW5nJiB0aXRs
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZVRpdGxlOyB9CisgICAgICAgIGNvbnN0IFN0cmluZyYg
aWNvblVSTCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFnZUljb25VUkw7IH0KIAogICAgICAgICBLVVJM
IHVybEZvckhpc3RvcnkoKSBjb25zdDsKICAgICAgICAgYm9vbCB1cmxGb3JIaXN0b3J5UmVmbGVj
dHNGYWlsdXJlKCkgY29uc3Q7CkBAIC0yNTcsNiArMjU5LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogICAgICAgICBib29sIG1faXNDbGllbnRSZWRpcmVjdDsKIAogICAgICAgICBTdHJpbmcgbV9w
YWdlVGl0bGU7CisgICAgICAgIFN0cmluZyBtX3BhZ2VJY29uVVJMOwogCiAgICAgICAgIFN0cmlu
ZyBtX292ZXJyaWRlRW5jb2Rpbmc7CiAKSW5kZXg6IFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCShyZXZpc2lv
biA1Nzk4OSkKKysrIFdlYkNvcmUvbG9hZGVyL0VtcHR5Q2xpZW50cy5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yMTIsNiArMjEyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVJY29uKCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92
aXNpb25hbExvYWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0
bGUoY29uc3QgU3RyaW5nJikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdl
SWNvbnMoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkgeyB9
CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChjb25zdCBS
ZXNvdXJjZUVycm9yJikgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQo
Y29uc3QgUmVzb3VyY2VFcnJvciYpIHsgfQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAkocmV2
aXNpb24gNTc5ODkpCisrKyBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4MDcsNiArMzgwNywxMSBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRUaXRsZShj
b25zdCBTdHJpbmcmCiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+c2V0VGl0bGUodGl0bGUpOwogfQog
Cit2b2lkIEZyYW1lTG9hZGVyOjpzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYgaWNvblVSTCkKK3sK
KyAgICBkb2N1bWVudExvYWRlcigpLT5zZXRJY29uVVJMKGljb25VUkwpOworfQorCiBLVVJMIEZy
YW1lTG9hZGVyOjpvcmlnaW5hbFJlcXVlc3RVUkwoKSBjb25zdAogewogICAgIHJldHVybiBhY3Rp
dmVEb2N1bWVudExvYWRlcigpLT5vcmlnaW5hbFJlcXVlc3QoKS51cmwoKTsKQEAgLTM5MjQsNiAr
MzkyOSwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VUaXRsZShEb2N1bWVuCiAgICAg
fQogfQogCit2b2lkIEZyYW1lTG9hZGVyOjpkaWRDaGFuZ2VJY29ucyhEb2N1bWVudExvYWRlciog
bG9hZGVyKQoreworICAgIGlmIChsb2FkZXIgPT0gbV9kb2N1bWVudExvYWRlcikKKyAgICAgICAg
bV9jbGllbnQtPmRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKK30KKwogdm9pZCBGcmFtZUxvYWRl
cjo6ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCkKIHsKICAgICBpZiAobV9jcmVhdGluZ0luaXRpYWxF
bXB0eURvY3VtZW50KQpJbmRleDogV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5oCShyZXZpc2lvbiA1Nzk4OSkKKysr
IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTE4OSw2ICsx
ODksNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBzdWJmcmFtZUlzTG9hZGluZygpIGNvbnN0OwogICAg
IHZvaWQgd2lsbENoYW5nZVRpdGxlKERvY3VtZW50TG9hZGVyKik7CiAgICAgdm9pZCBkaWRDaGFu
Z2VUaXRsZShEb2N1bWVudExvYWRlciopOworICAgIHZvaWQgZGlkQ2hhbmdlSWNvbnMoRG9jdW1l
bnRMb2FkZXIqKTsKIAogICAgIEZyYW1lTG9hZFR5cGUgbG9hZFR5cGUoKSBjb25zdDsKICAgICBD
YWNoZVBvbGljeSBzdWJyZXNvdXJjZUNhY2hlUG9saWN5KCkgY29uc3Q7CkBAIC0yOTksNiArMzAw
LDcgQEAgcHVibGljOgogICAgIHZvaWQgY2FuY2VsQW5kQ2xlYXIoKTsKIAogICAgIHZvaWQgc2V0
VGl0bGUoY29uc3QgU3RyaW5nJik7CisgICAgdm9pZCBzZXRJY29uVVJMKGNvbnN0IFN0cmluZyYp
OwogCiAgICAgdm9pZCBjb21taXRQcm92aXNpb25hbExvYWQoUGFzc1JlZlB0cjxDYWNoZWRQYWdl
Pik7CiAgICAgYm9vbCBpc0xvYWRpbmdGcm9tQ2FjaGVkUGFnZSgpIGNvbnN0IHsgcmV0dXJuIG1f
bG9hZGluZ0Zyb21DYWNoZWRQYWdlOyB9CkluZGV4OiBXZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRl
ckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50
LmgJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXJDbGllbnQu
aAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDYgKzEyNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKSA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCkgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgU3RyaW5n
JiB0aXRsZSkgPSAwOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29u
cygpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ29tbWl0TG9hZCgpID0g
MDsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFsTG9hZChj
b25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hE
aWRGYWlsTG9hZChjb25zdCBSZXNvdXJjZUVycm9yJikgPSAwOwpJbmRleDogV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCShy
ZXZpc2lvbiA1Nzk4OSkKKysrIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwyMSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRhdmVtb29yZUBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBhIHBhZ2UgYXJl
IGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERvY3VtZW50IG9i
amVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisgICAgICAgIG5v
dGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJDbGllbnQgd2ls
bAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENoYW5nZUljb25z
KCkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
ODEyCisKKyAgICAgICAgKiBwdWJsaWMvV2ViRnJhbWVDbGllbnQuaDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVDbGllbnQ6OmRpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVM
b2FkZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnRJ
bXBsOjpkaXNwYXRjaERpZENoYW5nZUljb25zKToKKyAgICAgICAgKiBzcmMvRnJhbWVMb2FkZXJD
bGllbnRJbXBsLmg6CisKIDIwMTAtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktpdC9jaHJv
bWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0L2No
cm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiAr
MTkyLDkgQEAgcHVibGljOgogICAgIC8vIFRoZSBwYWdlIHRpdGxlIGlzIGF2YWlsYWJsZS4KICAg
ICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVRpdGxlKFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5n
JiB0aXRsZSkgeyB9CiAKKyAgICAvLyBUaGUgaWNvbnMgZm9yIHRoZSBwYWdlIGhhdmUgY2hhbmdl
ZC4KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlSWNvbnMoV2ViRnJhbWUqKSB7IH0KKwogICAg
IC8vIFRoZSBmcmFtZSdzIGRvY3VtZW50IGZpbmlzaGVkIGxvYWRpbmcuCiAgICAgdmlydHVhbCB2
b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZChXZWJGcmFtZSopIHsgfQogCkluZGV4OiBXZWJLaXQv
Y2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwuY3BwCShyZXZpc2lvbiA1Nzk4
OSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNzI2LDYgKzcyNiwxMiBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRSCiAgICAgICAgIG1fd2ViRnJhbWUtPmNsaWVudCgpLT5kaWRSZWNlaXZl
VGl0bGUobV93ZWJGcmFtZSwgdGl0bGUpOwogfQogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50SW1w
bDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgaWYgKG1fd2ViRnJhbWUtPmNsaWVu
dCgpKQorICAgICAgICBtX3dlYkZyYW1lLT5jbGllbnQoKS0+ZGlkQ2hhbmdlSWNvbnMobV93ZWJG
cmFtZSk7Cit9CisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRJbXBsOjpkaXNwYXRjaERpZENvbW1p
dExvYWQoKQogewogICAgIFdlYlZpZXdJbXBsKiB3ZWJ2aWV3ID0gbV93ZWJGcmFtZS0+dmlld0lt
cGwoKTsKSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvRnJhbWVMb2FkZXJDbGllbnRJbXBsLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9GcmFtZUxvYWRlckNsaWVudEltcGwu
aAkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL0ZyYW1lTG9hZGVyQ2xp
ZW50SW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsNiArMTAyLDcgQEAgcHVibGljOgogICAg
IHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CiAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRSZWNlaXZlVGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0aXRsZSk7CisgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFp
bFByb3Zpc2lvbmFsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkRmFpbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwpJbmRleDogV2ViS2l0L2d0ay9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9DaGFuZ2VMb2cJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0L2d0ay9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29yZSAgPGRh
dmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgQWRkZWQgbm90aWZpY2F0aW9uIHdoZW4gdGhlIGZhdmljb25zIGZvciBh
IHBhZ2UgYXJlIGNoYW5nZWQKKyAgICAgICAgZnJvbSBhIHNjcmlwdC4KKyAgICAgICAgVGhlIERv
Y3VtZW50IG9iamVjdCB3aWxsIG5vdGlmeSB0aGUgZnJhbWUgbG9hZGVyLCB3aGljaCB3aWxsCisg
ICAgICAgIG5vdGlmeSB0aGUgY2xpZW50LiBJbXBsZW1lbnRhdGlvbnMgb2YgRnJhbWVMb2FkZXJD
bGllbnQgd2lsbAorICAgICAgICBoYXZlIHRvIGFkZCBvbmUgbWV0aG9kOyBkaXNwYXRjaERpZENo
YW5nZUljb25zKCkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZENoYW5nZUljb25zKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oOgorCiAyMDEwLTA0LTIxICBKYWt1YiBXaWVjem9yZWsgIDxqd2llY3pvcmVrQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4gQWRsZXIuCkluZGV4OiBXZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAkocmV2
aXNpb24gNTc5ODkpCisrKyBXZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50R3RrLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzUzLDYgKzc1MywxMSBAQCB2b2lkIEZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlY2VpCiAgICAgfQogfQogCit2b2lkIEZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25zKCkKK3sKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOworfQorCiB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQo
KQogewogICAgIGlmIChtX2xvYWRpbmdFcnJvclBhZ2UpCkluZGV4OiBXZWJLaXQvZ3RrL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCShyZXZpc2lvbiA1Nzk4OSkK
KysrIFdlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAkod29y
a2luZyBjb3B5KQpAQCAtODIsNiArODIsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICAgICAg
dmlydHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2
b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYpOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBk
aXNwYXRjaERpZEZhaWxQcm92aXNpb25hbExvYWQoY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJv
ciYpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZUVycm9yJik7CkluZGV4OiBXZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXQv
bWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA0LTEw
ICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0
aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBhcmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0
LgorICAgICAgICBUaGUgRG9jdW1lbnQgb2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2Fk
ZXIsIHdoaWNoIHdpbGwKKyAgICAgICAgbm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9u
cyBvZiBGcmFtZUxvYWRlckNsaWVudCB3aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRo
b2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNvbnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzM4MTIKKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQubW06CisgICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEaWRDaGFuZ2VJY29ucyk6CisKIDIwMTAtMDQtMjAgIEFkYW0gQmFydGggIDxhYmFydGhAd2Vi
a2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KSW5kZXg6IFdlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDU3OTg5KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC05OSw2ICs5OSw3IEBAIHByaXZhdGU6CiAgICAgdmly
dHVhbCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlz
cGF0Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRj
aERpZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaERpZENvbW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGYWlsUHJv
dmlzaW9uYWxMb2FkKGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImKTsKICAgICB2aXJ0dWFs
IHZvaWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7
CkluZGV4OiBXZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFdlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQubW0JKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNTkzLDYgKzU5MywxMSBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlCiAgICAgICAgIENhbGxG
cmFtZUxvYWREZWxlZ2F0ZShpbXBsZW1lbnRhdGlvbnMtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1l
RnVuYywgd2ViVmlldywgQHNlbGVjdG9yKHdlYlZpZXc6ZGlkUmVjZWl2ZVRpdGxlOmZvckZyYW1l
OiksIChOU1N0cmluZyAqKXRpdGxlLCBtX3dlYkZyYW1lLmdldCgpKTsKIH0KIAordm9pZCBXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgIC8vIEZJ
WE1FOiBJbXBsZW1lbnQgdGhpcyB0byBhbGxvdyBjb250YWluZXIgdG8gdXBkYXRlIGZhdmljb24u
Cit9CisKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkQ29tbWl0TG9hZCgp
CiB7CiAgICAgLy8gVGVsbCB0aGUgY2xpZW50IHdlJ3ZlIGNvbW1pdHRlZCB0aGlzIFVSTC4KSW5k
ZXg6IFdlYktpdC9xdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3F0L0NoYW5nZUxv
ZwkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXQvcXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMjAgQEAKKzIwMTAtMDQtMTAgIERhdmUgTW9vcmUgIDxkYXZlbW9vcmVAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZGVkIG5vdGlmaWNhdGlvbiB3aGVuIHRoZSBmYXZpY29ucyBmb3IgYSBwYWdlIGFyZSBj
aGFuZ2VkCisgICAgICAgIGZyb20gYSBzY3JpcHQuCisgICAgICAgIFRoZSBEb2N1bWVudCBvYmpl
Y3Qgd2lsbCBub3RpZnkgdGhlIGZyYW1lIGxvYWRlciwgd2hpY2ggd2lsbAorICAgICAgICBub3Rp
ZnkgdGhlIGNsaWVudC4gSW1wbGVtZW50YXRpb25zIG9mIEZyYW1lTG9hZGVyQ2xpZW50IHdpbGwK
KyAgICAgICAgaGF2ZSB0byBhZGQgb25lIG1ldGhvZDsgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygp
LgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzgx
MgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudFF0OjpkaXNwYXRjaERpZENoYW5nZUlj
b25zKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRp
dGxlKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0Lmg6CisK
IDIwMTAtMDQtMjEgIEpha3ViIFdpZWN6b3JlayAgPGp3aWVjem9yZWtAd2Via2l0Lm9yZz4KIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KSW5kZXg6IFdlYktpdC9xdC9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvcXQv
V2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRRdC5jcHAJKHJldmlzaW9uIDU3OTg5KQor
KysgV2ViS2l0L3F0L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODEsNiArMzgxLDE5IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6
ZGlzcGF0Y2hEaWRSZWMKIH0KIAogCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpc3BhdGNo
RGlkQ2hhbmdlSWNvbnMoKQoreworICAgIGlmIChkdW1wRnJhbWVMb2FkZXJDYWxsYmFja3MpCisg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgcVByaW50YWJsZShkcnREZXNj
cmlwdGlvblN1aXRhYmxlRm9yVGVzdFJlc3VsdChtX2ZyYW1lKSkpOworCisgICAgaWYgKCFtX3dl
YkZyYW1lKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBGSVhNRTogVG8gYmUgbm90aWZpZWQg
b2YgY2hhbmdpbmcgaWNvbiBVUkxTIGFkZCBub3RpZmljYXRpb24KKyAgICAvLyBlbWl0IGljb25z
Q2hhbmdlZCgpOworfQorCisKIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6ZGlzcGF0Y2hEaWRD
b21taXRMb2FkKCkKIHsKICAgICBpZiAoZHVtcEZyYW1lTG9hZGVyQ2FsbGJhY2tzKQpAQCAtNTI1
LDcgKzUzOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRRdDo6d2lsbENoYW5nZVRpdGwKIH0K
IAogCi12b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50TG9h
ZGVyICopCit2b2lkIEZyYW1lTG9hZGVyQ2xpZW50UXQ6OmRpZENoYW5nZVRpdGxlKERvY3VtZW50
TG9hZGVyKikKIHsKICAgICAvLyBubyBuZWVkIGZvciwgZGlzcGF0Y2hEaWRSZWNlaXZlVGl0bGUg
aXMgdGhlIHJpZ2h0IGNhbGxiYWNrCiB9CkluZGV4OiBXZWJLaXQvcXQvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRRdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9xdC9XZWJDb3JlU3Vw
cG9ydC9GcmFtZUxvYWRlckNsaWVudFF0LmgJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0L3F0
L1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50UXQuaAkod29ya2luZyBjb3B5KQpAQCAt
MTA5LDYgKzEwOSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCB2b2lk
IGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkU3RhcnRQcm92aXNpb25hbExvYWQoKTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpc3BhdGNo
RGlkUmVjZWl2ZVRpdGxlKGNvbnN0IFN0cmluZyYgdGl0bGUpOworICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRDb21taXRMb2FkKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZEZhaWxQ
cm92aXNpb25hbExvYWQoY29uc3QgUmVzb3VyY2VFcnJvciYpOwogICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlzcGF0Y2hEaWRGYWlsTG9hZChjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJik7Cklu
ZGV4OiBXZWJLaXQvd2luL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL0NoYW5n
ZUxvZwkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXQvd2luL0NoYW5nZUxvZwkod29ya2luZyBj
b3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3Jl
QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBBZGRlZCBub3RpZmljYXRpb24gd2hlbiB0aGUgZmF2aWNvbnMgZm9yIGEgcGFnZSBh
cmUgY2hhbmdlZAorICAgICAgICBmcm9tIGEgc2NyaXB0LgorICAgICAgICBUaGUgRG9jdW1lbnQg
b2JqZWN0IHdpbGwgbm90aWZ5IHRoZSBmcmFtZSBsb2FkZXIsIHdoaWNoIHdpbGwKKyAgICAgICAg
bm90aWZ5IHRoZSBjbGllbnQuIEltcGxlbWVudGF0aW9ucyBvZiBGcmFtZUxvYWRlckNsaWVudCB3
aWxsCisgICAgICAgIGhhdmUgdG8gYWRkIG9uZSBtZXRob2Q7IGRpc3BhdGNoRGlkQ2hhbmdlSWNv
bnMoKS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MzM4MTIKKworICAgICAgICAqIEludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0
ZTIuaWRsOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5nZUljb25z
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oOgorICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpkaWRDaGFuZ2VJY29ucyk6
CisgICAgICAgICogV2ViRnJhbWUuaDoKKwogMjAxMC0wNC0yMCAgQWRhbSBCYXJ0aCAgPGFiYXJ0
aEB3ZWJraXQub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpJbmRleDog
V2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJGcmFt
ZS5jcHAJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTE1NDQsNiArMTU0NCwxMSBAQCB2b2lkIFdlYkZyYW1lOjpkaWRDaGFuZ2VU
aXRsZShEb2N1bWVudExvCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAordm9pZCBXZWJGcmFt
ZTo6ZGlkQ2hhbmdlSWNvbnMoRG9jdW1lbnRMb2FkZXIqKQoreworICAgIG5vdEltcGxlbWVudGVk
KCk7Cit9CisKIGJvb2wgV2ViRnJhbWU6OmNhbkhhbmRsZVJlcXVlc3QoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0KSBjb25zdAogewogICAgIHJldHVybiBXZWJWaWV3OjpjYW5IYW5kbGVS
ZXF1ZXN0KHJlcXVlc3QpOwpJbmRleDogV2ViS2l0L3dpbi9XZWJGcmFtZS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFdlYktpdC93aW4vV2ViRnJhbWUuaAkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXQvd2lu
L1dlYkZyYW1lLmgJKHdvcmtpbmcgY29weSkKQEAgLTI5MSw2ICsyOTEsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCB2b2lkIHNldE1haW5GcmFtZURvY3VtZW50UmVhZHkoYm9vbCk7CiAgICAgdmly
dHVhbCB2b2lkIHdpbGxDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VUaXRsZShXZWJDb3JlOjpEb2N1bWVudExvYWRlciopOwor
ICAgIHZpcnR1YWwgdm9pZCBkaWRDaGFuZ2VJY29ucyhXZWJDb3JlOjpEb2N1bWVudExvYWRlciop
OwogICAgIHZpcnR1YWwgYm9vbCBjYW5IYW5kbGVSZXF1ZXN0KGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCYpIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBjYW5TaG93TUlNRVR5cGUoY29u
c3QgV2ViQ29yZTo6U3RyaW5nJiBNSU1FVHlwZSkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIHJl
cHJlc2VudGF0aW9uRXhpc3RzRm9yVVJMU2NoZW1lKGNvbnN0IFdlYkNvcmU6OlN0cmluZyYgVVJM
U2NoZW1lKSBjb25zdDsKSW5kZXg6IFdlYktpdC93aW4vSW50ZXJmYWNlcy9JV2ViRnJhbWVMb2Fk
RGVsZWdhdGVQcml2YXRlMi5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9JbnRlcmZhY2Vz
L0lXZWJGcmFtZUxvYWREZWxlZ2F0ZVByaXZhdGUyLmlkbAkocmV2aXNpb24gNTc5ODkpCisrKyBX
ZWJLaXQvd2luL0ludGVyZmFjZXMvSVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTIuaWRsCSh3
b3JraW5nIGNvcHkpCkBAIC01Miw0ICs1Miw2IEBAIGludGVyZmFjZSBJV2ViRnJhbWVMb2FkRGVs
ZWdhdGVQcml2YXRlMiAKICAgICBIUkVTVUxUIGRpZFB1c2hTdGF0ZVdpdGhpblBhZ2VGb3JGcmFt
ZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSogZnJhbWUpOwogICAgIEhS
RVNVTFQgZGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZUZvckZyYW1lKFtpbl0gSVdlYlZpZXcqIHdl
YlZpZXcsIFtpbl0gSVdlYkZyYW1lKiBmcmFtZSk7CiAgICAgSFJFU1VMVCBkaWRQb3BTdGF0ZVdp
dGhpblBhZ2VGb3JGcmFtZShbaW5dIElXZWJWaWV3KiB3ZWJWaWV3LCBbaW5dIElXZWJGcmFtZSog
ZnJhbWUpOworICAgIEhSRVNVTFQgZGlkQ2hhbmdlSWNvbnMoW2luXSBJV2ViVmlldyogd2ViVmll
dywgW2luXSBJV2ViRnJhbWUqIGZyYW1lKTsKKwogfQpJbmRleDogV2ViS2l0L3dpbi9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dp
bi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDU3OTg5
KQorKysgV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTM3Miw2ICszNzIsMjAgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRSZQogICAgICAgICBmcmFtZUxvYWREZWxlZ2F0ZS0+ZGlkUmVjZWl2
ZVRpdGxlKHdlYlZpZXcsIEJTdHJpbmcodGl0bGUpLCBtX3dlYkZyYW1lKTsKIH0KIAordm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpCit7CisgICAgV2Vi
Vmlldyogd2ViVmlldyA9IG1fd2ViRnJhbWUtPndlYlZpZXcoKTsKKyAgICBDT01QdHI8SVdlYkZy
YW1lTG9hZERlbGVnYXRlUHJpdmF0ZT4gZnJhbWVMb2FkRGVsZWdhdGVQcml2OworICAgIGlmIChG
QUlMRUQod2ViVmlldy0+ZnJhbWVMb2FkRGVsZWdhdGVQcml2YXRlKCZmcmFtZUxvYWREZWxlZ2F0
ZVByaXYpKSB8fCAhZnJhbWVMb2FkRGVsZWdhdGVQcml2KQorICAgICAgICByZXR1cm47CisKKyAg
ICBDT01QdHI8SVdlYkZyYW1lTG9hZERlbGVnYXRlUHJpdmF0ZTI+IGZyYW1lTG9hZERlbGVnYXRl
UHJpdjIoUXVlcnksIGZyYW1lTG9hZERlbGVnYXRlUHJpdik7CisgICAgaWYgKCFmcmFtZUxvYWRE
ZWxlZ2F0ZVByaXYyKQorICAgICAgICByZXR1cm47CisgICAgICAgIAorICAgIGZyYW1lTG9hZERl
bGVnYXRlUHJpdjItPmRpZENoYW5nZUljb25zKHdlYlZpZXcsIG1fd2ViRnJhbWUpOworfQorCiB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENvbW1pdExvYWQoKQogewogICAg
IFdlYlZpZXcqIHdlYlZpZXcgPSBtX3dlYkZyYW1lLT53ZWJWaWV3KCk7CkluZGV4OiBXZWJLaXQv
d2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
V2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lv
biA1Nzk4OSkKKysrIFdlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGll
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzEsNiArNzEsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB2b2lkIGRpc3BhdGNoRGlkUmVjZWl2ZUljb24oKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0
Y2hEaWRTdGFydFByb3Zpc2lvbmFsTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERp
ZFJlY2VpdmVUaXRsZShjb25zdCBXZWJDb3JlOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEaWRDaGFuZ2VJY29ucygpOwogICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERpZENv
bW1pdExvYWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hEb2N1bWVudExv
YWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEaWRGaW5pc2hMb2FkKCk7CkluZGV4OiBX
ZWJLaXRUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiA1Nzk4OSkKKysrIFdlYktpdFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA0LTEwICBEYXZlIE1vb3JlICA8ZGF2ZW1vb3JlQGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBBZGQgdGVzdCBzdXBwb3J0IGZvciBpY29uIGNoYW5nZXMuCisKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMzODEyCisKKyAgICAgICAgKiBEdW1w
UmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChMYXlvdXRUZXN0
Q29udHJvbGxlcjo6TGF5b3V0VGVzdENvbnRyb2xsZXIpOgorICAgICAgICAoZHVtcEljb25DaGFu
Z2VzQ2FsbGJhY2spOgorICAgICAgICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnN0YXRpY0Z1bmN0
aW9ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaDoK
KyAgICAgICAgKExheW91dFRlc3RDb250cm9sbGVyOjpkdW1wSWNvbkNoYW5nZXMpOgorICAgICAg
ICAoTGF5b3V0VGVzdENvbnRyb2xsZXI6OnNldER1bXBJY29uQ2hhbmdlcyk6CisgICAgICAgICog
RHVtcFJlbmRlclRyZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcDoKKyAgICAgICAgKEZyYW1l
TG9hZERlbGVnYXRlOjpkaWRDaGFuZ2VJY29ucyk6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUv
d2luL0ZyYW1lTG9hZERlbGVnYXRlLmg6CisgICAgICAgICogV2luTGF1bmNoZXIvV2luTGF1bmNo
ZXIuaDoKKyAgICAgICAgKFdpbkxhdW5jaGVyV2ViSG9zdDo6ZGlkQ2hhbmdlSWNvbnMpOgorCiAy
MDEwLTA0LTIxICBLZW50IFRhbXVyYSAgPHRrZW50QGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVy
VHJlZS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMv
RHVtcFJlbmRlclRyZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA1Nzk4OSkK
KysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQCBMYXlvdXRUZXN0Q29udHJvbGxlcjo6TGF5
b3V0VGVzdENvbnRyb2xsCiAgICAgLCBtX2R1bXBTb3VyY2VBc1dlYkFyY2hpdmUoZmFsc2UpCiAg
ICAgLCBtX2R1bXBTdGF0dXNDYWxsYmFja3MoZmFsc2UpCiAgICAgLCBtX2R1bXBUaXRsZUNoYW5n
ZXMoZmFsc2UpCisgICAgLCBtX2R1bXBJY29uQ2hhbmdlcyhmYWxzZSkKICAgICAsIG1fZHVtcFZp
c2l0ZWRMaW5rc0NhbGxiYWNrKGZhbHNlKQogICAgICwgbV9kdW1wV2lsbENhY2hlUmVzcG9uc2Uo
ZmFsc2UpCiAgICAgLCBtX2NhbGxDbG9zZU9uV2ViVmlld3ModHJ1ZSkKQEAgLTE4Nyw2ICsxODgs
MTMgQEAgc3RhdGljIEpTVmFsdWVSZWYgZHVtcFRpdGxlQ2hhbmdlc0NhbGxiYQogICAgIHJldHVy
biBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0KIAorc3RhdGljIEpTVmFsdWVSZWYg
ZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2soSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVm
IGZ1bmN0aW9uLCBKU09iamVjdFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwg
Y29uc3QgSlNWYWx1ZVJlZiBhcmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQorewor
ICAgIExheW91dFRlc3RDb250cm9sbGVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nhc3Q8TGF5b3V0
VGVzdENvbnRyb2xsZXIqPihKU09iamVjdEdldFByaXZhdGUodGhpc09iamVjdCkpOworICAgIGNv
bnRyb2xsZXItPnNldER1bXBJY29uQ2hhbmdlcyh0cnVlKTsKKyAgICByZXR1cm4gSlNWYWx1ZU1h
a2VVbmRlZmluZWQoY29udGV4dCk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlUmVmIGR1bXBXaWxsQ2Fj
aGVSZXNwb25zZUNhbGxiYWNrKEpTQ29udGV4dFJlZiBjb250ZXh0LCBKU09iamVjdFJlZiBmdW5j
dGlvbiwgSlNPYmplY3RSZWYgdGhpc09iamVjdCwgc2l6ZV90IGFyZ3VtZW50Q291bnQsIGNvbnN0
IEpTVmFsdWVSZWYgYXJndW1lbnRzW10sIEpTVmFsdWVSZWYqIGV4Y2VwdGlvbikKIHsKICAgICBM
YXlvdXRUZXN0Q29udHJvbGxlciogY29udHJvbGxlciA9IHN0YXRpY19jYXN0PExheW91dFRlc3RD
b250cm9sbGVyKj4oSlNPYmplY3RHZXRQcml2YXRlKHRoaXNPYmplY3QpKTsKQEAgLTE0OTgsNiAr
MTUwNiw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIExheW91dFRlc3RDb250cm9sbGVyOjoKICAgICAg
ICAgeyAiZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZSIsIGR1bXBTb3VyY2VBc1dlYkFyY2hpdmVDYWxs
YmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmlidXRl
RG9udERlbGV0ZSB9LAogICAgICAgICB7ICJkdW1wU3RhdHVzQ2FsbGJhY2tzIiwgZHVtcFN0YXR1
c0NhbGxiYWNrc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgImR1bXBUaXRsZUNoYW5nZXMi
LCBkdW1wVGl0bGVDaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkg
fCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAiZHVtcEljb25D
aGFuZ2VzIiwgZHVtcEljb25DaGFuZ2VzQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVh
ZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAiZHVt
cFdpbGxDYWNoZVJlc3BvbnNlIiwgZHVtcFdpbGxDYWNoZVJlc3BvbnNlQ2FsbGJhY2ssIGtKU1By
b3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUg
fSwKICAgICAgICAgeyAiZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkIiwg
ZWxlbWVudERvZXNBdXRvQ29tcGxldGVGb3JFbGVtZW50V2l0aElkQ2FsbGJhY2ssIGtKU1Byb3Bl
cnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwK
ICAgICAgICAgeyAiZW5jb2RlSG9zdE5hbWUiLCBlbmNvZGVIb3N0TmFtZUNhbGxiYWNrLCBrSlNQ
cm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRl
IH0sCkluZGV4OiBXZWJLaXRUb29scy9EdW1wUmVuZGVyVHJlZS9MYXlvdXRUZXN0Q29udHJvbGxl
ci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL0xheW91dFRlc3RD
b250cm9sbGVyLmgJKHJldmlzaW9uIDU3OTg5KQorKysgV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvTGF5b3V0VGVzdENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTU2LDYgKzE1Niw5
IEBAIHB1YmxpYzoKICAgICBib29sIGR1bXBUaXRsZUNoYW5nZXMoKSBjb25zdCB7IHJldHVybiBt
X2R1bXBUaXRsZUNoYW5nZXM7IH0KICAgICB2b2lkIHNldER1bXBUaXRsZUNoYW5nZXMoYm9vbCBk
dW1wVGl0bGVDaGFuZ2VzKSB7IG1fZHVtcFRpdGxlQ2hhbmdlcyA9IGR1bXBUaXRsZUNoYW5nZXM7
IH0KIAorICAgIGJvb2wgZHVtcEljb25DaGFuZ2VzKCkgY29uc3QgeyByZXR1cm4gbV9kdW1wSWNv
bkNoYW5nZXM7IH0KKyAgICB2b2lkIHNldER1bXBJY29uQ2hhbmdlcyhib29sIGR1bXBJY29uQ2hh
bmdlcykgeyBtX2R1bXBJY29uQ2hhbmdlcyA9IGR1bXBJY29uQ2hhbmdlczsgfQorCiAgICAgYm9v
bCBkdW1wVmlzaXRlZExpbmtzQ2FsbGJhY2soKSBjb25zdCB7IHJldHVybiBtX2R1bXBWaXNpdGVk
TGlua3NDYWxsYmFjazsgfQogICAgIHZvaWQgc2V0RHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKGJv
b2wgZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrKSB7IG1fZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNr
ID0gZHVtcFZpc2l0ZWRMaW5rc0NhbGxiYWNrOyB9CiAgICAgCkBAIC0yNzUsNiArMjc4LDcgQEAg
cHJpdmF0ZToKICAgICBib29sIG1fZHVtcFNvdXJjZUFzV2ViQXJjaGl2ZTsKICAgICBib29sIG1f
ZHVtcFN0YXR1c0NhbGxiYWNrczsKICAgICBib29sIG1fZHVtcFRpdGxlQ2hhbmdlczsKKyAgICBi
b29sIG1fZHVtcEljb25DaGFuZ2VzOwogICAgIGJvb2wgbV9kdW1wVmlzaXRlZExpbmtzQ2FsbGJh
Y2s7CiAgICAgYm9vbCBtX2R1bXBXaWxsQ2FjaGVSZXNwb25zZTsKICAgICBib29sIG1fY2FsbENs
b3NlT25XZWJWaWV3czsKSW5kZXg6IFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0VG9vbHMvRHVtcFJlbmRlclRy
ZWUvd2luL0ZyYW1lTG9hZERlbGVnYXRlLmNwcAkocmV2aXNpb24gNTc5ODkpCisrKyBXZWJLaXRU
b29scy9EdW1wUmVuZGVyVHJlZS93aW4vRnJhbWVMb2FkRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xODksNiArMTg5LDE2IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgRnJhbWVM
b2FkRGVsZWcKICAgICByZXR1cm4gU19PSzsKIH0KIAorSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQ
RSBGcmFtZUxvYWREZWxlZ2F0ZTo6ZGlkQ2hhbmdlSWNvbnMoCisgICAgLyogW2luXSAqLyBJV2Vi
Vmlldyogd2ViVmlldywKKyAgICAvKiBbaW5dICovIElXZWJGcmFtZSogZnJhbWUpCit7CisgICAg
aWYgKCFkb25lICYmIGdMYXlvdXRUZXN0Q29udHJvbGxlci0+ZHVtcEljb25DaGFuZ2VzKCkpCisg
ICAgICAgIHByaW50ZigiJXMgLSBkaWRDaGFuZ2VJY29uc1xuIiwgZGVzY3JpcHRpb25TdWl0YWJs
ZUZvclRlc3RSZXN1bHQoZnJhbWUpLmNfc3RyKCkpOworCisgICAgcmV0dXJuIFNfT0s7Cit9CisK
IHZvaWQgRnJhbWVMb2FkRGVsZWdhdGU6OnByb2Nlc3NXb3JrKCkKIHsKICAgICAvLyBpZiBhbm90
aGVyIGxvYWQgc3RhcnRlZCwgdGhlbiB3YWl0IGZvciBpdCB0byBjb21wbGV0ZS4KSW5kZXg6IFdl
YktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFtZUxvYWREZWxlZ2F0ZS5o
CShyZXZpc2lvbiA1Nzk4OSkKKysrIFdlYktpdFRvb2xzL0R1bXBSZW5kZXJUcmVlL3dpbi9GcmFt
ZUxvYWREZWxlZ2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03NCw2ICs3NCwxMCBAQCBwdWJsaWM6
CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRsZSwKICAgICAgICAgLyogW2luXSAqLyBJV2Vi
RnJhbWUgKmZyYW1lKTsKIAorICAgIHZpcnR1YWwgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBk
aWRDaGFuZ2VJY29ucygKKyAgICAgICAgLyogW2luXSAqLyBJV2ViVmlldyAqd2ViVmlldywKKyAg
ICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKTsKKwogICAgIHZpcnR1YWwgSFJFU1VM
VCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggCiAgICAgICAgIC8qIFtpbl0gKi8g
SVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBpbWFnZSwK
SW5kZXg6IFdlYktpdFRvb2xzL1dpbkxhdW5jaGVyL1dpbkxhdW5jaGVyLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViS2l0VG9vbHMvV2luTGF1bmNoZXIvV2luTGF1bmNoZXIuaAkocmV2aXNpb24gNTc5ODkp
CisrKyBXZWJLaXRUb29scy9XaW5MYXVuY2hlci9XaW5MYXVuY2hlci5oCSh3b3JraW5nIGNvcHkp
CkBAIC02MSw2ICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgICAgIC8qIFtpbl0gKi8gQlNUUiB0aXRs
ZSwKICAgICAgICAgLyogW2luXSAqLyBJV2ViRnJhbWUgKmZyYW1lKSB7IHJldHVybiBTX09LOyB9
CiAgICAgCisgICAgdmlydHVhbCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIGRpZENoYW5nZUlj
b25zKAorICAgICAgICAvKiBbaW5dICovIElXZWJWaWV3ICp3ZWJWaWV3LAorICAgICAgICAvKiBb
aW5dICovIElXZWJGcmFtZSAqZnJhbWUpIHsgcmV0dXJuIFNfT0s7IH0KKwogICAgIHZpcnR1YWwg
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBkaWRSZWNlaXZlSWNvbiggCiAgICAgICAgIC8qIFtp
bl0gKi8gSVdlYlZpZXcgKndlYlZpZXcsCiAgICAgICAgIC8qIFtpbl0gKi8gT0xFX0hBTkRMRSBo
Qml0bWFwLApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gNTc5ODkpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBAQAorMjAxMC0wNC0xMCAgRGF2ZSBNb29y
ZSAgPGRhdmVtb29yZUBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQWRkIHRlc3QgZm9yIGljb24gY2hhbmdlIG5vdGlmaWNhdGlv
bnMuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTMz
ODEyCisKKyAgICAgICAgKiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGZhc3QvZG9tL2ljb24tdXJsLXByb3BlcnR5Lmh0bWw6IEFkZGVk
LgorICAgICAgICAqIFNraXBwZWQgb24gYWxsIHBsYXRmb3JtcyBidXQgV2luCisKIDIwMTAtMDQt
MjEgIEpha3ViIFdpZWN6b3JlayAgPGp3aWVjem9yZWtAd2Via2l0Lm9yZz4KIAogICAgICAgICBV
bnJldmlld2VkLgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11cmwtcHJvcGVydHkt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3Qv
ZG9tL2ljb24tdXJsLXByb3BlcnR5LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSw0IEBACittYWluIGZyYW1lIC0gZGlkQ2hhbmdlSWNvbnMKK09yaWdpbmFsIGljb25VUkwgaXM6
IGh0dHA6Ly90ZXN0LmNvbS9vbGRmYXZpY29uLmljbworU2V0dGluZyBuZXcgaWNvbiBVUkwgdG86
IGh0dHA6Ly90ZXN0LmNvbS9uZXdmYXZpb24uaWNvCitOZXcgaWNvblVSTCBpczogaHR0cDovL3Rl
c3QuY29tL25ld2Zhdmlvbi5pY28KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZG9tL2ljb24tdXJs
LXByb3BlcnR5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9kb20vaWNvbi11
cmwtcHJvcGVydHkuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvZG9tL2lj
b24tdXJsLXByb3BlcnR5Lmh0bWwJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNTIgQEAKKzxodG1s
PgorPGhlYWQ+Cis8dGl0bGU+T3JpZ2luYWwgVGl0bGU8L3RpdGxlPgorPGxpbmsgcmVsPSJzaG9y
dGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9Imh0dHA6Ly90ZXN0LmNvbS9vbGRm
YXZpY29uLmljbyIvPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGRlYnVnT3V0cHV0KHN0cikgeworICAg
IHRleHQgPSBkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzdHIpOworICAgIGRlYnVnRGl2ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2RlYnVnRGl2Jyk7CisgICAgZGl2ID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCAoJ2RpdicpOworICAgIGRpdi5hcHBlbmRDaGlsZCh0ZXh0KTsKKyAgICBkZWJ1
Z0Rpdi5hcHBlbmRDaGlsZChkaXYpOworfQorCitmdW5jdGlvbiBzZXRGYXZJY29uKGljb25VUkwp
IHsKKyAgICB2YXIgZG9jSGVhZCA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFk
IilbMF07CisgICAgdmFyIGxpbmtzID0gZG9jSGVhZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgibGlu
ayIpOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGlua3MubGVuZ3RoOyArK2kpIHsKKyAgICAg
IHZhciBsaW5rID0gbGlua3NbaV07CisgICAgICBpZiAobGluay50eXBlPT0iaW1hZ2UveC1pY29u
IiAmJiBsaW5rLnJlbD09InNob3J0Y3V0IGljb24iKSB7CisgICAgICAgIGRvY0hlYWQucmVtb3Zl
Q2hpbGQobGluayk7CisgICAgICAgIGJyZWFrOyAvLyBBc3N1bWluZyBvbmx5IG9uZSBtYXRjaCBh
dCBtb3N0LgorICAgICAgfQorICAgIH0KKyAgICB2YXIgbGluayA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImxpbmsiKTsKKyAgICBsaW5rLnR5cGUgPSAiaW1hZ2UveC1pY29uIjsKKyAgICBsaW5r
LnJlbCA9ICJzaG9ydGN1dCBpY29uIjsKKyAgICBsaW5rLmhyZWYgPSBpY29uVVJMOworICAgIGRv
Y0hlYWQuYXBwZW5kQ2hpbGQobGluayk7Cit9CisKK2Z1bmN0aW9uIHJ1blRlc3RzKCkgeworICAg
IGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIpIHsKKyAgICAgICAgbGF5b3V0VGVzdENv
bnRyb2xsZXIuZHVtcEFzVGV4dCgpOworICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1w
SWNvbkNoYW5nZXMoKTsKKyAgICB9CisgICAgaWNvblVSTCA9IGRvY3VtZW50LmdldEVsZW1lbnRz
QnlUYWdOYW1lKCJoZWFkIilbMF0uZ2V0RWxlbWVudHNCeVRhZ05hbWUoImxpbmsiKVswXS5ocmVm
OworICAgIGRlYnVnT3V0cHV0ICgnT3JpZ2luYWwgaWNvblVSTCBpczogJyArIGljb25VUkwpOwor
ICAgIG5ld1VSTCA9ICdodHRwOi8vdGVzdC5jb20vbmV3ZmF2aW9uLmljbyc7CisgICAgZGVidWdP
dXRwdXQgKCdTZXR0aW5nIG5ldyBpY29uIFVSTCB0bzogJyArIG5ld1VSTCk7CisgICAgc2V0RmF2
SWNvbihuZXdVUkwpOworICAgIGljb25VUkwgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFt
ZSgiaGVhZCIpWzBdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIilbMF0uaHJlZjsKKworICAg
IGRlYnVnT3V0cHV0ICgnTmV3IGljb25VUkwgaXM6ICcgKyBpY29uVVJMKTsKK30KKworPC9zY3Jp
cHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9J3J1blRlc3RzKCk7Jz4KKzxkaXYgaWQ9J2RlYnVn
RGl2Jz4KKzwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0vdGVzdF9leHBlY3RhdGlvbnMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtL3Rlc3RfZXhwZWN0YXRpb25zLnR4dAkocmV2aXNpb24gNTc5
ODkpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS90ZXN0X2V4cGVjdGF0aW9ucy50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTI3MzMsNiArMjczMyw4IEBAIEJVRzQxNDU1IFNLSVAgOiBo
dHRwL3Rlc3RzL3NlY3VyaXR5L2xvY2EKIC8vIENhdXNlZCBieSByNTc2OTUuIFdpbGwgaW52ZXN0
aWdhdGUuCiBCVUdfSklBTkxJIExJTlVYIDogaHR0cC90ZXN0cy9sb2NhbC9mb3JtZGF0YS9zZW5k
LWZvcm0tZGF0YS13aXRoLXNsaWNlZC1maWxlLmh0bWwgPSBURVhUCiAKK0JVRzMzODEyIFNLSVAg
OiBmYXN0L2RvbS9pY29uLXVybC1wcm9wZXJ0eS5odG1sID0gRkFJTAorCiAvLyBGYWlsaW5nIHdp
dGggd2Via2l0IHJvbGwgNTc2NTkgLT4gNTc2NzcuCiBCVUdBSldPTkcgTElOVVggREVCVUcgOiBm
YXN0L2NhbnZhcy90b0RhdGFVUkwtbm9EYXRhLmh0bWwgPSBDUkFTSAogQlVHQUpXT05HIFdJTiBM
SU5VWCA6IGZhc3QvYmFja2dyb3VuZHMvc3ZnLWFzLWJhY2tncm91bmQtMS5odG1sID0gSU1BR0Ug
UEFTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHJldmlzaW9uIDU3OTg5KQorKysg
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL1NraXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTIxNzAs
NiArMjE3MCw3IEBAIGZhc3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUtZGlzcGxheS5odG0KIGZh
c3QvZG9tL2RvbS1wYXJzZS1zZXJpYWxpemUuaHRtbAogZmFzdC9kb20vZm9jdXMtY29udGVudGVk
aXRhYmxlLmh0bWwKIGZhc3QvZG9tL2djLTEwLmh0bWwKK2Zhc3QvZG9tL2ljb24tdXJsLXByb3Bl
cnR5Lmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5vZGVIVE1MLmh0bWwKIGZhc3QvZG9tL2ltcG9ydE5v
ZGVYTUwueGh0bWwKIGZhc3QvZG9tL2lubmVyLXRleHQuaHRtbApJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQvU2tpcHBlZAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9x
dC9Ta2lwcGVkCShyZXZpc2lvbiA1Nzk4OSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0L1Nr
aXBwZWQJKHdvcmtpbmcgY29weSkKQEAgLTI3ODQsNiArMjc4NCw3IEBAIGZhc3QvZG9tL0hUTUxT
dHlsZUVsZW1lbnQvaW5zZXJ0LXBhcnNlci0KIGZhc3QvZG9tL0hUTUxUYWJsZUVsZW1lbnQvY29s
U3Bhbi5odG1sCiBmYXN0L2RvbS9IVE1MVGFibGVFbGVtZW50L2NyZWF0ZUNhcHRpb24uaHRtbAog
ZmFzdC9kb20vSFRNTFRleHRBcmVhRWxlbWVudC9yZXNldC10ZXh0YXJlYS5odG1sCitmYXN0L2Rv
bS9pY29uLXVybC1wcm9wZXJ0eS5odG1sCiBmYXN0L2RvbS9pbXBvcnROb2RlSFRNTC5odG1sCiBm
YXN0L2RvbS9pbXBvcnROb2RlWE1MLnhodG1sCiBmYXN0L2RvbS9pbm5lci10ZXh0Lmh0bWwK
</data>
<flag name="review"
          id="37808"
          type_id="1"
          status="+"
          setter="dglazkov"
    />
    <flag name="commit-queue"
          id="37809"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>