<?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>17375</bug_id>
          
          <creation_ts>2008-02-15 08:00:43 -0800</creation_ts>
          <short_desc>[Gtk] Set user-agent from application</short_desc>
          <delta_ts>2009-07-03 02:58:28 -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>WebKitGTK</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sven Herzberg">sven</reporter>
          <assigned_to name="Christian Dywan">christian</assigned_to>
          <cc>alp</cc>
    
    <cc>christian</cc>
    
    <cc>christophe.public</cc>
    
    <cc>eacosta</cc>
    
    <cc>gustavo</cc>
    
    <cc>jmalonzo</cc>
    
    <cc>mail</cc>
    
    <cc>mrowe</cc>
    
    <cc>richard</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>70765</commentid>
    <comment_count>0</comment_count>
    <who name="Sven Herzberg">sven</who>
    <bug_when>2008-02-15 08:00:43 -0800</bug_when>
    <thetext>Some applications want to set the user-agent manually. Here&apos;s a patch that allows this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>71059</commentid>
    <comment_count>1</comment_count>
    <who name="Alp Toker">alp</who>
    <bug_when>2008-02-18 10:25:58 -0800</bug_when>
    <thetext>(In reply to comment #0)
&gt; Some applications want to set the user-agent manually. Here&apos;s a patch that
&gt; allows this.
&gt; 

Think you forgot the patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>88110</commentid>
    <comment_count>2</comment_count>
      <attachid>22707</attachid>
    <who name="Sven Herzberg">sven</who>
    <bug_when>2008-08-08 10:49:12 -0700</bug_when>
    <thetext>Created attachment 22707
Really old patch

Here&apos;s the really old patch (rev 30190) :-)

It was originally written before the settings stuff was in place, so it requires quite some modifications to fit into the current API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106894</commentid>
    <comment_count>3</comment_count>
      <attachid>27004</attachid>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-01-24 19:37:40 -0800</bug_when>
    <thetext>Created attachment 27004
Implement &quot;user-agent&quot; web settings property

This is a patch that implements &quot;user-agent&quot; as a new property of the web settings. It is probably not quite done, for instance I didn&apos;t check whether the string also needs to be applied on frames or whether the frame loader client is valid when it is set.

I patched GtkLauncher to verify that the new feature works correctly. I would leave that part out in the commit.

If we agree on adding this I can look into the mentioned open issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106957</commentid>
    <comment_count>4</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-01-25 11:53:00 -0800</bug_when>
    <thetext>I quite like the idea. I think it would be a good thing to return the default User-Agent when the property is queried and nothing was set, though. This would allow easy &apos;appending/messing&apos; with the otherwise default U-A, which might be needed by some apps.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>106970</commentid>
    <comment_count>5</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-01-25 13:57:33 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; I quite like the idea. I think it would be a good thing to return the default
&gt; User-Agent when the property is queried and nothing was set, though. This would
&gt; allow easy &apos;appending/messing&apos; with the otherwise default U-A, which might be
&gt; needed by some apps.

I think it&apos;s useful that NULL, ie. the default, signifies the default string, since it allows applications to change the string and reset it afterwards. More importantly if an application is interested in the string, modifying the default is bound to be very hairy and not something I would like to support.

Instead we *might* introduce a function that creates a user agent, however that is not exactly straightforward. Consider strings for robots, browsers, email clients, feed readers, libraries... the browsers disguising as Mozilla are the only really hard ones, though, so probably only a function for that is needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107028</commentid>
    <comment_count>6</comment_count>
      <attachid>27004</attachid>
    <who name="Holger Freyther">zecke</who>
    <bug_when>2009-01-26 05:51:57 -0800</bug_when>
    <thetext>Comment on attachment 27004
Implement &quot;user-agent&quot; web settings property

&gt; diff --git a/WebCore/loader/FrameLoaderClient.h b/WebCore/loader/FrameLoaderClient.h
&gt; index b90cecd..f4b9861 100644
&gt; --- a/WebCore/loader/FrameLoaderClient.h
&gt; +++ b/WebCore/loader/FrameLoaderClient.h
&gt; @@ -179,6 +179,9 @@ namespace WebCore {
&gt;          virtual PassRefPtr&lt;DocumentLoader&gt; createDocumentLoader(const ResourceRequest&amp;, const SubstituteData&amp;) = 0;
&gt;          virtual void setTitle(const String&amp; title, const KURL&amp;) = 0;
&gt;  
&gt; +#if PLATFORM(GTK)
&gt; +        virtual void setUserAgent(const String&amp;) = 0;
&gt; +#endif

that is not needed. I would like to keep it out. Also there is no need to make it virtual.




&gt; +        virtual void setUserAgent(const WebCore::String&amp;);

just plain void setUserAgent.



&gt;  
&gt; +static void webViewSetUserAgent(WebKitWebView* webView, const gchar* userAgent)
&gt; +{
&gt; +    /* FIXME: Do this on all frames */
&gt; +    /* FIXME: Should we check if loader and client are valid? */
&gt; +    core(webView)-&gt;mainFrame()-&gt;loader()-&gt;client()-&gt;setUserAgent(String::fromUTF8(userAgent));
&gt; +}

check FrameView::layoutIfNeededRecursively to iterate over the frame tree, it is pretty easy. In the case of Frame&apos;s every FrameLoaderClient should be the Gtk+ one. There is SVGImage which is using the EmptyLoaderClient (WebCore/loader/EmptyClients.h) but this is not a frame in the frametree (AFAIK). This also means your current patch does not compile with svg on. :)





&gt; +

I will be kicked if I let this in.

&gt;  static void webkit_web_view_update_settings(WebKitWebView* webView)
&gt;  {
&gt; +    webViewSetUserAgent(webView, userAgent);

the user agent should also be inherited of FrameLoaderClient::createFrame or from within WebKitWebFrame construction. I think the current approach does not work for loading pages with frames. the newly created subframes will have another user agent. If I&apos;m wrong I&apos;m happy to r=+ this patch, but I think it needs another iteration.




&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>107670</commentid>
    <comment_count>7</comment_count>
      <attachid>27004</attachid>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-01-30 04:51:12 -0800</bug_when>
    <thetext>Comment on attachment 27004
Implement &quot;user-agent&quot; web settings property

I&apos;m don&apos;t think that it makes sense to store the user agent on a single FrameLoaderClient instance.  The FIXME&apos;s indicate that you were also unsure about this.  Setting the user agent on a WebView should affect all frames in that view, rather than just the main frame.  The way that this is handled on the Mac is that FrameLoaderClient::userAgent asks the WebView for the user agent for a given URL, which it computes if needed or returns the overridden value if the application has set one.  This will ensure that subframes get the correct behaviour.

I&apos;m going to say r- on this basis.
   

&gt; diff --git a/WebCore/loader/FrameLoaderClient.h b/WebCore/loader/FrameLoaderClient.h
&gt; index b90cecd..f4b9861 100644
&gt; --- a/WebCore/loader/FrameLoaderClient.h
&gt; +++ b/WebCore/loader/FrameLoaderClient.h
&gt; @@ -179,6 +179,9 @@ namespace WebCore {
&gt;          virtual PassRefPtr&lt;DocumentLoader&gt; createDocumentLoader(const ResourceRequest&amp;, const SubstituteData&amp;) = 0;
&gt;          virtual void setTitle(const String&amp; title, const KURL&amp;) = 0;
&gt;  
&gt; +#if PLATFORM(GTK)
&gt; +        virtual void setUserAgent(const String&amp;) = 0;
&gt; +#endif
&gt;          virtual String userAgent(const KURL&amp;) = 0;
&gt;          
&gt;          virtual void savePlatformDataToCachedPage(CachedPage*) = 0;

It doesn&apos;t make sense for this to be #if&apos;d in cross-platform code in WebCore.  It would live in FrameLoaderClientGtk.h in WebKit.  There&apos;s also no need for it to be declared virtual.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112847</commentid>
    <comment_count>8</comment_count>
    <who name="Marco Trevisan (Treviño)">mail</who>
    <bug_when>2009-03-09 10:10:47 -0700</bug_when>
    <thetext>I did something similar in the bug #21388... Look at the patch there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>112867</commentid>
    <comment_count>9</comment_count>
    <who name="Mark Rowe (bdash)">mrowe</who>
    <bug_when>2009-03-09 11:14:35 -0700</bug_when>
    <thetext>*** Bug 21388 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>121899</commentid>
    <comment_count>10</comment_count>
      <attachid>30468</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-05-19 06:28:32 -0700</bug_when>
    <thetext>Created attachment 30468
Add WebView APIs to manipulate the UA string 

This patch adds WebView APIs to manipulate the UA-String to be sent by WebKit. It allows:

1. Clients to add an &apos;application name&apos; as part of the default User-Agent string.
2. Set a custom UA to be used by WebKit instead of the default one.
3. Query the &quot;currently used&quot; User-Agent string through a &quot;user-agent&quot; property in the WebView.

I also added a unit test to test the functionality. I also moved the WebKit UA version in configure so we can easily change it without touching the code.

I also changed the UA slightly from (platform, osversion, etc.. are just samples):

Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/530.11+ (KHTML, like Gecko,Safari/530.11+)

to:

Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/530.11+ (KHTML, like Gecko) Safari/530.11+

since I think the latter is a closer interpretation of https://developer.mozilla.org/En/User_Agent_Strings_Reference than the former.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122195</commentid>
    <comment_count>11</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-05-20 11:35:30 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; Created an attachment (id=30468) [review]
&gt; Add WebView APIs to manipulate the UA string 
&gt; 
&gt; This patch adds WebView APIs to manipulate the UA-String to be sent by WebKit.
&gt; It allows:
&gt; 
&gt; 1. Clients to add an &apos;application name&apos; as part of the default User-Agent
&gt; string.
&gt; 2. Set a custom UA to be used by WebKit instead of the default one.
&gt; 3. Query the &quot;currently used&quot; User-Agent string through a &quot;user-agent&quot; property
&gt; in the WebView.

Why do you add all this to the WebView instead of WebSettings? I think this is plain wrong.

If you want to allow spoofing based on the address, we should rather have &quot;request-user-agent&quot; or something like that, which would be more useful than trying to modify the string early enough.

&gt; I also added a unit test to test the functionality. I also moved the WebKit UA
&gt; version in configure so we can easily change it without touching the code.

Very nice.

&gt; I also changed the UA slightly from (platform, osversion, etc.. are just
&gt; samples):
&gt; 
&gt; Mozilla/5.0 (X11; U; Linux x86_64; en-us) AppleWebKit/530.11+ (KHTML, like
&gt; Gecko) Safari/530.11+

For what I want, I would prefer a real user agent and limit the spoofing to the hacks done in the Mac port. But I don&apos;t expect anyone to agree with me in that respect :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122847</commentid>
    <comment_count>12</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-23 06:27:05 -0700</bug_when>
    <thetext>Reading the comments, can we start this by moving the user agent default to configure.ac and adding the property and simple getter function? That looks fairly uncontroversial, and then we can move forward on deciding how to do the API to customize it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>122848</commentid>
    <comment_count>13</comment_count>
      <attachid>30468</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-05-23 06:27:45 -0700</bug_when>
    <thetext>Comment on attachment 30468
Add WebView APIs to manipulate the UA string 

Clearing the review flag, let&apos;s split this patch in pieces.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124077</commentid>
    <comment_count>14</comment_count>
      <attachid>30885</attachid>
    <who name="Edgar Acosta">eacosta</who>
    <bug_when>2009-06-02 16:45:44 -0700</bug_when>
    <thetext>Created attachment 30885
WebView API methods to get/set global &quot;user-agent&quot; property using Soup Session

I worked on a solution to this bug, before I became aware of it. I am posting a different approach, this is not as flexible as Alonzo&apos;s patch, but works fine in my projects.

This patch adds WebView API methods to set/get the &quot;user-agent&quot; property directly in Soup Session.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124092</commentid>
    <comment_count>15</comment_count>
      <attachid>30885</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-02 18:33:10 -0700</bug_when>
    <thetext>Comment on attachment 30885
WebView API methods to get/set global &quot;user-agent&quot; property using Soup Session

Hey, thanks for the patch. There are a bunch of indentation problems in your patch (tabs vs spaces, most probably), and it is really the wrong solution to the problem. The most proeminent issue being that you are messing with global stuff using WebView API, which is supposed to act on a per-WebView basis, so that&apos;s no good. We probably want to do what Xan proposed, to move forward. By the way, you need to mark your patches with &apos;?&apos; in the review combo box, if you want them to catch our attention. You were lucky I&apos;m watching this bug report =)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124735</commentid>
    <comment_count>16</comment_count>
      <attachid>31040</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-08 00:54:02 -0700</bug_when>
    <thetext>Created attachment 31040
Add webview property to get UA string + refactor UA version string in configure.ac

Same patch with just the property + version macros and without the getter/setter API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124758</commentid>
    <comment_count>17</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-06-08 06:04:14 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Created an attachment (id=31040) [review]
&gt; Add webview property to get UA string + refactor UA version string in
&gt; configure.ac
&gt; 
&gt; Same patch with just the property + version macros and without the
&gt; getter/setter API.

I still don&apos;t think this makes sense to have in the view. What is your reasoning as opposed to a setting? From my point of view, this means complicating the creation of views and having to manually keep track of the value to keep all views in sync.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124759</commentid>
    <comment_count>18</comment_count>
      <attachid>31040</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-08 06:17:57 -0700</bug_when>
    <thetext>Comment on attachment 31040
Add webview property to get UA string + refactor UA version string in configure.ac

&gt; +     * Since: 1.1.8

This should be 1.1.9, when landing.

&gt; +// Internal use only. See #WebKitWebView &apos;user-agent&apos; property to get the
&gt; +// User-Agent string used by the WebView

We will probably want to have getter and setter functions, since we have for most things already, so I recommend making this public. For now, I think this suffices, and since we already had a consensus on adding the property, including the getter (which is the API addition), I&apos;ll just go ahead and r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124761</commentid>
    <comment_count>19</comment_count>
      <attachid>31040</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-08 06:30:11 -0700</bug_when>
    <thetext>Comment on attachment 31040
Add webview property to get UA string + refactor UA version string in configure.ac

ok, I thought we had consensus here, but since we&apos;re still considering moving this to settings, let me take back my +</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124763</commentid>
    <comment_count>20</comment_count>
    <who name="Edgar Acosta">eacosta</who>
    <bug_when>2009-06-08 06:47:05 -0700</bug_when>
    <thetext>(In reply to comment #17)
It makes sense to have it in the view, provided it is a per view setting, since a user may want to force different UA depending on the url being visited. </thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124786</commentid>
    <comment_count>21</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-06-08 12:50:56 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #17)
&gt; It makes sense to have it in the view, provided it is a per view setting, since
&gt; a user may want to force different UA depending on the url being visited. 

To quote myself from this bug report:

If you want to allow spoofing based on the address, we should rather have
&quot;request-user-agent&quot; or something like that, which would be more useful than
trying to modify the string early enough.

Web settings are designed so that you can share them between views. I don&apos;t think it makes sense to break the design now. Instead, we should separately consider a different way.
For example, a &quot;request-setting&quot; signal on the web view which would allow you to override settings whenever they are read out. That would also make something like toggling scripts or Netscape plugins easy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124802</commentid>
    <comment_count>22</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-08 13:57:14 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Created an attachment (id=31040) [review] [review]
&gt; &gt; Add webview property to get UA string + refactor UA version string in
&gt; &gt; configure.ac
&gt; &gt; 
&gt; &gt; Same patch with just the property + version macros and without the
&gt; &gt; getter/setter API.
&gt; 
&gt; I still don&apos;t think this makes sense to have in the view. What is your
&gt; reasoning as opposed to a setting? From my point of view, this means

1. Having it in the view (properties, getters and setters) makes it more flexible for applications to control what&apos;s in their UA string.

2. Having it in the view allows for per site and per view spoofing.

3. I tend to associate UA strings to a WebView, not toa Setting.

&gt; complicating the creation of views and having to manually keep track of the
&gt; value to keep all views in sync.

What made you say it complicates things? Have you looked at the patch?

In comment #21:

&quot;For example, a &quot;request-setting&quot; signal on the web view which would allow you
to override settings whenever they are read out. That would also make something
like toggling scripts or Netscape plugins easy.&quot;

Why would you want to send a signal for possibly every request WebKitGtk makes? UA strings should be set before a request is made. I&apos;m not sure why we would want to ask for a UA everytime we need one.



&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>124806</commentid>
    <comment_count>23</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-06-08 14:10:00 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; Created an attachment (id=31040) [review] [review] [review]
&gt; &gt; &gt; Add webview property to get UA string + refactor UA version string in
&gt; &gt; &gt; configure.ac
&gt; &gt; &gt; 
&gt; &gt; &gt; Same patch with just the property + version macros and without the
&gt; &gt; &gt; getter/setter API.
&gt; &gt; 
&gt; &gt; I still don&apos;t think this makes sense to have in the view. What is your
&gt; &gt; reasoning as opposed to a setting? From my point of view, this means
&gt; 
&gt; 1. Having it in the view (properties, getters and setters) makes it more
&gt; flexible for applications to control what&apos;s in their UA string.
&gt; 
&gt; 2. Having it in the view allows for per site and per view spoofing.
&gt; 
&gt; 3. I tend to associate UA strings to a WebView, not toa Setting.
&gt; 
&gt; &gt; complicating the creation of views and having to manually keep track of the
&gt; &gt; value to keep all views in sync.
&gt; 
&gt; What made you say it complicates things? Have you looked at the patch?

It complicates because I have to keep track of the string instead of setting it once like any other setting.

&gt; &quot;For example, a &quot;request-setting&quot; signal on the web view which would allow you
&gt; to override settings whenever they are read out. That would also make something
&gt; like toggling scripts or Netscape plugins easy.&quot;
&gt; 
&gt; Why would you want to send a signal for possibly every request WebKitGtk makes?
&gt; UA strings should be set before a request is made. I&apos;m not sure why we would
&gt; want to ask for a UA everytime we need one.

Because you want to spoof your identitiy to work around bugs in websites. Safari and Opera do it according to a blacklist. My primary interest is a consistent state across all tabs, however, so I can only guess the use case.

Essentially I&apos;m still interested in knowing how you are using the API. Do you think this is different from enabling scripts or images based on the location?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127113</commentid>
    <comment_count>24</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-20 00:38:43 -0700</bug_when>
    <thetext>(In reply to comment #23)
&gt; &gt; 
&gt; &gt; What made you say it complicates things? Have you looked at the patch?
&gt; 
&gt; It complicates because I have to keep track of the string instead of setting it
&gt; once like any other setting.

Ah, ok. I think I get where you&apos;re coming from. So a WebSetting property will do what you want right? I&apos;ll revise the patch with this in mind.

&gt; Do you think this is different from enabling scripts or images based on the location?

I don&apos;t think this use case is something I&apos;ve thought about or even in the scope of my proposed API. But I&apos;ll think it in mind once I get to the API bits. Thanks for bringing it up.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127123</commentid>
    <comment_count>25</comment_count>
      <attachid>31591</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-20 02:09:22 -0700</bug_when>
    <thetext>Created attachment 31591
move the user-agent property from the view to the settings</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127131</commentid>
    <comment_count>26</comment_count>
      <attachid>31591</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-20 05:27:47 -0700</bug_when>
    <thetext>Comment on attachment 31591
move the user-agent property from the view to the settings

&gt; +# Sourced from WebCore/Configurations/Version.xcconfig
&gt; +m4_define([webkit_user_agent_major_version], [531])
&gt; +m4_define([webkit_user_agent_minor_version], [0])

I believe this needs to be raised already? The patch looks fine to me, and it&apos;s good that we have a test =). r=me if Xan and Christian are OK with the proposed API.

&gt; +
&gt;  AC_INIT([WebKit],[webkit_major_version.webkit_minor_version.webkit_micro_version],[http://bugs.webkit.org/])
&gt;  
&gt;  AC_CONFIG_MACRO_DIR([autotools])
&gt; @@ -16,9 +23,13 @@ AC_CANONICAL_HOST
&gt;  WEBKIT_MAJOR_VERSION=webkit_major_version
&gt;  WEBKIT_MINOR_VERSION=webkit_minor_version
&gt;  WEBKIT_MICRO_VERSION=webkit_micro_version
&gt; +WEBKIT_USER_AGENT_MAJOR_VERSION=webkit_user_agent_major_version
&gt; +WEBKIT_USER_AGENT_MINOR_VERSION=webkit_user_agent_minor_version
&gt;  AC_SUBST(WEBKIT_MAJOR_VERSION)
&gt;  AC_SUBST(WEBKIT_MINOR_VERSION)
&gt;  AC_SUBST(WEBKIT_MICRO_VERSION)
&gt; +AC_SUBST(WEBKIT_USER_AGENT_MAJOR_VERSION)
&gt; +AC_SUBST(WEBKIT_USER_AGENT_MINOR_VERSION)
&gt;  
&gt;  AC_CONFIG_SRCDIR([WebCore/config.h])
&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127154</commentid>
    <comment_count>27</comment_count>
    <who name="Christian Dywan">christian</who>
    <bug_when>2009-06-20 13:13:33 -0700</bug_when>
    <thetext>(In reply to comment #25)
&gt; Created an attachment (id=31591) [review]
&gt; move the user-agent property from the view to the settings

&gt; Ah, ok. I think I get where you&apos;re coming from. So a WebSetting property will
&gt; do what you want right? I&apos;ll revise the patch with this in mind.

Yes. Thanks a lot for the new patch.

+#if GLIB_CHECK_VERSION(2, 16, 0) &amp;&amp; GTK_CHECK_VERSION(2, 14, 0)

You can omit the Glib check in new tests, we require Glib 2.16 these days.

+    g_assert_cmpstr(userAgent, ==, &quot;Mozilla/5.0 (X11; U; Linux x86_64; c) AppleWebKit/531.0+ (KHTML, like Gecko) Safari/531.0+&quot;);

I have the feeling this test fails on non-linux and non-AMD64 machines. I think you can compare to webkit_get_user_agent() instead?

I wonder what DEFINE_STATIC_LOCAL is and why you rewrote the user agent functions. Looks fine, though, so it doesn&apos;t really matter to me.

@@ -617,6 +640,8 @@ static void webkit_web_settings_set_property(GObject* object, guint prop_id, con
         g_slist_free(priv-&gt;spell_checking_languages_list);
         priv-&gt;spell_checking_languages_list = spellLanguages;
         break;
+    case PROP_USER_AGENT:
+        break; // do nothing for now

I think you forgot to add a line to update the string? :)

&gt; +# Sourced from WebCore/Configurations/Version.xcconfig
&gt; +m4_define([webkit_user_agent_major_version], [531])
&gt; +m4_define([webkit_user_agent_minor_version], [0])

I suggest in a different patch we simply start reading Version.xcconfig or alternatively propose a port-agnostic place to define this version.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127166</commentid>
    <comment_count>28</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-20 16:19:31 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; +#if GLIB_CHECK_VERSION(2, 16, 0) &amp;&amp; GTK_CHECK_VERSION(2, 14, 0)
&gt; 
&gt; You can omit the Glib check in new tests, we require Glib 2.16 these days.

That will be in a separate bug/patch since we need to update all our unit tests.

&gt; 
&gt; +    g_assert_cmpstr(userAgent, ==, &quot;Mozilla/5.0 (X11; U; Linux x86_64; c)
&gt; AppleWebKit/531.0+ (KHTML, like Gecko) Safari/531.0+&quot;);
&gt; 
&gt; I have the feeling this test fails on non-linux and non-AMD64 machines. I think
&gt; you can compare to webkit_get_user_agent() instead?

Yeah. I&apos;ll update. Thanks.

&gt; +    case PROP_USER_AGENT:
&gt; +        break; // do nothing for now
&gt; 
&gt; I think you forgot to add a line to update the string? :)

I&apos;m meant to add those in a separate patch. But since the design changed I might as well include it in the next patch.

&gt; 
&gt; &gt; +# Sourced from WebCore/Configurations/Version.xcconfig
&gt; &gt; +m4_define([webkit_user_agent_major_version], [531])
&gt; &gt; +m4_define([webkit_user_agent_minor_version], [0])
&gt; 
&gt; I suggest in a different patch we simply start reading Version.xcconfig or
&gt; alternatively propose a port-agnostic place to define this version.

Yup.

I&apos;ll update the patch. Thanks for the feedback.

&gt; 

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127334</commentid>
    <comment_count>29</comment_count>
      <attachid>31641</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-22 03:35:11 -0700</bug_when>
    <thetext>Created attachment 31641
updated per Christian&apos;s feedback

I&apos;ve updated the patch based on Christian&apos;s feedback. Also with this patch you can set a custom user-agent string via the user-agent property. If a custom UA string has been set. get_user_agent will return the custom UA string. If there&apos;s no custom UA string, it will return the default UA string.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127374</commentid>
    <comment_count>30</comment_count>
      <attachid>31641</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-22 10:44:39 -0700</bug_when>
    <thetext>Comment on attachment 31641
updated per Christian&apos;s feedback

&gt; +     * WebKitWebSettings:user-agent:
&gt; +     *
&gt; +     * The User-Agent string used by WebKitGtk.
&gt; +     *
&gt; +     * This will return a default User-Agent string if a custom string wasn&apos;t
&gt; +     * provided by the application.

Only a nitpick: I wouldn&apos;t say &apos;return&apos; here, since this is a property, not a function. How about &apos;This holds a default User-Agent string, if a custom string...&apos;? I know we have other properties with similarly incorrect docs, but I&apos;d rather we fix them, than adding more =D. Looks good to me otherwise. Christian, Xan?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127627</commentid>
    <comment_count>31</comment_count>
      <attachid>31641</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-06-23 06:33:14 -0700</bug_when>
    <thetext>Comment on attachment 31641
updated per Christian&apos;s feedback

&gt; +    /**
&gt; +     * WebKitWebSettings:user-agent:
&gt; +     *
&gt; +     * The User-Agent string used by WebKitGtk.
&gt; +     *
&gt; +     * This will return a default User-Agent string if a custom string wasn&apos;t
&gt; +     * provided by the application.
&gt; +     *
&gt; +     * Since: 1.1.11
&gt; +     */
&gt; +    g_object_class_install_property(gobject_class, PROP_USER_AGENT,
&gt; +                                    g_param_spec_string(&quot;user-agent&quot;,
&gt; +                                                        _(&quot;User Agent&quot;),
&gt; +                                                        _(&quot;The User-Agent string used by WebKitGtk&quot;),
&gt; +                                                        NULL,

Shouldn&apos;t you specify the actual default value instead of NULL?

&gt;  
&gt; +    priv-&gt;custom_user_agent = CString();
&gt; +    priv-&gt;user_agent = CString();

Shouldn&apos;t you use &apos;delete&apos; here?

&gt; +    case PROP_USER_AGENT:
&gt; +        // Set a custom User-Agent string

I think this comment is a bit superfluous.

&gt; +/**
&gt; + * webkit_web_settings_get_user_agent:
&gt; + * @web_view: a #WebKitWebSettings

@web_settings, not @web_view

&gt; + *
&gt; + * Returns the User-Agent string currently used by the WebView.

By the web view(s) associated with the @web_settings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127953</commentid>
    <comment_count>32</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-24 11:50:46 -0700</bug_when>
    <thetext>(In reply to comment #31)
&gt; Shouldn&apos;t you specify the actual default value instead of NULL?

hrm, I guess that makes sense.

&gt; &gt; +    priv-&gt;custom_user_agent = CString();
&gt; &gt; +    priv-&gt;user_agent = CString();
&gt; 
&gt; Shouldn&apos;t you use &apos;delete&apos; here?

No, because there&apos;s no &apos;new&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>127956</commentid>
    <comment_count>33</comment_count>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-06-24 11:58:42 -0700</bug_when>
    <thetext>&gt; &gt; &gt; +    priv-&gt;custom_user_agent = CString();
&gt; &gt; &gt; +    priv-&gt;user_agent = CString();
&gt; &gt; 
&gt; &gt; Shouldn&apos;t you use &apos;delete&apos; here?
&gt; 
&gt; No, because there&apos;s no &apos;new&apos;.
&gt; 

Ah, right. Since CString seems to be refcounted then release the reference I guess. My point is that assigning a new empty CString, while possibly has the side-effect of freeing the old one, does not seem to be a very clean way of freeing memory?
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128420</commentid>
    <comment_count>34</comment_count>
      <attachid>31914</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-26 00:56:11 -0700</bug_when>
    <thetext>Created attachment 31914
updated per xan&apos;s feedback, converted CString to gchar</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>128898</commentid>
    <comment_count>35</comment_count>
      <attachid>31914</attachid>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2009-06-29 14:52:35 -0700</bug_when>
    <thetext>Comment on attachment 31914
updated per xan&apos;s feedback, converted CString to gchar

@@ WebKitWebSettings* webkit_web_settings_copy(WebKitWebSettings* web_settings)
794893                  &quot;enable-html5-database&quot;, priv-&gt;enable_html5_database,
795894                  &quot;enable-html5-local-storage&quot;, priv-&gt;enable_html5_local_storage,
796895                  &quot;enable-xss-auditor&quot;, priv-&gt;enable_xss_auditor,
 896                  &quot;user-agent&quot;, webkit_web_settings_get_user_agent(web_settings),
797897                  NULL));
798898 
799899     return copy;

Here, maybe it makes sense to check if the user agent has been customized, and only set user-agent if so? The rest keeps looking good to me. Ah, you seem to still be including CString.h, I think you don&apos;t need it anymore?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129043</commentid>
    <comment_count>36</comment_count>
      <attachid>32055</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 05:42:32 -0700</bug_when>
    <thetext>Created attachment 32055
updated patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129044</commentid>
    <comment_count>37</comment_count>
      <attachid>32056</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 05:45:52 -0700</bug_when>
    <thetext>Created attachment 32056
updated patch with empty string test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129045</commentid>
    <comment_count>38</comment_count>
      <attachid>32055</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-06-30 05:48:55 -0700</bug_when>
    <thetext>Comment on attachment 32055
updated patch

&gt; +    // test the default UA string
&gt; +    g_object_get(G_OBJECT(settings),&quot;user-agent&quot;, &amp;userAgent, NULL);
&gt; +    g_assert_cmpstr(userAgent, ==, webkit_web_settings_get_user_agent(settings));
&gt; +    g_free(userAgent);
&gt; +

This is not really checking anything, right? Just that you get the same through the property and the direct API. You should cache the value, though...

&gt; +    // test a custom UA string
&gt; +    userAgent = NULL;
&gt; +    g_object_set(G_OBJECT(settings), &quot;user-agent&quot;, &quot;testwebsettings/0.1&quot;, NULL);
&gt; +    g_object_get(G_OBJECT(settings),&quot;user-agent&quot;, &amp;userAgent, NULL);
&gt; +    g_assert_cmpstr(userAgent, ==, &quot;testwebsettings/0.1&quot;);
&gt; +    g_free(userAgent);
&gt; +
&gt; +    // setting it to NULL or an empty value should give us the default UA string
&gt; +    userAgent = NULL;
&gt; +    g_object_set(G_OBJECT(settings), &quot;user-agent&quot;, NULL, NULL);
&gt; +    g_object_get(G_OBJECT(settings),&quot;user-agent&quot;, &amp;userAgent, NULL);
&gt; +    g_assert_cmpstr(userAgent, ==, webkit_web_settings_get_user_agent(settings));

... so you can compare it here. Otherwise you are not really checking anything, right?



&gt; +    /**
&gt; +     * WebKitWebSettings:user-agent:
&gt; +     *
&gt; +     * The User-Agent string used by WebKitGtk.
&gt; +     *
&gt; +     * This will return a default User-Agent string if a custom string wasn&apos;t
&gt; +     * provided by the application.
&gt; +     *
&gt; +     * Since: 1.1.11

The doc sould mention the bit about NULL being an effective reset.

With those two things it looks good to me, so r=me from my side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129049</commentid>
    <comment_count>39</comment_count>
      <attachid>32059</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 06:03:46 -0700</bug_when>
    <thetext>Created attachment 32059
updated patch with some test and doc fixes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129058</commentid>
    <comment_count>40</comment_count>
      <attachid>32063</attachid>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-06-30 06:36:08 -0700</bug_when>
    <thetext>Created attachment 32063
proper fix to the test + version bump to 531.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129253</commentid>
    <comment_count>41</comment_count>
      <attachid>32063</attachid>
    <who name="Xan Lopez">xan.lopez</who>
    <bug_when>2009-06-30 22:52:45 -0700</bug_when>
    <thetext>Comment on attachment 32063
proper fix to the test + version bump to 531.2

Looks good to me. Since Gustavo already said he was OK with it I&apos;ll r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>129694</commentid>
    <comment_count>42</comment_count>
    <who name="Jan Alonzo">jmalonzo</who>
    <bug_when>2009-07-03 02:58:28 -0700</bug_when>
    <thetext>(In reply to comment #41)
&gt; (From update of attachment 32063 [details])
&gt; Looks good to me. Since Gustavo already said he was OK with it I&apos;ll r+.

Landed in r45531 - http://trac.webkit.org/changeset/45531</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>22707</attachid>
            <date>2008-08-08 10:49:12 -0700</date>
            <delta_ts>2009-01-24 19:37:40 -0800</delta_ts>
            <desc>Really old patch</desc>
            <filename>webkit-user-agent.patch</filename>
            <type>text/plain</type>
            <size>4106</size>
            <attacher name="Sven Herzberg">sven</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IDM2OWUwOTAuLmMzODc5M2YgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTkyLDYgKzE5MiwxMCBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0aW9uVG9Db21taXR0ZWRGcm9t
Q2FjaGVkUGFnZShDYWNoZWRQYWdlKikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdHJhbnNp
dGlvblRvQ29tbWl0dGVkRm9yTmV3UGFnZSgpID0gMDsKIAorI2lmIFBMQVRGT1JNKEdUSykKKyAg
ICAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKSB7fTsKKyNlbmRp
ZgorCiAgICAgICAgIHZpcnR1YWwgYm9vbCBjYW5DYWNoZVBhZ2UoKSBjb25zdCA9IDA7CiAgICAg
ICAgIHZpcnR1YWwgdm9pZCBkb3dubG9hZChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNl
UmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFJlc291cmNlUmVzcG9uc2Um
KSA9IDA7CiAKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNs
aWVudEd0ay5jcHAKaW5kZXggMGU1NjFkMS4uN2Q5YjJkZiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0
ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTEzNCw2ICsxMzQs
MTEgQEAgc3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkKICAgICByZXR1cm4gdWE7CiB9
CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVz
ZXJBZ2VudCkKK3sKKyAgICBtX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDsKK30KKwogU3RyaW5nIEZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7CiAgICAgaWYgKG1fdXNl
ckFnZW50LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuaAppbmRleCAyNmI0ZWYyLi40MzlhYzI5IDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC0xNjksNiArMTY5
LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRUaXRsZShj
b25zdCBXZWJDb3JlOjpTdHJpbmcmIHRpdGxlLCBjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpTdHJpbmcgdXNlckFnZW50KGNvbnN0IFdlYkNvcmU6OktV
UkwmKTsKKyAgICAgICAgdmlydHVhbCB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpT
dHJpbmcmKTsKIAogICAgICAgICB2aXJ0dWFsIHZvaWQgc2F2ZVBsYXRmb3JtRGF0YVRvQ2FjaGVk
UGFnZShXZWJDb3JlOjpDYWNoZWRQYWdlKik7CiAgICAgICAgIHZpcnR1YWwgdm9pZCB0cmFuc2l0
aW9uVG9Db21taXR0ZWRGcm9tQ2FjaGVkUGFnZShXZWJDb3JlOjpDYWNoZWRQYWdlKik7CmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC9oZWFkZXJzLnByaSBiL1dlYktpdC9ndGsvd2Via2l0
L2hlYWRlcnMucHJpCmluZGV4IGQ1M2Q4MjUuLjJlMTc3NTEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L2hlYWRlcnMucHJpCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L2hlYWRlcnMucHJp
CkBAIC0xLDUgKzEsNiBAQAogV0VCS0lUX0FQSV9IRUFERVJTID0gJCRQV0Qvd2Via2l0LmggXAog
ICAgICAgICAgICAgICAgICAgICAgJCRQV0Qvd2Via2l0ZGVmaW5lcy5oIFwKKyAgICAgICAgICAg
ICAgICAgICAgICQkUFdEL3dlYmtpdGd0a3ByaXZhdGUuaCBcCiAgICAgICAgICAgICAgICAgICAg
ICAkJFBXRC93ZWJraXRuZXR3b3JrcmVxdWVzdC5oIFwKICAgICAgICAgICAgICAgICAgICAgICQk
UFdEL3dlYmtpdHdlYmJhY2tmb3J3YXJkbGlzdC5oIFwKICAgICAgICAgICAgICAgICAgICAgICQk
UFdEL3dlYmtpdHdlYmZyYW1lLmggXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Vi
a2l0d2ViZnJhbWUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuY3BwCmlu
ZGV4IDRhZTBkZWYuLjFiNDg4MWEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYmZyYW1lLmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5jcHAK
QEAgLTY3OSw0ICs2NzksOSBAQCB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfcHJpbnQoV2ViS2l0V2Vi
RnJhbWUqKQogCiAjZW5kaWYKIAorV0VCS0lUX0FQSSB2b2lkIHdlYmtpdF93ZWJfZnJhbWVfc2V0
X3VzZXJfYWdlbnQgKFdlYktpdFdlYkZyYW1lKiBmcmFtZSwgY2hhciBjb25zdCogdXNlcl9hZ2Vu
dCkKK3sKKyAgICBmcmFtZS0+cHJpdi0+Y2xpZW50LT5zZXRVc2VyQWdlbnQgKHVzZXJfYWdlbnQp
OworfQorCiB9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5o
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2ViZnJhbWUuaAppbmRleCBhODlkYTQ2Li5iOWVl
YmMwIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJmcmFtZS5oCisrKyBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYmZyYW1lLmgKQEAgLTkxLDYgKzkxLDkgQEAgd2Vi
a2l0X3dlYl9mcmFtZV9maW5kX2ZyYW1lIChXZWJLaXRXZWJGcmFtZSogZnJhbWUsIGNvbnN0IGdj
aGFyKiBuYW1lKTsKIFdFQktJVF9BUEkgSlNHbG9iYWxDb250ZXh0UmVmCiB3ZWJraXRfd2ViX2Zy
YW1lX2dldF9nbG9iYWxfY29udGV4dCAoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKTsKIAorV0VCS0lU
X0FQSSB2b2lkCit3ZWJraXRfd2ViX2ZyYW1lX3NldF91c2VyX2FnZW50IChXZWJLaXRXZWJGcmFt
ZSogZnJhbWUsIGNvbnN0IGdjaGFyKiBhZ2VudCk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvV2ViS2l0VG9vbHMv
R3RrTGF1bmNoZXIvbWFpbi5jCmluZGV4IDhlZDI2OTAuLjQxY2I0MmUgMTAwNjQ0Ci0tLSBhL1dl
YktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYworKysgYi9XZWJLaXRUb29scy9HdGtMYXVuY2hl
ci9tYWluLmMKQEAgLTExNSw2ICsxMTUsOCBAQCBjcmVhdGVfYnJvd3NlciAoKQogICAgIHdlYl92
aWV3ID0gV0VCS0lUX1dFQl9WSUVXICh3ZWJraXRfd2ViX3ZpZXdfbmV3ICgpKTsKICAgICBndGtf
Y29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoc2Nyb2xsZWRfd2luZG93KSwgR1RLX1dJREdF
VCAod2ViX3ZpZXcpKTsKIAorICAgIHdlYmtpdF93ZWJfZnJhbWVfc2V0X3VzZXJfYWdlbnQgKHdl
YmtpdF93ZWJfdmlld19nZXRfbWFpbl9mcmFtZSAod2ViX3ZpZXcpLCAiTW96aWxsYS81LjAgKFgx
MTsgVTsgTGludXggaTY4NjsgZW4tVVMpIEFwcGxlV2ViS2l0LzQyMCsgKEtIVE1MLCBsaWtlIEdl
Y2tvLCBidXQgbW9yZSBzbGlmZnkpIik7CisKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVD
VCAod2ViX3ZpZXcpLCAidGl0bGUtY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKHRpdGxlX2NoYW5nZV9j
YiksIHdlYl92aWV3KTsKICAgICBnX3NpZ25hbF9jb25uZWN0IChHX09CSkVDVCAod2ViX3ZpZXcp
LCAibG9hZC1wcm9ncmVzcy1jaGFuZ2VkIiwgR19DQUxMQkFDSyAocHJvZ3Jlc3NfY2hhbmdlX2Ni
KSwgd2ViX3ZpZXcpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUICh3ZWJfdmlldyks
ICJsb2FkLWNvbW1pdHRlZCIsIEdfQ0FMTEJBQ0sgKGxvYWRfY29tbWl0X2NiKSwgd2ViX3ZpZXcp
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>27004</attachid>
            <date>2009-01-24 19:37:40 -0800</date>
            <delta_ts>2009-06-30 05:42:14 -0700</delta_ts>
            <desc>Implement &quot;user-agent&quot; web settings property</desc>
            <filename>p.diff</filename>
            <type>text/plain</type>
            <size>9099</size>
            <attacher name="Christian Dywan">christian</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmggYi9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlckNsaWVudC5oCmluZGV4IGI5MGNlY2QuLmY0Yjk4NjEgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyQ2xpZW50LmgKKysrIGIvV2ViQ29yZS9s
b2FkZXIvRnJhbWVMb2FkZXJDbGllbnQuaApAQCAtMTc5LDYgKzE3OSw5IEBAIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKICAgICAgICAgdmlydHVhbCBQYXNzUmVmUHRyPERvY3VtZW50TG9hZGVyPiBjcmVh
dGVEb2N1bWVudExvYWRlcihjb25zdCBSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYpID0gMDsKICAgICAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZyYg
dGl0bGUsIGNvbnN0IEtVUkwmKSA9IDA7CiAKKyNpZiBQTEFURk9STShHVEspCisgICAgICAgIHZp
cnR1YWwgdm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJikgPSAwOworI2VuZGlmCiAgICAg
ICAgIHZpcnR1YWwgU3RyaW5nIHVzZXJBZ2VudChjb25zdCBLVVJMJikgPSAwOwogICAgICAgICAK
ICAgICAgICAgdmlydHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZFBhZ2UoQ2FjaGVk
UGFnZSopID0gMDsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVM
b2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5jcHAKaW5kZXggMWI0MTBjNy4uMDQxOTlhZCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTE1Miw2ICsx
NTIsMTEgQEAgc3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkKICAgICByZXR1cm4gdWE7
CiB9CiAKK3ZvaWQgRnJhbWVMb2FkZXJDbGllbnQ6OnNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcm
IHVzZXJBZ2VudCkKK3sKKyAgICBtX3VzZXJBZ2VudCA9IHVzZXJBZ2VudDsKK30KKwogU3RyaW5n
IEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7CiAgICAgaWYgKG1f
dXNlckFnZW50LmlzRW1wdHkoKSkKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBjNjk1MmRiLi5kODY1NDFjIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCkBAIC0xNjEsNiAr
MTYxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgICAgIHZpcnR1YWwgV1RGOjpQYXNzUmVm
UHRyPFdlYkNvcmU6OkRvY3VtZW50TG9hZGVyPiBjcmVhdGVEb2N1bWVudExvYWRlcihjb25zdCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBXZWJDb3JlOjpTdWJzdGl0dXRlRGF0YSYp
OwogICAgICAgICB2aXJ0dWFsIHZvaWQgc2V0VGl0bGUoY29uc3QgV2ViQ29yZTo6U3RyaW5nJiB0
aXRsZSwgY29uc3QgV2ViQ29yZTo6S1VSTCYpOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBzZXRV
c2VyQWdlbnQoY29uc3QgV2ViQ29yZTo6U3RyaW5nJik7CiAgICAgICAgIHZpcnR1YWwgV2ViQ29y
ZTo6U3RyaW5nIHVzZXJBZ2VudChjb25zdCBXZWJDb3JlOjpLVVJMJik7CiAKICAgICAgICAgdmly
dHVhbCB2b2lkIHNhdmVQbGF0Zm9ybURhdGFUb0NhY2hlZFBhZ2UoV2ViQ29yZTo6Q2FjaGVkUGFn
ZSopOwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3Bw
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCmluZGV4IGFhMzhjNmMu
LjQ1ZGJhZjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdz
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKQEAgLTc0
LDYgKzc0LDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdjaGFy
KiB1c2VyX3N0eWxlc2hlZXRfdXJpOwogICAgIGdmbG9hdCB6b29tX3N0ZXA7CiAgICAgZ2Jvb2xl
YW4gZW5hYmxlX2RldmVsb3Blcl9leHRyYXM7CisgICAgZ2NoYXIqIHVzZXJfYWdlbnQ7CiB9Owog
CiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lO
U1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMDEsNyArMTAyLDggQEAgZW51bSB7CiAgICAgUFJP
UF9SRVNJWkFCTEVfVEVYVF9BUkVBUywKICAgICBQUk9QX1VTRVJfU1RZTEVTSEVFVF9VUkksCiAg
ICAgUFJPUF9aT09NX1NURVAsCi0gICAgUFJPUF9FTkFCTEVfREVWRUxPUEVSX0VYVFJBUworICAg
IFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVMsCisgICAgUFJPUF9VU0VSX0FHRU5UCiB9Owog
CiBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVj
dCk7CkBAIC0zMzUsNiArMzM3LDI1IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nf
Y2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICogV2ViS2l0V2ViU2V0dGluZ3M6dXNl
ci1hZ2VudDoKKyAgICAqCisgICAgKiBUaGUgaWRlbnRpZmljYXRpb24gc3RyaW5nIG9mIHRoZSB1
c2VyIGFnZW50LgorICAgICoKKyAgICAqIElmIHRoaXMgdmFsdWUgaXMgbGVmdCBlbXB0eSwgV2Vi
S2l0IGNvbnN0cnVjdHMgYSBNb3ppbGxhIHN0eWxlCisgICAgKiBpZGVudGlmaWNhdGlvbiBzdHJp
bmcgdG8gd2hpY2ggaXQgYXBwZW5kcyBhbW9uZyBvdGhlciBwaWVjZXMKKyAgICAqIGFuIGludGVy
bmFsIHZlcnNpb24gb2YgdGhlIFdlYktpdCBlbmdpbmUgYW5kIHRoZSBhcHBsaWNhdGlvbiBuYW1l
LgorICAgICoKKyAgICAqIFNpbmNlOiAxLjEuMQorICAgICovCisgICAgZ19vYmplY3RfY2xhc3Nf
aW5zdGFsbF9wcm9wZXJ0eShnb2JqZWN0X2NsYXNzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgUFJPUF9VU0VSX0FHRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZygidXNlci1hZ2VudCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiVXNlciBBZ2VudCIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiVGhlIGlkZW50aWZpY2F0aW9uIHN0cmluZyBvZiB0aGUgdXNlciBh
Z2VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKKwogICAgIGdfdHlwZV9jbGFz
c19hZGRfcHJpdmF0ZShrbGFzcywgc2l6ZW9mKFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpOwog
fQogCkBAIC0zNTYsNiArMzc3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19m
aW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgZ19mcmVlKHByaXYtPnNhbnNfc2VyaWZfZm9u
dF9mYW1pbHkpOwogICAgIGdfZnJlZShwcml2LT5zZXJpZl9mb250X2ZhbWlseSk7CiAgICAgZ19m
cmVlKHByaXYtPnVzZXJfc3R5bGVzaGVldF91cmkpOworICAgIGdfZnJlZShwcml2LT51c2VyX2Fn
ZW50KTsKIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfc2V0dGluZ3NfcGFyZW50X2Ns
YXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KQEAgLTQzNyw2ICs0NTksMTAgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWlu
dCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxFX0RFVkVMT1BFUl9FWFRSQVM6CiAg
ICAgICAgIHByaXYtPmVuYWJsZV9kZXZlbG9wZXJfZXh0cmFzID0gZ192YWx1ZV9nZXRfYm9vbGVh
bih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAg
ICAgICBnX2ZyZWUocHJpdi0+dXNlcl9hZ2VudCk7CisgICAgICAgIHByaXYtPnVzZXJfYWdlbnQg
PSBnX3ZhbHVlX2R1cF9zdHJpbmcodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNTEyLDYgKzUzOCw5IEBAIHN0YXRpYyB2
b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3Vp
bnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX0VOQUJMRV9ERVZFTE9QRVJfRVhUUkFTOgog
ICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfZGV2ZWxvcGVy
X2V4dHJhcyk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAg
ICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPnVzZXJfYWdlbnQpOworICAgICAg
ICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJP
UEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0t
Z2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAzNThhY2U5Li43ZDNjZGVlIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMTYxNywxMyArMTYxNywyMCBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3ZpZXdfc2NyZWVuX2NoYW5nZWQoV2ViS2l0V2ViVmlldyogd2ViVmlldywg
R2RrU2NyZWVuKiBwcgogICAgIHNldHRpbmdzLT5zZXRNaW5pbXVtTG9naWNhbEZvbnRTaXplKG1p
bmltdW1Mb2dpY2FsRm9udFNpemUgLyA3Mi4wICogRFBJKTsKIH0KIAorc3RhdGljIHZvaWQgd2Vi
Vmlld1NldFVzZXJBZ2VudChXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBjb25zdCBnY2hhciogdXNl
ckFnZW50KQoreworICAgIC8qIEZJWE1FOiBEbyB0aGlzIG9uIGFsbCBmcmFtZXMgKi8KKyAgICAv
KiBGSVhNRTogU2hvdWxkIHdlIGNoZWNrIGlmIGxvYWRlciBhbmQgY2xpZW50IGFyZSB2YWxpZD8g
Ki8KKyAgICBjb3JlKHdlYlZpZXcpLT5tYWluRnJhbWUoKS0+bG9hZGVyKCktPmNsaWVudCgpLT5z
ZXRVc2VyQWdlbnQoU3RyaW5nOjpmcm9tVVRGOCh1c2VyQWdlbnQpKTsKK30KKwogc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3
KQogewogICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKICAg
ICBXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MgPSBwcml2LT53ZWJTZXR0aW5nczsKICAg
ICBTZXR0aW5ncyogc2V0dGluZ3MgPSBjb3JlKHdlYlZpZXcpLT5zZXR0aW5ncygpOwogCi0gICAg
Z2NoYXIqIGRlZmF1bHRFbmNvZGluZywgKmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZvbnRG
YW1pbHksICpmYW50YXN5Rm9udEZhbWlseSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5zU2Vy
aWZGb250RmFtaWx5LCAqc2VyaWZGb250RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmk7CisgICAg
Z2NoYXIqIGRlZmF1bHRFbmNvZGluZywgKmN1cnNpdmVGb250RmFtaWx5LCAqZGVmYXVsdEZvbnRG
YW1pbHksICpmYW50YXN5Rm9udEZhbWlseSwgKm1vbm9zcGFjZUZvbnRGYW1pbHksICpzYW5zU2Vy
aWZGb250RmFtaWx5LCAqc2VyaWZGb250RmFtaWx5LCAqdXNlclN0eWxlc2hlZXRVcmksICp1c2Vy
QWdlbnQ7CiAgICAgZ2Jvb2xlYW4gYXV0b0xvYWRJbWFnZXMsIGF1dG9TaHJpbmtJbWFnZXMsIHBy
aW50QmFja2dyb3VuZHMsIGVuYWJsZVNjcmlwdHMsIGVuYWJsZVBsdWdpbnMsIGVuYWJsZURldmVs
b3BlckV4dHJhcywgcmVzaXphYmxlVGV4dEFyZWFzOwogCiAgICAgZ19vYmplY3RfZ2V0KHdlYlNl
dHRpbmdzLApAQCAtMTY0Miw2ICsxNjQ5LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgICAgICAgICAgICAg
ICAicmVzaXphYmxlLXRleHQtYXJlYXMiLCAmcmVzaXphYmxlVGV4dEFyZWFzLAogICAgICAgICAg
ICAgICAgICAidXNlci1zdHlsZXNoZWV0LXVyaSIsICZ1c2VyU3R5bGVzaGVldFVyaSwKICAgICAg
ICAgICAgICAgICAgImVuYWJsZS1kZXZlbG9wZXItZXh0cmFzIiwgJmVuYWJsZURldmVsb3BlckV4
dHJhcywKKyAgICAgICAgICAgICAgICAgInVzZXItYWdlbnQiLCAmdXNlckFnZW50LAogICAgICAg
ICAgICAgICAgICBOVUxMKTsKIAogICAgIHNldHRpbmdzLT5zZXREZWZhdWx0VGV4dEVuY29kaW5n
TmFtZShkZWZhdWx0RW5jb2RpbmcpOwpAQCAtMTY1OSw2ICsxNjY3LDcgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQog
ICAgIHNldHRpbmdzLT5zZXRUZXh0QXJlYXNBcmVSZXNpemFibGUocmVzaXphYmxlVGV4dEFyZWFz
KTsKICAgICBzZXR0aW5ncy0+c2V0VXNlclN0eWxlU2hlZXRMb2NhdGlvbihLVVJMKHVzZXJTdHls
ZXNoZWV0VXJpKSk7CiAgICAgc2V0dGluZ3MtPnNldERldmVsb3BlckV4dHJhc0VuYWJsZWQoZW5h
YmxlRGV2ZWxvcGVyRXh0cmFzKTsKKyAgICB3ZWJWaWV3U2V0VXNlckFnZW50KHdlYlZpZXcsIHVz
ZXJBZ2VudCk7CiAKICAgICBnX2ZyZWUoZGVmYXVsdEVuY29kaW5nKTsKICAgICBnX2ZyZWUoY3Vy
c2l2ZUZvbnRGYW1pbHkpOwpAQCAtMTY2OCw2ICsxNjc3LDcgQEAgc3RhdGljIHZvaWQgd2Via2l0
X3dlYl92aWV3X3VwZGF0ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogICAgIGdf
ZnJlZShzYW5zU2VyaWZGb250RmFtaWx5KTsKICAgICBnX2ZyZWUoc2VyaWZGb250RmFtaWx5KTsK
ICAgICBnX2ZyZWUodXNlclN0eWxlc2hlZXRVcmkpOworICAgIGdfZnJlZSh1c2VyQWdlbnQpOwog
CiAgICAgd2Via2l0X3dlYl92aWV3X3NjcmVlbl9jaGFuZ2VkKHdlYlZpZXcsIE5VTEwsIE5VTEwp
OwogfQpAQCAtMTcyNyw2ICsxNzM3LDggQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3Nl
dHRpbmdzX25vdGlmeShXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MsIEdQYXIKICAgICAg
ICAgc2V0dGluZ3MtPnNldFVzZXJTdHlsZVNoZWV0TG9jYXRpb24oS1VSTChnX3ZhbHVlX2dldF9z
dHJpbmcoJnZhbHVlKSkpOwogICAgIGVsc2UgaWYgKG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJl
bmFibGUtZGV2ZWxvcGVyLWV4dHJhcyIpKQogICAgICAgICBzZXR0aW5ncy0+c2V0RGV2ZWxvcGVy
RXh0cmFzRW5hYmxlZChnX3ZhbHVlX2dldF9ib29sZWFuKCZ2YWx1ZSkpOworICAgIGVsc2UgaWYg
KG5hbWUgPT0gZ19pbnRlcm5fc3RyaW5nKCJ1c2VyLWFnZW50IikpCisgICAgICAgIHdlYlZpZXdT
ZXRVc2VyQWdlbnQod2ViVmlldywgZ192YWx1ZV9nZXRfc3RyaW5nKCZ2YWx1ZSkpOwogICAgIGVs
c2UgaWYgKCFnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5KEdfT0JKRUNUX0dFVF9DTEFTUyh3
ZWJTZXR0aW5ncyksIG5hbWUpKQogICAgICAgICBnX3dhcm5pbmcoIlVuZXhwZWN0ZWQgc2V0dGlu
ZyAnJXMnIiwgbmFtZSk7CiAgICAgZ192YWx1ZV91bnNldCgmdmFsdWUpOwpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIvbWFpbi5jIGIvV2ViS2l0VG9vbHMvR3RrTGF1bmNoZXIv
bWFpbi5jCmluZGV4IDhlZDI2OTAuLjA4MjM1MDggMTAwNjQ0Ci0tLSBhL1dlYktpdFRvb2xzL0d0
a0xhdW5jaGVyL21haW4uYworKysgYi9XZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMKQEAg
LTE4Myw2ICsxODMsOCBAQCBpbnQKIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiB7CiAg
ICAgZ3RrX2luaXQgKCZhcmdjLCAmYXJndik7CisgICAgaWYgKCFnX3RocmVhZF9zdXBwb3J0ZWQg
KCkpCisgICAgICAgIGdfdGhyZWFkX2luaXQgKE5VTEwpOwogCiAgICAgR3RrV2lkZ2V0KiB2Ym94
ID0gZ3RrX3Zib3hfbmV3IChGQUxTRSwgMCk7CiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0IChHVEtf
Qk9YICh2Ym94KSwgY3JlYXRlX3Rvb2xiYXIgKCksIEZBTFNFLCBGQUxTRSwgMCk7CkBAIC0xOTEs
MTIgKzE5MywxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciogYXJndltdKQogCiAgICAgbWFpbl93
aW5kb3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09O
VEFJTkVSIChtYWluX3dpbmRvdyksIHZib3gpOwotCi0gICAgZ2NoYXIqIHVyaSA9IChnY2hhciop
IChhcmdjID4gMSA/IGFyZ3ZbMV0gOiAiaHR0cDovL3d3dy5nb29nbGUuY29tLyIpOworV2ViS2l0
V2ViU2V0dGluZ3MqIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyAod2Vi
X3ZpZXcpOworZ19vYmplY3Rfc2V0IChzZXR0aW5ncywgInVzZXItYWdlbnQiLCAiRnVua3kvMS4y
LjMiLCBOVUxMKTsKKyAgICBnY2hhciogdXJpID0gKGdjaGFyKikgKGFyZ2MgPiAxID8gYXJndlsx
XSA6ICJodHRwOi8vd3d3LnVzZXJhZ2VudC5vcmciKTsKICAgICB3ZWJraXRfd2ViX3ZpZXdfb3Bl
biAod2ViX3ZpZXcsIHVyaSk7CiAKICAgICBndGtfd2lkZ2V0X2dyYWJfZm9jdXMgKEdUS19XSURH
RVQgKHdlYl92aWV3KSk7CiAgICAgZ3RrX3dpZGdldF9zaG93X2FsbCAobWFpbl93aW5kb3cpOwor
CiAgICAgZ3RrX21haW4gKCk7CiAKICAgICByZXR1cm4gMDsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30468</attachid>
            <date>2009-05-19 06:28:32 -0700</date>
            <delta_ts>2009-06-08 00:54:02 -0700</delta_ts>
            <desc>Add WebView APIs to manipulate the UA string </desc>
            <filename>useragent.patch</filename>
            <type>text/plain</type>
            <size>22422</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBlYjA3ZDYzLi45MmY1MDg2
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDUtMTkgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLiBBZGQgbmV3CisgICAgICAgIHdlYnZpZXcgdGVz
dHMgdG8gdGVzdCB0aGUgVXNlci1BZ2VudCBBUElzLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA1LTE4ICBKYW4gTWljaGFlbCBB
bG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgogCiAgICAgICAgICBSZXZpZXdlZCBieSBYYW4g
TG9wZXouCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4
IGFiYThlNDkuLmFlZTQ4YzEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1h
a2VmaWxlLmFtCkBAIC01MTEsNyArNTExLDggQEAgd2Via2l0X3Rlc3RzX2xkZmxhZ3MgPSBcCiBU
RVNUX1BST0dTICs9IFByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViZnJhbWUgXAogCVByb2dyYW1z
L3VuaXR0ZXN0cy90ZXN0d2ViYmFja2ZvcndhcmRsaXN0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMv
dGVzdHdlYmhpc3RvcnlpdGVtIFwKLQlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGRvd25sb2FkCisJ
UHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3Rkb3dubG9hZCBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rl
c3R3ZWJ2aWV3CiAKICMgQWRkIGFkZGl0aW9uYWwgdGVzdHMgaGVyZQogUHJvZ3JhbXNfdW5pdHRl
c3RzX3Rlc3R3ZWJmcmFtZV9TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2ViZnJhbWUu
YwpAQCAtNTM0LDYgKzUzNSwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfdGVzdGRvd25sb2FkX0NG
TEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3VuaXR0ZXN0c190ZXN0ZG93
bmxvYWRfTERBREQgPSAkKHdlYmtpdF90ZXN0c19sZGFkZCkKIFByb2dyYW1zX3VuaXR0ZXN0c190
ZXN0ZG93bmxvYWRfTERGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1z
X3VuaXR0ZXN0c190ZXN0d2Vidmlld19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vi
dmlldy5jCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYnZpZXdfQ0ZMQUdTID0gJCh3ZWJraXRf
dGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJ2aWV3X0xEQUREID0gJCh3
ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYnZpZXdfTERGTEFH
UyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCisKICMgQXV0b2dlbmVyYXRlZCBzb3VyY2VzCiBC
VUlMVF9TT1VSQ0VTIDo9IFwKIAkkKGphdmFzY3JpcHRjb3JlX2J1aWx0X3NvdXJjZXMpIFwKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5k
ZXggYjNkZDhlMy4uYTA4YTdjNyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysr
IGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAwOS0wNS0xOSAgSmFu
IE1pY2hhZWwgQWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdXNlci1hZ2VudCBmcm9tIGFwcGxp
Y2F0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzM3NQorCisgICAgICAgIEFkZCBXZWJWaWV3IEFQSSB0byBtYW5pcHVsYXRlIHRoZSBVc2VyLUFn
ZW50IHN0cmluZy4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVy
Q2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6RnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudCk6
CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaDoKKyAgICAg
ICAgKiB0ZXN0cy90ZXN0d2Vidmlldy5jOiBBZGRlZC4KKyAgICAgICAgKHRlc3Rfd2Via2l0X3dl
Yl92aWV3X3VzZXJfYWdlbnQpOgorICAgICAgICAobWFpbik6CisgICAgICAgICogd2Via2l0L3dl
YmtpdHByaXZhdGUuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluOgorICAg
ICAgICAqIHdlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19nZXRfcHJvcGVydHkpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UpOgorICAg
ICAgICAod2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl92
aWV3X2dldF9zdGFuZGFyZF91c2VyX2FnZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9hZ2VudCk6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2FwcGxpY2F0aW9u
X25hbWVfZm9yX3VzZXJfYWdlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9hcHBs
aWNhdGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19n
ZXRfY3VzdG9tX3VzZXJfYWdlbnQpOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X3NldF9jdXN0
b21fdXNlcl9hZ2VudCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZpZXcuaDoKKwogMjAw
OS0wNS0xNSAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3Jl
U3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAppbmRleCA1YzA5N2ViLi45ZGE2NzZkIDEwMDY0
NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cApAQCAtNjIsOSArNjIsNiBAQAogI2luY2x1ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dp
MThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaWYgUExBVEZPUk0oVU5JWCkKLSNpbmNs
dWRlIDxzeXMvdXRzbmFtZS5oPgotI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwog
CkBAIC03Miw3ICs2OSw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiBGcmFtZUxvYWRlckNsaWVu
dDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2ViRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFt
ZShmcmFtZSkKLSAgICAsIG1fdXNlckFnZW50KCIiKQogICAgICwgbV9wb2xpY3lEZWNpc2lvbigw
KQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2lu
KGZhbHNlKQpAQCAtODYsODYgKzgyLDkgQEAgRnJhbWVMb2FkZXJDbGllbnQ6On5GcmFtZUxvYWRl
ckNsaWVudCgpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1fcG9saWN5RGVjaXNpb24pOwogfQog
Ci1zdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQotewotI2lmZGVmIEdES19XSU5ET1dJTkdf
WDExCi0gICAgcmV0dXJuICJYMTEiOwotI2VsaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1dJTjMy
KQotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfUVVB
UlRaKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNlbGlmIGRlZmluZWQoR0RLX1dJTkRPV0lO
R19ESVJFQ1RGQikKLSAgICByZXR1cm4gIkRpcmVjdEZCIjsKLSNlbHNlCi0gICAgbm90SW1wbGVt
ZW50ZWQoKTsKLSAgICByZXR1cm4gIlVua25vd24iOwotI2VuZGlmCi19Ci0KLXN0YXRpYyBTdHJp
bmcgYWdlbnRPUygpCi17Ci0jaWYgUExBVEZPUk0oREFSV0lOKQotI2lmIFBMQVRGT1JNKFg4NikK
LSAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKLSNlbHNlCi0gICAgcmV0dXJuICJQUEMgTWFj
IE9TIFgiOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShVTklYKQotICAgIHN0cnVjdCB1dHNuYW1l
IG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkKLSAgICAgICAgcmV0dXJuIFN0cmlu
Zzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFtZS5tYWNoaW5lKTsKLSAgICBlbHNl
Ci0gICAgICAgIHJldHVybiAiVW5rbm93biI7Ci0jZWxpZiBQTEFURk9STShXSU5fT1MpCi0gICAg
Ly8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lvbgotICAgIHJldHVybiAiV2luZG93
cyI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJVbmtub3duIjsK
LSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGNvbXBvc2VVc2VyQWdlbnQoKQotewotICAgIC8v
IFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mIGh0dHA6Ly93d3cubW96aWxsYS5v
cmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3MuaHRtbAotICAgIC8vIFNlZSBhbHNv
IGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ludGVybmV0L3NhZmFyaS9mYXEuaHRtbCNhbmNo
b3IyCi0KLSAgICBTdHJpbmcgdWE7Ci0KLSAgICAvLyBQcm9kdWN0Ci0gICAgdWEgKz0gIk1vemls
bGEvNS4wIjsKLQotICAgIC8vIENvbW1lbnQKLSAgICB1YSArPSAiICgiOwotICAgIHVhICs9IGFn
ZW50UGxhdGZvcm0oKTsgLy8gUGxhdGZvcm0KLSAgICB1YSArPSAiOyBVOyAiOyAvLyBTZWN1cml0
eQotICAgIHVhICs9IGFnZW50T1MoKTsgLy8gT1Mtb3ItQ1BVCi0gICAgdWEgKz0gIjsgIjsKLSAg
ICB1YSArPSBkZWZhdWx0TGFuZ3VhZ2UoKTsgLy8gTG9jYWxpemF0aW9uIGluZm9ybWF0aW9uCi0g
ICAgdWEgKz0gIikgIjsKLQotICAgIC8vIFdlYktpdCBQcm9kdWN0Ci0gICAgLy8gRklYTUU6IFRo
ZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nIHdl
YktpdFZlcnNpb24gPSAiNTI4LjUrIjsKLSAgICB1YSArPSAiQXBwbGVXZWJLaXQvIiArIHdlYktp
dFZlcnNpb247Ci0gICAgdWEgKz0gIiAoS0hUTUwsIGxpa2UgR2Vja28sICI7Ci0gICAgLy8gV2Ug
bWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0ZXMgY2hlY2sgZm9yIGl0IChPbW5p
V2ViIGRvZXMgdGhpcyB0b28pCi0gICAgLy8gV2UgcmUtdXNlIHRoZSBXZWJLaXQgdmVyc2lvbiwg
dGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVjaCBpbiBwcmFjdGljZQotICAgIHVh
ICs9ICJTYWZhcmkvIiArIHdlYktpdFZlcnNpb247Ci0gICAgdWEgKz0gIikgIjsKLQotICAgIC8v
IFZlbmRvciBQcm9kdWN0Ci0gICAgdWEgKz0gZ19nZXRfcHJnbmFtZSgpOwotCi0gICAgcmV0dXJu
IHVhOwotfQotCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6OnVzZXJBZ2VudChjb25zdCBLVVJM
JikKIHsKLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgpKQotICAgICAgICBtX3VzZXJBZ2Vu
dCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLQotICAgIHJldHVybiBtX3VzZXJBZ2VudDsKKyAgICBy
ZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQoZ2V0
Vmlld0Zyb21GcmFtZShtX2ZyYW1lKSkpOwogfQogCiBzdGF0aWMgdm9pZCBub3RpZnlTdGF0dXMo
V2ViS2l0V2ViRnJhbWUqIGZyYW1lLCBXZWJLaXRMb2FkU3RhdHVzIGxvYWRTdGF0dXMpCmRpZmYg
LS1naXQgYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgg
Yi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKaW5kZXgg
Zjg1YzYzYS4uYjBjZWVkNiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuaApAQCAtMTczLDcgKzE3Myw2IEBAIG5hbWVzcGFjZSBXZWJLaXQg
ewogICAgIHByaXZhdGU6CiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAg
ICBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgICAgIFdlYkNvcmU6
OlN0cmluZyBtX3VzZXJBZ2VudDsKICAgICAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIG1f
cG9saWN5RGVjaXNpb247CiAKICAgICAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0
YSB0bwpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jIGIvV2ViS2l0
L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAuLmZjMDI5NTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJ2
aWV3LmMKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWlj
aGFlbCBBbG9uem8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQg
YnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgor
ICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi
ZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNl
aXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAq
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBV
U0EuCisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5j
bHVkZSA8d2Via2l0L3dlYmtpdC5oPgorCisjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDE2LCAw
KSAmJiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKKworc3RhdGljIHZvaWQgdGVzdF93ZWJr
aXRfd2ViX3ZpZXdfdXNlcl9hZ2VudCh2b2lkKQoreworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZp
ZXc7CisKKyAgICBnX3Rlc3RfYnVnKCIxNzM3NSIpOworICAgIHdlYlZpZXcgPSB3ZWJraXRfd2Vi
X3ZpZXdfbmV3KCk7CisgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7CisKKyAgICB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X2FwcGxpY2F0aW9uX25hbWVfZm9yX3VzZXJfYWdlbnQod2ViVmlldywg
InRlc3R3ZWJ2aWV3Iik7CisgICAgZ19hc3NlcnRfY21wc3RyKHdlYmtpdF93ZWJfdmlld19nZXRf
YXBwbGljYXRpb25fbmFtZV9mb3JfdXNlcl9hZ2VudCh3ZWJWaWV3KSwgPT0sICJ0ZXN0d2Vidmll
dyIpOworCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9jdXN0b21fdXNlcl9hZ2VudCh3ZWJWaWV3
LCAidGVzdHdlYnZpZXcvMC4xIEFwcGxlV2ViS2l0LzUwMCsiKTsKKyAgICBnX2Fzc2VydF9jbXBz
dHIod2Via2l0X3dlYl92aWV3X2dldF9jdXN0b21fdXNlcl9hZ2VudCh3ZWJWaWV3KSwgPT0sICJ0
ZXN0d2Vidmlldy8wLjEgQXBwbGVXZWJLaXQvNTAwKyIpOworCisgICAgZ2NoYXIqIHVzZXJBZ2Vu
dDsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViVmlldyksInVzZXItYWdlbnQiLCAmdXNl
ckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgInRlc3R3
ZWJ2aWV3LzAuMSBBcHBsZVdlYktpdC81MDArIik7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisK
KyAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNo
YXIqKiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5p
dCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vidmlldy91
c2VyX2FnZW50IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfdXNlcl9hZ2VudCk7CisgICAgcmV0dXJu
IGdfdGVzdF9ydW4gKCk7Cit9CisKKyNlbHNlCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFy
Z3YpCit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBnbGliLTIuMTYu
MCBhbmQgZ3RrLTIuMTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIERvaW5nIG5vdGhpbmcgbm93
LiIpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUu
aAppbmRleCA5M2JiODIwLi40ZTgxNTQxIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBA
IC00MCw2ICs0MCw3IEBACiAKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNpbmNsdWRl
IDxlbmNoYW50Lmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkhpc3RvcnlJdGVt
LmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC05Miw4ICs5
Myw5IEBAIGV4dGVybiAiQyIgewogICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2Vi
V2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKLSAg
ICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKLSAgICAg
ICAgV2ViQ29yZTo6U3RyaW5nKiB1c2VyQWdlbnQ7CisgICAgICAgIFdlYkNvcmU6OkNTdHJpbmcg
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50OworICAgICAgICBXZWJDb3JlOjpDU3RyaW5nIHVz
ZXJBZ2VudDsKKyAgICAgICAgYm9vbCB1c2VyQWdlbnRPdmVycmlkZW47CiAKICAgICAgICAgV2Vi
S2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExpc3Q7CiAKQEAgLTIxNSw2ICsyMTcs
MTAgQEAgZXh0ZXJuICJDIiB7CiAKICAgICBib29sCiAgICAgd2Via2l0X3dlYl92aWV3X3VzZV9w
cmltYXJ5X2Zvcl9wYXN0ZShXZWJLaXRXZWJWaWV3KiB3ZWJfdmlldyk7CisKKyAgICBHX0NPTlNU
X1JFVFVSTiBnY2hhcioKKyAgICB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQoV2ViS2l0
V2ViVmlldyogd2ViX3ZpZXcpOworCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVy
c2lvbi5oLmluCmluZGV4IGY3MDgwMGQuLjlmMWI4MTggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbgorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2
ZXJzaW9uLmguaW4KQEAgLTI4LDYgKzI4LDggQEAgR19CRUdJTl9ERUNMUwogI2RlZmluZSBXRUJL
SVRfTUFKT1JfVkVSU0lPTiAoQFdFQktJVF9NQUpPUl9WRVJTSU9OQCkKICNkZWZpbmUgV0VCS0lU
X01JTk9SX1ZFUlNJT04gKEBXRUJLSVRfTUlOT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJVF9N
SUNST19WRVJTSU9OIChAV0VCS0lUX01JQ1JPX1ZFUlNJT05AKQorI2RlZmluZSBXRUJLSVRfVVNF
Ul9BR0VOVF9NQUpPUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTkAp
CisjZGVmaW5lIFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT04gKEBXRUJLSVRfVVNFUl9B
R0VOVF9NSU5PUl9WRVJTSU9OQCkKIAogI2RlZmluZSBXRUJLSVRfQ0hFQ0tfVkVSU0lPTihtYWpv
ciwgbWlub3IsIG1pY3JvKSBcCiAgIChXRUJLSVRfTUFKT1JfVkVSU0lPTiA+IChtYWpvcikgfHwg
XApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA5NjFiYzhhLi4wOWY4NTU5IDEw
MDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtMzQsNiArMzQsNyBAQAogI2luY2x1
ZGUgIndlYmtpdHdlYmluc3BlY3Rvci5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmJhY2tmb3J3YXJk
bGlzdC5oIgogI2luY2x1ZGUgIndlYmtpdHdlYmhpc3RvcnlpdGVtLmgiCisjaW5jbHVkZSAid2Vi
a2l0dmVyc2lvbi5oIgogCiAjaW5jbHVkZSAiQVhPYmplY3RDYWNoZS5oIgogI2luY2x1ZGUgIk5v
dEltcGxlbWVudGVkLmgiCkBAIC01OCw2ICs1OSw3IEBACiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1s
aWIuaD4KICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JD
bGllbnRHdGsuaCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVy
LmgiCiAjaW5jbHVkZSAiRnJhbWVWaWV3LmgiCiAjaW5jbHVkZSAiUGFzdGVib2FyZEhlbHBlci5o
IgpAQCAtNzAsNiArNzIsMTAgQEAKICNpbmNsdWRlIDx3dGYvR093blB0ci5oPgogCiAjaW5jbHVk
ZSA8Z2RrL2dka2tleXN5bXMuaD4KKyNpZiBQTEFURk9STShVTklYKQorI2luY2x1ZGUgPHN5cy91
dHNuYW1lLmg+CisjZW5kaWYKKwogCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2VidmlldwpAQCAt
MTYwLDcgKzE2Niw4IEBAIGVudW0gewogICAgIFBST1BfTE9BRF9TVEFUVVMsCiAgICAgUFJPUF9Q
Uk9HUkVTUywKICAgICBQUk9QX0VOQ09ESU5HLAotICAgIFBST1BfQ1VTVE9NX0VOQ09ESU5HCisg
ICAgUFJPUF9DVVNUT01fRU5DT0RJTkcsCisgICAgUFJPUF9VU0VSX0FHRU5UCiB9OwogCiBzdGF0
aWMgZ3VpbnQgd2Via2l0X3dlYl92aWV3X3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwLCB9OwpA
QCAtMzI3LDYgKzMzNCw5IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvcGVy
dHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUqCiAgICAgY2FzZSBQUk9Q
X1BST0dSRVNTOgogICAgICAgICBnX3ZhbHVlX3NldF9kb3VibGUodmFsdWUsIHdlYmtpdF93ZWJf
dmlld19nZXRfcHJvZ3Jlc3Mod2ViVmlldykpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBS
T1BfVVNFUl9BR0VOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQod2ViVmlldykpOworICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgfQpAQCAtOTIxLDggKzkzMSw4IEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKICAgICAgICAgZ3RrX3Rh
cmdldF9saXN0X3VucmVmKHByaXYtPnBhc3RlX3RhcmdldF9saXN0KTsKICAgICAgICAgcHJpdi0+
cGFzdGVfdGFyZ2V0X2xpc3QgPSBOVUxMOwogCi0gICAgICAgIGRlbGV0ZSBwcml2LT51c2VyQWdl
bnQ7Ci0gICAgICAgIHByaXYtPnVzZXJBZ2VudCA9IE5VTEw7CisgICAgICAgIHByaXYtPnVzZXJB
Z2VudCA9IENTdHJpbmcoKTsKKyAgICAgICAgcHJpdi0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50ID0gQ1N0cmluZygpOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJf
dmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBAIC0xOTY3LDYgKzE5NzcsMjAg
QEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2ViS2l0V2ViVmlld0Ns
YXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIDAuMCwgMS4wLCAxLjAsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkp
OwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp1c2VyLWFnZW50OgorICAgICAqCisg
ICAgICogVGhlIFVzZXItQWdlbnQgc3RyaW5nIHRoYXQgaXMgdXNlZCBieSB0aGUgV2ViVmlldy4K
KyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuOAorICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNz
X2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfVVNFUl9BR0VOVCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInVzZXItYWdl
bnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2VyLUFnZW50IHN0cmluZyB1c2VkIGJ5IHRo
ZSBXZWJWaWV3IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOworCiAgICAgZ190eXBl
X2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktpdFdlYlZpZXdQcml2
YXRlKSk7CiB9CiAKQEAgLTMyOTcsMyArMzMyMSwxNjIgQEAgdm9pZCB3ZWJraXRfd2ViX3ZpZXdf
bW92ZV9jdXJzb3IoV2ViS2l0V2ViVmlldyogd2ViVmlldywgR3RrTW92ZW1lbnRTdGVwIHN0ZXAs
IGcKICAgICBnYm9vbGVhbiBoYW5kbGVkOwogICAgIGdfc2lnbmFsX2VtaXQod2ViVmlldywgd2Vi
a2l0X3dlYl92aWV3X3NpZ25hbHNbTU9WRV9DVVJTT1JdLCAwLCBzdGVwLCBjb3VudCwgJmhhbmRs
ZWQpOwogfQorCisKKy8vIGNyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKKy8vIFRo
aXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mIGh0dHA6Ly93d3cubW96aWxsYS5vcmcv
YnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3MuaHRtbAorLy8gU2VlIGFsc28gaHR0cDov
L2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJuZXQvc2FmYXJpL2ZhcS5odG1sI2FuY2hvcjIKK3N0
YXRpYyBTdHJpbmcgd2Via2l0X3dlYl92aWV3X2dldF9zdGFuZGFyZF91c2VyX2FnZW50KFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBhcHBsaWNhdGlvbk5hbWUpCit7CisKKyAg
ICBzdGF0aWMgY29uc3QgZ2NoYXIqIHBsYXRmb3JtOworICAgIHN0YXRpYyBjb25zdCBnY2hhciog
b3NWZXJzaW9uOworCisjaWYgUExBVEZPUk0oWDExKQorICAgIHBsYXRmb3JtID0gZ19zdHJkdXAo
IlgxMSIpOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAgIHBsYXRmb3JtID0gZ19zdHJkdXAo
IldpbmRvd3MiKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVw
KCJNYWNpbnRvc2giKTsKKyNlbGlmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJFQ1RGQikKKyAg
ICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJEaXJlY3RGQiIpOworI2Vsc2UKKyAgICBwbGF0Zm9ybSA9
IGdfc3RyZHVwKCJVbmtub3duIik7CisjZW5kaWYKKworICAgLy8gRklYTUU6IHBsYXRmb3JtL3Zl
cnNpb24gZGV0ZWN0aW9uIGNhbiBiZSBzaGFyZWQuCisjaWYgUExBVEZPUk0oREFSV0lOKQorCisj
aWYgUExBVEZPUk0oWDg2KQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJJbnRlbCBNYWMgT1Mg
WCIpOworI2Vsc2UKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiUFBDIE1hYyBPUyBYIik7Cisj
ZW5kaWYKKworI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwor
ICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAgICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVw
KFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFtZS5tYWNoaW5lKS51dGY4
KCkuZGF0YSgpKTsKKyAgICBlbHNlCisgICAgICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJVbmtu
b3duIik7CisKKyNlbGlmIFBMQVRGT1JNKFdJTl9PUykKKyAgICAvLyBGSVhNRTogQ29tcHV0ZSB0
aGUgV2luZG93cyB2ZXJzaW9uCisgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIldpbmRvd3MiKTsK
KworI2Vsc2UKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiVW5rbm93biIpOworI2VuZGlmCisK
KyAgICAvLyBXZSBtZW50aW9uIFNhZmFyaSBzaW5jZSBtYW55IGJyb2tlbiBzaXRlcyBjaGVjayBm
b3IgaXQgKE9tbmlXZWIgZG9lcyB0aGlzIHRvbykKKyAgICAvLyBXZSByZS11c2UgdGhlIFdlYktp
dCB2ZXJzaW9uLCB0aG91Z2ggaXQgZG9lc24ndCBzZWVtIHRvIG1hdHRlciBtdWNoIGluIHByYWN0
aWNlCisKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgdWFWZXJzaW9uLCAo
U3RyaW5nOjpmb3JtYXQoIiVkLiVkKyIsIFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04s
IFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT04pKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHN0YXRpY1VBLCAoU3RyaW5nOjpmb3JtYXQoIk1vemlsbGEvNS4w
ICglczsgVTsgJXM7ICVzKSBBcHBsZVdlYktpdC8lcyAoS0hUTUwsIGxpa2UgR2Vja28pIFNhZmFy
aS8lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGxhdGZvcm0sIG9zVmVyc2lvbiwgZGVmYXVsdExhbmd1YWdlKCkudXRm
OCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCksIHVhVmVyc2lvbi51dGY4KCkuZGF0
YSgpKSkpOworICAgIGlmIChhcHBsaWNhdGlvbk5hbWUpIHsKKyAgICAgICAgREVGSU5FX1NUQVRJ
Q19MT0NBTChjb25zdCBTdHJpbmcsIGN1c3RvbVVBLCAoU3RyaW5nOjpmb3JtYXQoIk1vemlsbGEv
NS4wICglczsgVTsgJXM7ICVzKSBBcHBsZVdlYktpdC8lcyAoS0hUTUwsIGxpa2UgR2Vja28pICVz
IFNhZmFyaS8lcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtLCBvc1ZlcnNpb24sIGRlZmF1bHRMYW5n
dWFnZSgpLnV0ZjgoKS5kYXRhKCksIHVhVmVyc2lvbi51dGY4KCkuZGF0YSgpLCBhcHBsaWNhdGlv
bk5hbWUsIHVhVmVyc2lvbi51dGY4KCkuZGF0YSgpKSkpOworICAgICAgICByZXR1cm4gY3VzdG9t
VUE7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXRpY1VBOworfQorCisvLyBJbnRlcm5hbCB1c2Ug
b25seS4gU2VlICNXZWJLaXRXZWJWaWV3ICd1c2VyLWFnZW50JyBwcm9wZXJ0eSB0byBnZXQgdGhl
CisvLyBVc2VyLUFnZW50IHN0cmluZyB1c2VkIGJ5IHRoZSBXZWJWaWV3CitHX0NPTlNUX1JFVFVS
TiBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF91c2VyX2FnZW50KFdlYktpdFdlYlZpZXcqIHdl
YlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdl
YlZpZXcpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2YXRlKiBwcml2ID0gd2ViVmll
dy0+cHJpdjsKKworICAgIC8vIEZJWE1FOiBhZGQgc2l0ZS1zcGVjaWZpYyBzcG9vZmluZyBhbGEg
TWFjCisKKyAgICBpZiAocHJpdi0+dXNlckFnZW50LmlzTnVsbCgpKQorICAgICAgICBwcml2LT51
c2VyQWdlbnQgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N0YW5kYXJkX3VzZXJfYWdlbnQod2ViVmll
dywgcHJpdi0+YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50LmRhdGEoKSkudXRmOCgpOworCisg
ICAgcmV0dXJuIHByaXYtPnVzZXJBZ2VudC5kYXRhKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dl
Yl92aWV3X2dldF9hcHBsaWNhdGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50OgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfdmlld19zZXRfYXBw
bGljYXRpb25fbmFtZV9mb3JfdXNlcl9hZ2VudAorICoKKyAqIFJldHVybnMgdGhlIG5hbWUgb2Yg
dGhlIGFwcGxpY2F0aW9uIHVzZWQgaW4gdGhlICNXZWJLaXRXZWJWaWV3J3MgVXNlci1BZ2VudAor
ICogc3RyaW5nLCBvciAlTlVMTCBvZiB0aGUgYXBwbGljYXRpb24gZGlkbid0IHNldCBhbiBhcHBs
aWNhdGlvbiBuYW1lLgorICoKKyAqIFNpbmNlOiAxLjEuOAorICovCitHX0NPTlNUX1JFVFVSTiBn
Y2hhciogd2Via2l0X3dlYl92aWV3X2dldF9hcHBsaWNhdGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50
KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwoV0VC
S0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpLCBOVUxMKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2
YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKworICAgIHJldHVybiBwcml2LT5hcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQuaXNOdWxsKCkgPyBOVUxMIDogcHJpdi0+YXBwbGljYXRpb25OYW1l
Rm9yVXNlckFnZW50LmRhdGEoKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfc2V0X2Fw
cGxpY2F0aW9uX25hbWVfZm9yX3VzZXJfYWdlbnQ6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdl
YlZpZXcKKyAqIEBhcHBsaWNhdGlvbl9uYW1lOiB0aGUgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24g
dG8gYmUgdXNlZCBpbiB0aGUgVXNlci1BZ2VudCBzdHJpbmcKKyAqIEBzZWVfYWxzbzogd2Via2l0
X3dlYl92aWV3X2dldF9hcHBsaWNhdGlvbl9mb3JfdXNlcl9hZ2VudAorICoKKyAqIFNldHMgdGhl
IGFwcGxpY2F0aW9uIG5hbWUgdG8gYmUgdXNlZCBpbiB0aGUgI1dlYktpdFdlYlZpZXcncyBVc2Vy
LUFnZW50CisgKiBzdHJpbmcuCisgKgorICogU2luY2U6IDEuMS44CisgKi8KK3ZvaWQgd2Via2l0
X3dlYl92aWV3X3NldF9hcHBsaWNhdGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50KFdlYktpdFdlYlZp
ZXcqIHdlYlZpZXcsIGNvbnN0IGdjaGFyKiBhcHBOYW1lKQoreworICAgIGdfcmV0dXJuX2lmX2Zh
aWwoV0VCS0lUX0lTX1dFQl9WSUVXKHdlYlZpZXcpKTsKKworICAgIFdlYktpdFdlYlZpZXdQcml2
YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKKyAgICBwcml2LT5hcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQgPSBDU3RyaW5nKGFwcE5hbWUpOworCisgICAgaWYgKCFwcml2LT51c2VyQWdlbnRP
dmVycmlkZW4pCisgICAgICAgIHByaXYtPnVzZXJBZ2VudCA9IENTdHJpbmcoKTsKK30KKworLyoq
CisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV91c2VyX2FnZW50OgorICogQHdlYl92aWV3
OiBhICNXZWJLaXRXZWJWaWV3CisgKiBAc2VlX2Fsc286IHdlYmtpdF93ZWJfdmlld19zZXRfY3Vz
dG9tX3VzZXJfYWdlbnQKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXN0b20gVXNlci1BZ2VudCBzdHJp
bmcgYXMgc2V0IGJ5IHRoZSB1c2VyLCBvciAlTlVMTCBpZiB0aGUKKyAqIHVzZXIgaGFzbid0IGFu
eSBjdXN0b20gVXNlci1BZ2VudCBzdHJpbmcgdG8gYmUgdXNlZC4KKyAqCisgKiBTaW5jZTogMS4x
LjgKKyAqLworR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfdmlld19nZXRfY3VzdG9t
X3VzZXJfYWdlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxf
aWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgV2ViS2l0
V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgaWYgKCFwcml2LT51
c2VyQWdlbnRPdmVycmlkZW4pCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIHBy
aXYtPnVzZXJBZ2VudC5kYXRhKCk7Cit9CisKKy8qKgorICogd2Via2l0X3dlYl92aWV3X3NldF9j
dXN0b21fdXNlcl9hZ2VudDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViVmlldworICogQHNl
ZV9hbHNvOiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV91c2VyX2FnZW50CisgKgorICogU2V0
cyBhIGN1c3RvbSBVc2VyLUFnZW50IHN0cmluZyB0byBiZSB1c2VkIGJ5IHRoZSAjV2ViS2l0V2Vi
VmlldworICoKKyAqIFNpbmNlOiAxLjEuOAorICovCit2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRf
Y3VzdG9tX3VzZXJfYWdlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIHVz
ZXJBZ2VudCkKK3sKKyAgICBnX3JldHVybl9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJW
aWV3KSk7CisKKyAgICBXZWJLaXRXZWJWaWV3UHJpdmF0ZSogcHJpdiA9IHdlYlZpZXctPnByaXY7
CisKKyAgICBwcml2LT51c2VyQWdlbnQgPSBDU3RyaW5nKHVzZXJBZ2VudCk7CisgICAgcHJpdi0+
dXNlckFnZW50T3ZlcnJpZGVuID0gIXByaXYtPnVzZXJBZ2VudC5pc051bGwoKTsKK30KZGlmZiAt
LWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuaAppbmRleCA2MGQzMzBlLi4wZmQyNGU4IDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vidmlldy5oCkBAIC0zMzgsNiArMzM4LDIwIEBAIHdlYmtpdF93ZWJfdmlld19nZXRf
bG9hZF9zdGF0dXMgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3Zp
ZXcpCiBXRUJLSVRfQVBJIGdkb3VibGUKIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvZ3Jlc3MgICAg
ICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqd2ViX3ZpZXcpOwogCitXRUJL
SVRfQVBJIEdfQ09OU1RfUkVUVVJOIGdjaGFyKgord2Via2l0X3dlYl92aWV3X2dldF9hcHBsaWNh
dGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50IChXZWJLaXRXZWJWaWV3ICAgICp3ZWJfdmlldyk7CisK
K1dFQktJVF9BUEkgdm9pZAord2Via2l0X3dlYl92aWV3X3NldF9hcHBsaWNhdGlvbl9uYW1lX2Zv
cl91c2VyX2FnZW50IChXZWJLaXRXZWJWaWV3ICAgICp3ZWJfdmlldywKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICAq
YXBwbGljYXRpb25fbmFtZSk7CisKK1dFQktJVF9BUEkgR19DT05TVF9SRVRVUk4gZ2NoYXIqCit3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2N1c3RvbV91c2VyX2FnZW50ICAgICAgICAgICAoV2ViS2l0V2Vi
VmlldyAgICAgICAgKndlYl92aWV3KTsKKworV0VCS0lUX0FQSSB2b2lkCit3ZWJraXRfd2ViX3Zp
ZXdfc2V0X2N1c3RvbV91c2VyX2FnZW50ICAgICAgICAgICAoV2ViS2l0V2ViVmlldyAgICAgICAg
KndlYl92aWV3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGdjaGFyICAgICAgICAgICp1c2VyX2FnZW50KTsKKwogR19FTkRfREVDTFMKIAog
I2VuZGlmCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9DaGFuZ2VMb2cgYi9XZWJLaXRUb29scy9D
aGFuZ2VMb2cKaW5kZXggYjQwOGY3OS4uZGQ4OWRkNCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMv
Q2hhbmdlTG9nCisrKyBiL1dlYktpdFRvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisy
MDA5LTA1LTE5ICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3JnPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB1c2VyLWFn
ZW50IGZyb20gYXBwbGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE3Mzc1CisKKyAgICAgICAgQWRkIEd0a0xhdW5jaGVyJ3MgYXBwbGljYXRp
b24gbmFtZSB0byB0aGUgVUEgc3RyaW5nLgorCisgICAgICAgICogR3RrTGF1bmNoZXIvbWFpbi5j
OgorICAgICAgICAobWFpbik6CisKIDIwMDktMDUtMTggIEtldmluIE9sbGl2aWVyICA8a2V2aW5v
QHRoZW9sbGl2aWVycy5jb20+CiAKICAgICAgICAgd3ggYnVpbGQgZml4LCBpbml0aWFsaXplIHZh
cmlhYmxlIHRoYXQgZG9lc24ndCBnZXQgc2V0IG9uIFdpbmRvd3MuCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9HdGtMYXVuY2hlci9tYWluLmMgYi9XZWJLaXRUb29scy9HdGtMYXVuY2hlci9tYWlu
LmMKaW5kZXggMWJhYjlhZS4uNGRkYzM2MCAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvR3RrTGF1
bmNoZXIvbWFpbi5jCisrKyBiL1dlYktpdFRvb2xzL0d0a0xhdW5jaGVyL21haW4uYwpAQCAtMTk3
LDYgKzE5Nyw4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiBhcmd2W10pCiAgICAgbWFpbl93aW5k
b3cgPSBjcmVhdGVfd2luZG93ICgpOwogICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJ
TkVSIChtYWluX3dpbmRvdyksIHZib3gpOwogCisgICAgd2Via2l0X3dlYl92aWV3X3NldF9hcHBs
aWNhdGlvbl9uYW1lX2Zvcl91c2VyX2FnZW50KHdlYl92aWV3LCAiR3RrTGF1bmNoZXIvMC4xIik7
CisKICAgICBnY2hhciogdXJpID0gKGdjaGFyKikgKGFyZ2MgPiAxID8gYXJndlsxXSA6ICJodHRw
Oi8vd3d3Lmdvb2dsZS5jb20vIik7CiAgICAgd2Via2l0X3dlYl92aWV3X2xvYWRfdXJpICh3ZWJf
dmlldywgdXJpKTsKIApkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmlu
ZGV4IDliNDBmM2QuLjFmYTY4NzkgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25m
aWd1cmUuYWMKQEAgLTQsNiArNCwxMyBAQCBtNF9kZWZpbmUoW3dlYmtpdF9tYWpvcl92ZXJzaW9u
XSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWlub3JfdmVyc2lvbl0sIFsxXSkKIG00X2RlZmlu
ZShbd2Via2l0X21pY3JvX3ZlcnNpb25dLCBbN10pCiAKKyMgVGhpcyBpcyB0aGUgdmVyc2lvbiB3
ZSdsbCBiZSB1c2luZyBhcyBwYXJ0IG9mIG91ciBVc2VyLUFnZW50IHN0cmluZworIyBlLmcuLCBB
cHBsZVdlYktpdC8kKHdlYmtpdF91c2VyX2FnZW50X3ZlcnNpb24pIC4uLgorIworIyBTb3VyY2Vk
IGZyb20gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCittNF9kZWZpbmUo
W3dlYmtpdF91c2VyX2FnZW50X21ham9yX3ZlcnNpb25dLCBbNTMwXSkKK200X2RlZmluZShbd2Vi
a2l0X3VzZXJfYWdlbnRfbWlub3JfdmVyc2lvbl0sIFsxMV0pCisKIEFDX0lOSVQoW1dlYktpdF0s
W3dlYmtpdF9tYWpvcl92ZXJzaW9uLndlYmtpdF9taW5vcl92ZXJzaW9uLndlYmtpdF9taWNyb192
ZXJzaW9uXSxbaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9dKQogCiBBQ19DT05GSUdfTUFDUk9fRElS
KFthdXRvdG9vbHNdKQpAQCAtMTYsOSArMjMsMTMgQEAgQUNfQ0FOT05JQ0FMX0hPU1QKIFdFQktJ
VF9NQUpPUl9WRVJTSU9OPXdlYmtpdF9tYWpvcl92ZXJzaW9uCiBXRUJLSVRfTUlOT1JfVkVSU0lP
Tj13ZWJraXRfbWlub3JfdmVyc2lvbgogV0VCS0lUX01JQ1JPX1ZFUlNJT049d2Via2l0X21pY3Jv
X3ZlcnNpb24KK1dFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT049d2Via2l0X3VzZXJfYWdl
bnRfbWFqb3JfdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTj13ZWJraXRf
dXNlcl9hZ2VudF9taW5vcl92ZXJzaW9uCiBBQ19TVUJTVChXRUJLSVRfTUFKT1JfVkVSU0lPTikK
IEFDX1NVQlNUKFdFQktJVF9NSU5PUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VCS0lUX01JQ1JPX1ZF
UlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OKQorQUNfU1VC
U1QoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikKIAogQUNfQ09ORklHX1NSQ0RJUihb
V2ViQ29yZS9jb25maWcuaF0pCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>30885</attachid>
            <date>2009-06-02 16:45:44 -0700</date>
            <delta_ts>2009-06-30 05:42:20 -0700</delta_ts>
            <desc>WebView API methods to get/set global &quot;user-agent&quot; property using Soup Session</desc>
            <filename>GtkGlobalUserAgentAPI.txt</filename>
            <type>text/plain</type>
            <size>4992</size>
            <attacher name="Edgar Acosta">eacosta</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9ndGsvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9ndGsvQ2hh
bmdlTG9nCShyZXZpc2lvbiA0NDM3NCkKKysrIFdlYktpdC9ndGsvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMDktMDYtMDIgIEVkZ2FyIFJhdWwgQWNvc3RhIFZp
bGxhc2XDsW9yICA8ZWFjb3N0YUBoY24taW5jLmNvbT4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworCUFkZGVkIFBST1BfVVNFUl9BR0VOVCBwcm9wZXJ0eQorCUluc3Rh
bGxlZCB0aGUgV2ViS2l0V2ViVmlldzp1c2VyLWFnZW50IHByb3BlcnR5LgorCUNyZWF0ZWQgQVBJ
IG1ldGhvZHMgdG8gc2V0IGFuZCBnZXQgdGhlIHVzZXItYWdlbnQgcHJvcGVydHkgZGlyZWN0bHkg
dG8vZnJvbSB0aGUgU291cCBTZXNzaW9uLgorCisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnZp
ZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2dldF9wcm9wZXJ0eSk6CisgICAgICAg
ICh3ZWJraXRfd2ViX3ZpZXdfc2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmll
d19jbGFzc19pbml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19zZXRfdXNlcl9hZ2VudCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQpOgorICAgICAgICAqIHdl
YmtpdC93ZWJraXR3ZWJ2aWV3Lmg6CisKIDIwMDktMDUtMjkgIEphbiBNaWNoYWVsIEFsb256byAg
PGptYWxvbnpvQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgR3VzdGF2byBOb3Jv
bmhhLgpJbmRleDogV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHJldmlzaW9uIDQ0Mzcz
KQorKysgV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTE2MSw3ICsxNjEsOCBAQCBlbnVtIHsKICAgICBQUk9QX0xPQURfU1RBVFVTLAogICAgIFBS
T1BfUFJPR1JFU1MsCiAgICAgUFJPUF9FTkNPRElORywKLSAgICBQUk9QX0NVU1RPTV9FTkNPRElO
RworICAgIFBST1BfQ1VTVE9NX0VOQ09ESU5HLAorICAgIFBST1BfVVNFUl9BR0VOVAogfTsKIAog
c3RhdGljIGd1aW50IHdlYmtpdF93ZWJfdmlld19zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCwg
fTsKQEAgLTMyOCw2ICszMjksOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3By
b3BlcnR5CiAgICAgY2FzZSBQUk9QX1BST0dSRVNTOgogICAgICAgICBnX3ZhbHVlX3NldF9kb3Vi
bGUodmFsdWUsIHdlYmtpdF93ZWJfdmlld19nZXRfcHJvZ3Jlc3Mod2ViVmlldykpOwogICAgICAg
ICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRf
c3RyaW5nKHZhbHVlLCB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQod2ViVmlldykpOwor
CWJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9Q
RVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICB9CkBAIC0zNTksNiArMzYzLDEw
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19zZXRfcHJvcGVydHkKICAgICBjYXNlIFBS
T1BfQ1VTVE9NX0VOQ09ESU5HOgogICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfc2V0X2N1c3RvbV9l
bmNvZGluZyh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKICAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBQUk9QX1VTRVJfQUdFTlQ6CisgICAgICAgIHdlYmtpdF93ZWJfdmlld19z
ZXRfdXNlcl9hZ2VudCh3ZWJWaWV3LCBnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAg
ICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURf
UFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgfQpAQCAtMjAzNyw5ICsy
MDQ1LDI4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19jbGFzc19pbml0KFcKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMC4wLCAx
LjAsIDEuMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURBQkxFKSk7CiAKKworICAgIC8qKgorICAgICogV2Vi
S2l0V2ViVmlldzp1c2VyLWFnZW50OgorICAgICoKKyAgICAqIFRoZSBkZWZhdWx0IHVzZXItYWdl
bnQgb2YgdGhlIHdlYiB2aWV3LgorICAgICoKKyAgICAqIFNpbmNlOgorICAgICovCisgICBnX29i
amVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KG9iamVjdENsYXNzLCBQUk9QX1VTRVJfQUdFTlQs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
InVzZXItYWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIlVzZXIgQWdlbnQiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJUaGUgZGVmYXVsdCB1c2VyLWFnZW50IG9m
IHRoZSB3ZWIgdmlldyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgV0VCS0lUX1BBUkFNX1JFQURXUklURSkpOworCisKKwogICAg
IGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSh3ZWJWaWV3Q2xhc3MsIHNpemVvZihXZWJLaXRXZWJW
aWV3UHJpdmF0ZSkpOwogfQogCisKKwogc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X3VwZGF0
ZV9zZXR0aW5ncyhXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3KQogewogICAgIFdlYktpdFdlYlZpZXdQ
cml2YXRlKiBwcml2ID0gd2ViVmlldy0+cHJpdjsKQEAgLTMzNzUsMyArMzQwMiwzOSBAQCB2b2lk
IHdlYmtpdF93ZWJfdmlld19tb3ZlX2N1cnNvcihXZWJLaXRXCiAgICAgZ2Jvb2xlYW4gaGFuZGxl
ZDsKICAgICBnX3NpZ25hbF9lbWl0KHdlYlZpZXcsIHdlYmtpdF93ZWJfdmlld19zaWduYWxzW01P
VkVfQ1VSU09SXSwgMCwgc3RlcCwgY291bnQsICZoYW5kbGVkKTsKIH0KKworLyoqCisgKiB3ZWJr
aXRfd2ViX3ZpZXdfc2V0X3VzZXJfYWdlbnQ6CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZp
ZXcKKyAqIEBpZGVudDogdGhlIFVTRVItQUdFTlQKKyAqCisgKiBSZXRyaWV2ZXMgdGhlIGRlZmF1
bHQgI1NvdXBTZXNzaW9uIHVzZWQgYnkgYWxsIHdlYiB2aWV3cy4KKyAqIFRoZW4gdXNlcyB0aGUg
U291cFNlc3Npb24gdG8gc2V0IHRoZSB1c2VyIGFnZW50IGluZm8uCisgKgorICogQXV0aG9yOiBF
ZGdhciBBY29zdGEKKyAqLwordm9pZCB3ZWJraXRfd2ViX3ZpZXdfc2V0X3VzZXJfYWdlbnQoV2Vi
S2l0V2ViVmlldyogd2ViVmlldywgY29uc3QgZ2NoYXIqIGlkZW50aWZpY2F0aW9uKQoreworICBT
b3VwU2Vzc2lvbiogc291cFNlc3Npb24gPSBSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKKyAgZ19vYmplY3Rfc2V0KHNvdXBTZXNzaW9uLCAidXNlci1hZ2VudCIsIGlkZW50aWZpY2F0
aW9uLCBOVUxMKTsKK30KKworLyoqCisgKiB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQ6
CisgKiBAd2ViX3ZpZXc6IGEgI1dlYktpdFdlYlZpZXcKKyAqCisgKiBSZXRyaWV2ZXMgdGhlIGRl
ZmF1bHQgI1NvdXBTZXNzaW9uIHVzZWQgYnkgYWxsIHdlYiB2aWV3cy4KKyAqIFRoZW4gdXNlcyB0
aGUgU291cFNlc3Npb24gdG8gZ2V0IHRoZSB1c2VyIGFnZW50IGluZm8uCisgKgorICogUmV0dXJu
IHZhbHVlOiBjb25zdCBnY2hhciogdGhlIHVzZXItYWdlbnQgdmFsdWUKKyAqCisgKiBBdXRob3I6
IEVkZ2FyIEFjb3N0YQorICovCitjb25zdCBnY2hhciogd2Via2l0X3dlYl92aWV3X2dldF91c2Vy
X2FnZW50KFdlYktpdFdlYlZpZXcqIHdlYlZpZXcpCit7CisgIFNvdXBTZXNzaW9uKiBzb3VwU2Vz
c2lvbiA9IFJlc291cmNlSGFuZGxlOjpkZWZhdWx0U2Vzc2lvbigpOworICBnY2hhciogaWRlbnRp
ZmljYXRpb247CisgIGdfb2JqZWN0X2dldChzb3VwU2Vzc2lvbiwgInVzZXItYWdlbnQiLCAmaWRl
bnRpZmljYXRpb24sIE5VTEwpOworICByZXR1cm4gaWRlbnRpZmljYXRpb247Cit9CisKSW5kZXg6
IFdlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmgJKHJldmlzaW9uIDQ0MzczKQorKysgV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vidmlldy5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMzgsNiArMzM4LDEz
IEBAIHdlYmtpdF93ZWJfdmlld19nZXRfbG9hZF9zdGF0dXMgICAgICAgICAKIFdFQktJVF9BUEkg
Z2RvdWJsZQogd2Via2l0X3dlYl92aWV3X2dldF9wcm9ncmVzcyAgICAgICAgICAgICAgICAgICAg
KFdlYktpdFdlYlZpZXcgICAgICAgICp3ZWJfdmlldyk7CiAKK1dFQktJVF9BUEkgdm9pZAord2Vi
a2l0X3dlYl92aWV3X3NldF91c2VyX2FnZW50ICAgICAgICAgICAgICAgICAgKFdlYktpdFdlYlZp
ZXcgICAgICAgICogd2ViVmlldywKKwkJCQkJCSBjb25zdCBnY2hhciAgICAgICAgICAqIGlkZW50
aWZpY2F0aW9uKTsKKworV0VCS0lUX0FQSSBjb25zdCBnY2hhcioKK3dlYmtpdF93ZWJfdmlld19n
ZXRfdXNlcl9hZ2VudCAgICAgICAgICAgICAgICAgIChXZWJLaXRXZWJWaWV3ICAgICAgICAqIHdl
YlZpZXcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31040</attachid>
            <date>2009-06-08 00:54:02 -0700</date>
            <delta_ts>2009-06-20 02:09:22 -0700</delta_ts>
            <desc>Add webview property to get UA string + refactor UA version string in configure.ac</desc>
            <filename>ua-getter-property.patch</filename>
            <type>text/plain</type>
            <size>16569</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCAxOTQ2ZDU2Li5kNWE3YWIz
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMDggIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLiBBZGQgbmV3CisgICAgICAgIHdlYnZpZXcgdGVz
dHMgdG8gdGVzdCB0aGUgVXNlci1BZ2VudCBBUElzLgorCisgICAgICAgICogR05VbWFrZWZpbGUu
YW06CisgICAgICAgICogY29uZmlndXJlLmFjOgorCiAyMDA5LTA1LTI5ICBHdXN0YXZvIE5vcm9u
aGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9u
em8uCmRpZmYgLS1naXQgYS9HTlVtYWtlZmlsZS5hbSBiL0dOVW1ha2VmaWxlLmFtCmluZGV4IGM4
N2VlNDkuLmNhN2VmMTEgMTAwNjQ0Ci0tLSBhL0dOVW1ha2VmaWxlLmFtCisrKyBiL0dOVW1ha2Vm
aWxlLmFtCkBAIC01MjgsNyArNTI4LDggQEAgVEVTVF9QUk9HUyArPSBQcm9ncmFtcy91bml0dGVz
dHMvdGVzdGh0dHBiYWNrZW5kIFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmJhY2tmb3J3
YXJkbGlzdCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3ZWJoaXN0b3J5aXRlbSBcCiAJUHJv
Z3JhbXMvdW5pdHRlc3RzL3Rlc3Rkb3dubG9hZCBcCi0JUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3Rh
dGsKKwlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGF0ayBcCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rl
c3R3ZWJ2aWV3CiAKICMgQWRkIGFkZGl0aW9uYWwgdGVzdHMgaGVyZQogUHJvZ3JhbXNfdW5pdHRl
c3RzX3Rlc3RodHRwYmFja2VuZF9TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90ZXN0aHR0cGJh
Y2tlbmQuYwpAQCAtNTYxLDYgKzU2MiwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNfdGVzdGF0a19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVzdHNfdGVzdGF0
a19MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3Rh
dGtfTERGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1zX3VuaXR0ZXN0
c190ZXN0d2Vidmlld19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCitQ
cm9ncmFtc191bml0dGVzdHNfdGVzdHdlYnZpZXdfQ0ZMQUdTID0gJCh3ZWJraXRfdGVzdHNfY2Zs
YWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJ2aWV3X0xEQUREID0gJCh3ZWJraXRfdGVz
dHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdlYnZpZXdfTERGTEFHUyA9ICQod2Vi
a2l0X3Rlc3RzX2xkZmxhZ3MpCisKICMgQXV0b2dlbmVyYXRlZCBzb3VyY2VzCiBCVUlMVF9TT1VS
Q0VTIDo9IFwKIAkkKGphdmFzY3JpcHRjb3JlX2J1aWx0X3NvdXJjZXMpIFwKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggYTI2Y2Rh
Ni4uM2U3ZTM1MyAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0
L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAwOS0wNi0wOCAgSmFuIE1pY2hhZWwg
QWxvbnpvICA8am1hbG9uem9Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBTZXQgdXNlci1hZ2VudCBmcm9tIGFwcGxpY2F0aW9uCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM3NQorCisg
ICAgICAgIEFkZCAndXNlci1hZ2VudCcgcHJvcGVydHkgZm9yIGdldHRpbmcgdGhlIFVzZXItQWdl
bnQgc3RyaW5nIHVzZWQKKyAgICAgICAgYnkgdGhlIFdlYlZpZXcuCisKKyAgICAgICAgKiBXZWJD
b3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0Zy
YW1lTG9hZGVyQ2xpZW50R3RrLmg6CisgICAgICAgICogdGVzdHMvdGVzdHdlYnZpZXcuYzogQWRk
ZWQuCisgICAgICAgICh0ZXN0X3dlYmtpdF93ZWJfdmlld191c2VyX2FnZW50KToKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5j
cHA6CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfdmlld19kaXNwb3NlKToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19jbGFzc19p
bml0KToKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19nZXRfc3RhbmRhcmRfdXNlcl9hZ2VudCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3ZpZXdfZ2V0X3VzZXJfYWdlbnQpOgorCiAyMDA5LTA2LTA2
ICBHdXN0YXZvIE5vcm9uaGEgU2lsdmEgIDxnbnNAZ25vbWUub3JnPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFhhbiBMb3Blei4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHAKaW5kZXggZDQ3YWRkYi4uODFlOGJmMyAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTY0
LDkgKzY0LDYgQEAKICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIu
aD4KICNpbmNsdWRlIDxzdGRpby5oPgotI2lmIFBMQVRGT1JNKFVOSVgpCi0jaW5jbHVkZSA8c3lz
L3V0c25hbWUuaD4KLSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzQs
NyArNzEsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1l
TG9hZGVyQ2xpZW50KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUp
Ci0gICAgLCBtX3VzZXJBZ2VudCgiIikKICAgICAsIG1fcG9saWN5RGVjaXNpb24oMCkKICAgICAs
IG1fcGx1Z2luVmlldygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkK
QEAgLTg4LDg2ICs4NCw5IEBAIEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQo
KQogICAgICAgICBnX29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotc3RhdGlj
IFN0cmluZyBhZ2VudFBsYXRmb3JtKCkKLXsKLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAg
IHJldHVybiAiWDExIjsKLSNlbGlmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XSU4zMikKLSAgICBy
ZXR1cm4gIldpbmRvd3MiOwotI2VsaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1FVQVJUWikKLSAg
ICByZXR1cm4gIk1hY2ludG9zaCI7Ci0jZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNU
RkIpCi0gICAgcmV0dXJuICJEaXJlY3RGQiI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7
Ci0gICAgcmV0dXJuICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGFnZW50
T1MoKQotewotI2lmIFBMQVRGT1JNKERBUldJTikKLSNpZiBQTEFURk9STShYODYpCi0gICAgcmV0
dXJuICJJbnRlbCBNYWMgT1MgWCI7Ci0jZWxzZQotICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsK
LSNlbmRpZgotI2VsaWYgUExBVEZPUk0oVU5JWCkKLSAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwot
ICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1h
dCgiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAg
ICByZXR1cm4gIlVua25vd24iOwotI2VsaWYgUExBVEZPUk0oV0lOX09TKQotICAgIC8vIEZJWE1F
OiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KLSAgICByZXR1cm4gIldpbmRvd3MiOwotI2Vs
c2UKLSAgICBub3RJbXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiVW5rbm93biI7Ci0jZW5kaWYK
LX0KLQotc3RhdGljIFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkKLXsKLSAgICAvLyBUaGlzIGlz
IGEgbGliZXJhbCBpbnRlcnByZXRhdGlvbiBvZiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL2J1aWxk
L3JldmlzZWQtdXNlci1hZ2VudC1zdHJpbmdzLmh0bWwKLSAgICAvLyBTZWUgYWxzbyBodHRwOi8v
ZGV2ZWxvcGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9yMgotCi0g
ICAgU3RyaW5nIHVhOwotCi0gICAgLy8gUHJvZHVjdAotICAgIHVhICs9ICJNb3ppbGxhLzUuMCI7
Ci0KLSAgICAvLyBDb21tZW50Ci0gICAgdWEgKz0gIiAoIjsKLSAgICB1YSArPSBhZ2VudFBsYXRm
b3JtKCk7IC8vIFBsYXRmb3JtCi0gICAgdWEgKz0gIjsgVTsgIjsgLy8gU2VjdXJpdHkKLSAgICB1
YSArPSBhZ2VudE9TKCk7IC8vIE9TLW9yLUNQVQotICAgIHVhICs9ICI7ICI7Ci0gICAgdWEgKz0g
ZGVmYXVsdExhbmd1YWdlKCk7IC8vIExvY2FsaXphdGlvbiBpbmZvcm1hdGlvbgotICAgIHVhICs9
ICIpICI7Ci0KLSAgICAvLyBXZWJLaXQgUHJvZHVjdAotICAgIC8vIEZJWE1FOiBUaGUgV2ViS2l0
IHZlcnNpb24gaXMgaGFyZGNvZGVkCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyB3ZWJLaXRWZXJz
aW9uID0gIjUyOC41KyI7Ci0gICAgdWEgKz0gIkFwcGxlV2ViS2l0LyIgKyB3ZWJLaXRWZXJzaW9u
OwotICAgIHVhICs9ICIgKEtIVE1MLCBsaWtlIEdlY2tvLCAiOwotICAgIC8vIFdlIG1lbnRpb24g
U2FmYXJpIHNpbmNlIG1hbnkgYnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2Vz
IHRoaXMgdG9vKQotICAgIC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBp
dCBkb2Vzbid0IHNlZW0gdG8gbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKLSAgICB1YSArPSAiU2Fm
YXJpLyIgKyB3ZWJLaXRWZXJzaW9uOwotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBWZW5kb3Ig
UHJvZHVjdAotICAgIHVhICs9IGdfZ2V0X3ByZ25hbWUoKTsKLQotICAgIHJldHVybiB1YTsKLX0K
LQogU3RyaW5nIEZyYW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7Ci0g
ICAgaWYgKG1fdXNlckFnZW50LmlzRW1wdHkoKSkKLSAgICAgICAgbV91c2VyQWdlbnQgPSBjb21w
b3NlVXNlckFnZW50KCk7Ci0KLSAgICByZXR1cm4gbV91c2VyQWdlbnQ7CisgICAgcmV0dXJuIFN0
cmluZzo6ZnJvbVVURjgod2Via2l0X3dlYl92aWV3X2dldF91c2VyX2FnZW50KGdldFZpZXdGcm9t
RnJhbWUobV9mcmFtZSkpKTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5U3RhdHVzKFdlYktpdFdl
YkZyYW1lKiBmcmFtZSwgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVzKQpkaWZmIC0tZ2l0IGEv
V2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY4NWM2M2Eu
LmIwY2VlZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2Fk
ZXJDbGllbnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVy
Q2xpZW50R3RrLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBw
cml2YXRlOgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29y
ZTo6UmVzb3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcg
bV91c2VyQWdlbnQ7CiAgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURl
Y2lzaW9uOwogCiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnZpZXcuYyBiL1dlYktpdC9ndGsvdGVz
dHMvdGVzdHdlYnZpZXcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZTEy
NzQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vidmlldy5jCkBA
IC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hhZWwgQWxv
bnpvCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0
cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNl
bnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQg
d2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4g
U3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICov
CisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1ZGUgPHdl
YmtpdC93ZWJraXQuaD4KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkgJiYgR1RL
X0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0X3dlYl92
aWV3X3VzZXJfYWdlbnQodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworCisg
ICAgZ190ZXN0X2J1ZygiMTczNzUiKTsKKyAgICB3ZWJWaWV3ID0gd2Via2l0X3dlYl92aWV3X25l
dygpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOworCisgICAgZ2NoYXIqIHVzZXJB
Z2VudDsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qod2ViVmlldyksInVzZXItYWdlbnQiLCAm
dXNlckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgIk1v
emlsbGEvNS4wIChYMTE7IFU7IExpbnV4IHg4Nl82NDsgYykgQXBwbGVXZWJLaXQvNTMwLjExKyAo
S0hUTUwsIGxpa2UgR2Vja28pIFNhZmFyaS81MzAuMTErIik7CisgICAgZ19mcmVlKHVzZXJBZ2Vu
dCk7CisKKyAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rl
c3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vi
dmlldy91c2VyX2FnZW50IiwgdGVzdF93ZWJraXRfd2ViX3ZpZXdfdXNlcl9hZ2VudCk7CisgICAg
cmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9CisKKyNlbHNlCitpbnQgbWFpbihpbnQgYXJnYywgY2hh
cioqIGFyZ3YpCit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBnbGli
LTIuMTYuMCBhbmQgZ3RrLTIuMTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIERvaW5nIG5vdGhp
bmcgbm93LiIpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHBy
aXZhdGUuaAppbmRleCA1Yjc1NTM3Li5mMTRkNDk4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dl
YmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCkBAIC00Miw2ICs0Miw3IEBACiAKICNpbmNsdWRlICJCYWNrRm9yd2FyZExpc3QuaCIKICNp
bmNsdWRlIDxlbmNoYW50Lmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkhpc3Rv
cnlJdGVtLmgiCiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC05
Niw4ICs5Nyw3IEBAIGV4dGVybiAiQyIgewogICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJl
cyogd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFt
ZTsKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsK
LSAgICAgICAgV2ViQ29yZTo6U3RyaW5nKiB1c2VyQWdlbnQ7CisgICAgICAgIFdlYkNvcmU6OkNT
dHJpbmcgdXNlckFnZW50OwogCiAgICAgICAgIFdlYktpdFdlYkJhY2tGb3J3YXJkTGlzdCogYmFj
a0ZvcndhcmRMaXN0OwogCkBAIC0yMjcsNiArMjI3LDkgQEAgZXh0ZXJuICJDIiB7CiAgICAgYm9v
bAogICAgIHdlYmtpdF93ZWJfdmlld191c2VfcHJpbWFyeV9mb3JfcGFzdGUoV2ViS2l0V2ViVmll
dyogd2ViX3ZpZXcpOwogCisgICAgR19DT05TVF9SRVRVUk4gZ2NoYXIqCisgICAgd2Via2l0X3dl
Yl92aWV3X2dldF91c2VyX2FnZW50KFdlYktpdFdlYlZpZXcqIHdlYl92aWV3KTsKKwogICAgIEdI
YXNoVGFibGUqCiAgICAgd2Via2l0X2hpc3RvcnlfaXRlbXModm9pZCk7CiB9CmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4gYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR2ZXJzaW9uLmguaW4KaW5kZXggZjcwODAwZC4uOWYxYjgxOCAxMDA2NDQKLS0tIGEv
V2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCisrKyBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHZlcnNpb24uaC5pbgpAQCAtMjgsNiArMjgsOCBAQCBHX0JFR0lOX0RFQ0xTCiAj
ZGVmaW5lIFdFQktJVF9NQUpPUl9WRVJTSU9OIChAV0VCS0lUX01BSk9SX1ZFUlNJT05AKQogI2Rl
ZmluZSBXRUJLSVRfTUlOT1JfVkVSU0lPTiAoQFdFQktJVF9NSU5PUl9WRVJTSU9OQCkKICNkZWZp
bmUgV0VCS0lUX01JQ1JPX1ZFUlNJT04gKEBXRUJLSVRfTUlDUk9fVkVSU0lPTkApCisjZGVmaW5l
IFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04gKEBXRUJLSVRfVVNFUl9BR0VOVF9NQUpP
Ul9WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiAoQFdF
QktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT05AKQogCiAjZGVmaW5lIFdFQktJVF9DSEVDS19W
RVJTSU9OKG1ham9yLCBtaW5vciwgbWljcm8pIFwKICAgKFdFQktJVF9NQUpPUl9WRVJTSU9OID4g
KG1ham9yKSB8fCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDQwYzM4MjIu
LjAxMDk4ZjcgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3Bw
CisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC0zNCw2ICszNCw3
IEBACiAjaW5jbHVkZSAid2Via2l0d2ViaW5zcGVjdG9yLmgiCiAjaW5jbHVkZSAid2Via2l0d2Vi
YmFja2ZvcndhcmRsaXN0LmgiCiAjaW5jbHVkZSAid2Via2l0d2ViaGlzdG9yeWl0ZW0uaCIKKyNp
bmNsdWRlICJ3ZWJraXR2ZXJzaW9uLmgiCiAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKQEAgLTU4LDYgKzU5LDcgQEAKICNpbmNsdWRlIDxn
bGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgogI2luY2x1ZGUg
Ikluc3BlY3RvckNsaWVudEd0ay5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAi
RnJhbWVMb2FkZXIuaCIKICNpbmNsdWRlICJGcmFtZVZpZXcuaCIKICNpbmNsdWRlICJQYXN0ZWJv
YXJkSGVscGVyLmgiCkBAIC03MCw2ICs3MiwxMCBAQAogI2luY2x1ZGUgPHd0Zi9HT3duUHRyLmg+
CiAKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgorI2lmIFBMQVRGT1JNKFVOSVgpCisjaW5j
bHVkZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgorCiAKIC8qKgogICogU0VDVElPTjp3ZWJraXR3
ZWJ2aWV3CkBAIC0xNjEsNyArMTY3LDggQEAgZW51bSB7CiAgICAgUFJPUF9MT0FEX1NUQVRVUywK
ICAgICBQUk9QX1BST0dSRVNTLAogICAgIFBST1BfRU5DT0RJTkcsCi0gICAgUFJPUF9DVVNUT01f
RU5DT0RJTkcKKyAgICBQUk9QX0NVU1RPTV9FTkNPRElORywKKyAgICBQUk9QX1VTRVJfQUdFTlQK
IH07CiAKIHN0YXRpYyBndWludCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tMQVNUX1NJR05BTF0g
PSB7IDAsIH07CkBAIC0zMjgsNiArMzM1LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3
X2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSoKICAg
ICBjYXNlIFBST1BfUFJPR1JFU1M6CiAgICAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSh2YWx1ZSwg
d2Via2l0X3dlYl92aWV3X2dldF9wcm9ncmVzcyh3ZWJWaWV3KSk7CiAgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFs
dWUsIHdlYmtpdF93ZWJfdmlld19nZXRfdXNlcl9hZ2VudCh3ZWJWaWV3KSk7CisgICAgICAgIGJy
ZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJU
WV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICB9CkBAIC05MzMsOCArOTQzLDcgQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogICAg
ICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3QpOwogICAg
ICAgICBwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCA9IE5VTEw7CiAKLSAgICAgICAgZGVsZXRlIHBy
aXYtPnVzZXJBZ2VudDsKLSAgICAgICAgcHJpdi0+dXNlckFnZW50ID0gTlVMTDsKKyAgICAgICAg
cHJpdi0+dXNlckFnZW50ID0gQ1N0cmluZygpOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNT
KHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CkBAIC0yMDM3
LDYgKzIwNDYsMjAgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2NsYXNzX2luaXQoV2Vi
S2l0V2ViVmlld0NsYXNzKiB3ZWJWaWV3Q2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAuMCwgMS4wLCAxLjAsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJB
TV9SRUFEQUJMRSkpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2ViVmlldzp1c2VyLWFnZW50
OgorICAgICAqCisgICAgICogVGhlIFVzZXItQWdlbnQgc3RyaW5nIHRoYXQgaXMgdXNlZCBieSB0
aGUgV2ViVmlldy4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuOAorICAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkob2JqZWN0Q2xhc3MsIFBST1BfVVNFUl9BR0VO
VCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJp
bmcoInVzZXItYWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2VyLUFnZW50IHN0cmlu
ZyB1c2VkIGJ5IHRoZSBXZWJWaWV3IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdFQktJVF9QQVJBTV9SRUFEQUJMRSkpOwor
CiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKHdlYlZpZXdDbGFzcywgc2l6ZW9mKFdlYktp
dFdlYlZpZXdQcml2YXRlKSk7CiB9CiAKQEAgLTMzNzUsMyArMzM5OCw3NiBAQCB2b2lkIHdlYmtp
dF93ZWJfdmlld19tb3ZlX2N1cnNvcihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBHdGtNb3ZlbWVu
dFN0ZXAgc3RlcCwgZwogICAgIGdib29sZWFuIGhhbmRsZWQ7CiAgICAgZ19zaWduYWxfZW1pdCh3
ZWJWaWV3LCB3ZWJraXRfd2ViX3ZpZXdfc2lnbmFsc1tNT1ZFX0NVUlNPUl0sIDAsIHN0ZXAsIGNv
dW50LCAmaGFuZGxlZCk7CiB9CisKKworLy8gY3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0
cmluZworLy8gVGhpcyBpcyBhIGxpYmVyYWwgaW50ZXJwcmV0YXRpb24gb2YgaHR0cDovL3d3dy5t
b3ppbGxhLm9yZy9idWlsZC9yZXZpc2VkLXVzZXItYWdlbnQtc3RyaW5ncy5odG1sCisvLyBTZWUg
YWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwj
YW5jaG9yMgorc3RhdGljIFN0cmluZyB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3N0YW5kYXJkX3VzZXJf
YWdlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKworICAgIHN0YXRpYyBjb25zdCBnY2hh
ciogcGxhdGZvcm07CisgICAgc3RhdGljIGNvbnN0IGdjaGFyKiBvc1ZlcnNpb247CisKKyNpZiBQ
TEFURk9STShYMTEpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiWDExIik7CisjZWxpZiBQTEFU
Rk9STShXSU5fT1MpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiV2luZG93cyIpOworI2VsaWYg
UExBVEZPUk0oTUFDKQorICAgIHBsYXRmb3JtID0gZ19zdHJkdXAoIk1hY2ludG9zaCIpOworI2Vs
aWYgZGVmaW5lZChHREtfV0lORE9XSU5HX0RJUkVDVEZCKQorICAgIHBsYXRmb3JtID0gZ19zdHJk
dXAoIkRpcmVjdEZCIik7CisjZWxzZQorICAgIHBsYXRmb3JtID0gZ19zdHJkdXAoIlVua25vd24i
KTsKKyNlbmRpZgorCisgICAvLyBGSVhNRTogcGxhdGZvcm0vdmVyc2lvbiBkZXRlY3Rpb24gY2Fu
IGJlIHNoYXJlZC4KKyNpZiBQTEFURk9STShEQVJXSU4pCisKKyNpZiBQTEFURk9STShYODYpCisg
ICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIkludGVsIE1hYyBPUyBYIik7CisjZWxzZQorICAgIG9z
VmVyc2lvbiA9IGdfc3RyZHVwKCJQUEMgTWFjIE9TIFgiKTsKKyNlbmRpZgorCisjZWxpZiBQTEFU
Rk9STShVTklYKQorICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7CisgICAgaWYgKHVuYW1lKCZuYW1l
KSAhPSAtMSkKKyAgICAgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoU3RyaW5nOjpmb3JtYXQoIiVz
ICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpLnV0ZjgoKS5kYXRhKCkpOworICAgIGVs
c2UKKyAgICAgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKworI2VsaWYgUExB
VEZPUk0oV0lOX09TKQorICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24K
KyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiV2luZG93cyIpOworCisjZWxzZQorICAgIG9zVmVy
c2lvbiA9IGdfc3RyZHVwKCJVbmtub3duIik7CisjZW5kaWYKKworICAgIC8vIFdlIG1lbnRpb24g
U2FmYXJpIHNpbmNlIG1hbnkgYnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2Vz
IHRoaXMgdG9vKQorICAgIC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBp
dCBkb2Vzbid0IHNlZW0gdG8gbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKKworICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB1YVZlcnNpb24sIChTdHJpbmc6OmZvcm1hdCgiJWQu
JWQrIiwgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdFTlRf
TUlOT1JfVkVSU0lPTikpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywg
c3RhdGljVUEsIChTdHJpbmc6OmZvcm1hdCgiTW96aWxsYS81LjAgKCVzOyBVOyAlczsgJXMpIEFw
cGxlV2ViS2l0LyVzIChLSFRNTCwgbGlrZSBHZWNrbykgU2FmYXJpLyVzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0
Zm9ybSwgb3NWZXJzaW9uLCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNp
b24udXRmOCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisKKyAgICByZXR1
cm4gc3RhdGljVUE7Cit9CisKKy8vIEludGVybmFsIHVzZSBvbmx5LiBTZWUgI1dlYktpdFdlYlZp
ZXcgJ3VzZXItYWdlbnQnIHByb3BlcnR5IHRvIGdldCB0aGUKKy8vIFVzZXItQWdlbnQgc3RyaW5n
IHVzZWQgYnkgdGhlIFdlYlZpZXcKK0dfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3Zp
ZXdfZ2V0X3VzZXJfYWdlbnQoV2ViS2l0V2ViVmlldyogd2ViVmlldykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAg
V2ViS2l0V2ViVmlld1ByaXZhdGUqIHByaXYgPSB3ZWJWaWV3LT5wcml2OworCisgICAgLy8gRklY
TUU6IGFkZCBzaXRlLXNwZWNpZmljIHNwb29maW5nIGFsYSBNYWMKKworICAgIGlmIChwcml2LT51
c2VyQWdlbnQuaXNOdWxsKCkpCisgICAgICAgIHByaXYtPnVzZXJBZ2VudCA9IHdlYmtpdF93ZWJf
dmlld19nZXRfc3RhbmRhcmRfdXNlcl9hZ2VudCh3ZWJWaWV3KS51dGY4KCk7CisKKyAgICByZXR1
cm4gcHJpdi0+dXNlckFnZW50LmRhdGEoKTsKK30KKwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFj
IGIvY29uZmlndXJlLmFjCmluZGV4IDJlZTgyMTAuLmI0ODQ4MDMgMTAwNjQ0Ci0tLSBhL2NvbmZp
Z3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTQsNiArNCwxMyBAQCBtNF9kZWZpbmUoW3dl
YmtpdF9tYWpvcl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWlub3JfdmVyc2lv
bl0sIFsxXSkKIG00X2RlZmluZShbd2Via2l0X21pY3JvX3ZlcnNpb25dLCBbOF0pCiAKKyMgVGhp
cyBpcyB0aGUgdmVyc2lvbiB3ZSdsbCBiZSB1c2luZyBhcyBwYXJ0IG9mIG91ciBVc2VyLUFnZW50
IHN0cmluZworIyBlLmcuLCBBcHBsZVdlYktpdC8kKHdlYmtpdF91c2VyX2FnZW50X3ZlcnNpb24p
IC4uLgorIworIyBTb3VyY2VkIGZyb20gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhj
Y29uZmlnCittNF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21ham9yX3ZlcnNpb25dLCBbNTMw
XSkKK200X2RlZmluZShbd2Via2l0X3VzZXJfYWdlbnRfbWlub3JfdmVyc2lvbl0sIFsxMV0pCisK
IEFDX0lOSVQoW1dlYktpdF0sW3dlYmtpdF9tYWpvcl92ZXJzaW9uLndlYmtpdF9taW5vcl92ZXJz
aW9uLndlYmtpdF9taWNyb192ZXJzaW9uXSxbaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9dKQogCiBB
Q19DT05GSUdfTUFDUk9fRElSKFthdXRvdG9vbHNdKQpAQCAtMTYsOSArMjMsMTMgQEAgQUNfQ0FO
T05JQ0FMX0hPU1QKIFdFQktJVF9NQUpPUl9WRVJTSU9OPXdlYmtpdF9tYWpvcl92ZXJzaW9uCiBX
RUJLSVRfTUlOT1JfVkVSU0lPTj13ZWJraXRfbWlub3JfdmVyc2lvbgogV0VCS0lUX01JQ1JPX1ZF
UlNJT049d2Via2l0X21pY3JvX3ZlcnNpb24KK1dFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJ
T049d2Via2l0X3VzZXJfYWdlbnRfbWFqb3JfdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUlO
T1JfVkVSU0lPTj13ZWJraXRfdXNlcl9hZ2VudF9taW5vcl92ZXJzaW9uCiBBQ19TVUJTVChXRUJL
SVRfTUFKT1JfVkVSU0lPTikKIEFDX1NVQlNUKFdFQktJVF9NSU5PUl9WRVJTSU9OKQogQUNfU1VC
U1QoV0VCS0lUX01JQ1JPX1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NQUpP
Ul9WRVJTSU9OKQorQUNfU1VCU1QoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikKIAog
QUNfQ09ORklHX1NSQ0RJUihbV2ViQ29yZS9jb25maWcuaF0pCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31591</attachid>
            <date>2009-06-20 02:09:22 -0700</date>
            <delta_ts>2009-06-22 03:35:11 -0700</delta_ts>
            <desc>move the user-agent property from the view to the settings</desc>
            <filename>ua-getter-property-settings.patch</filename>
            <type>text/plain</type>
            <size>19269</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4MDJhNTZiLi5hYWQxNmNj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMjAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHRlc3QgdG8gdGVzdCB0aGUgVXNlci1BZ2VudCBwcm9wZXJ0eS4uCisKKyAgICAgICAgKiBHTlVt
YWtlZmlsZS5hbToKKyAgICAgICAgKiBjb25maWd1cmUuYWM6CisKIDIwMDktMDYtMTUgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8g
Tm9yb25oYS4KZGlmZiAtLWdpdCBhL0dOVW1ha2VmaWxlLmFtIGIvR05VbWFrZWZpbGUuYW0KaW5k
ZXggZTUyN2NhMC4uOTY5Njc2MSAxMDA2NDQKLS0tIGEvR05VbWFrZWZpbGUuYW0KKysrIGIvR05V
bWFrZWZpbGUuYW0KQEAgLTUzMSw3ICs1MzEsOCBAQCBURVNUX1BST0dTICs9IFByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0aHR0cGJhY2tlbmQgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViYmFj
a2ZvcndhcmRsaXN0IFwKIAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdHdlYmhpc3RvcnlpdGVtIFwK
IAlQcm9ncmFtcy91bml0dGVzdHMvdGVzdGRvd25sb2FkIFwKLQlQcm9ncmFtcy91bml0dGVzdHMv
dGVzdGF0aworCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0YXRrIFwKKwlQcm9ncmFtcy91bml0dGVz
dHMvdGVzdHdlYnNldHRpbmdzCiAKICMgQWRkIGFkZGl0aW9uYWwgdGVzdHMgaGVyZQogUHJvZ3Jh
bXNfdW5pdHRlc3RzX3Rlc3RodHRwYmFja2VuZF9TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0cy90
ZXN0aHR0cGJhY2tlbmQuYwpAQCAtNTY5LDYgKzU3MCwxMSBAQCBQcm9ncmFtc191bml0dGVzdHNf
dGVzdGF0a19DRkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCiBQcm9ncmFtc191bml0dGVz
dHNfdGVzdGF0a19MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQogUHJvZ3JhbXNfdW5pdHRl
c3RzX3Rlc3RhdGtfTERGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2xkZmxhZ3MpCiAKK1Byb2dyYW1z
X3VuaXR0ZXN0c190ZXN0d2Vic2V0dGluZ3NfU09VUkNFUyA9IFdlYktpdC9ndGsvdGVzdHMvdGVz
dHdlYnNldHRpbmdzLmMKK1Byb2dyYW1zX3VuaXR0ZXN0c190ZXN0d2Vic2V0dGluZ3NfQ0ZMQUdT
ID0gJCh3ZWJraXRfdGVzdHNfY2ZsYWdzKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0
aW5nc19MREFERCA9ICQod2Via2l0X3Rlc3RzX2xkYWRkKQorUHJvZ3JhbXNfdW5pdHRlc3RzX3Rl
c3R3ZWJzZXR0aW5nc19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKKwogIyBBdXRv
Z2VuZXJhdGVkIHNvdXJjZXMKIEJVSUxUX1NPVVJDRVMgOj0gXAogCSQoamF2YXNjcmlwdGNvcmVf
YnVpbHRfc291cmNlcykgXApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgYi9XZWJL
aXQvZ3RrL0NoYW5nZUxvZwppbmRleCBmMjE5OGQ4Li44MDEwYzEyIDEwMDY0NAotLS0gYS9XZWJL
aXQvZ3RrL0NoYW5nZUxvZworKysgYi9XZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0
IEBACisyMDA5LTA2LTIwICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNldCB1
c2VyLWFnZW50IGZyb20gYXBwbGljYXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3Mzc1CisKKyAgICAgICAgQWRkICd1c2VyLWFnZW50JyBXZWJT
ZXR0aW5ncyBwcm9wZXJ0eSBmb3IgZ2V0dGluZyB0aGUgVXNlci1BZ2VudAorICAgICAgICBzdHJp
bmcgdXNlZCBieSB0aGUgV2ViVmlld3MuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEd0ay5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
OjpGcmFtZUxvYWRlckNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OkZyYW1lTG9hZGVyQ2xpZW50
Ojp1c2VyQWdlbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmg6CisgICAgICAgICogdGVzdHMvdGVzdHdlYnNldHRpbmdzLmM6IEFkZGVkLgorICAgICAg
ICAodGVzdF93ZWJraXRfd2ViX3NldHRpbmdzX3VzZXJfYWdlbnQpOgorICAgICAgICAobWFpbik6
CisgICAgICAgICogd2Via2l0L3dlYmtpdHByaXZhdGUuY3BwOgorICAgICAgICAod2Via2l0X2dl
dF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0cHJpdmF0ZS5oOgorICAgICAg
ICAqIHdlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW46CisgICAgICAgICogd2Via2l0L3dlYmtpdHdl
YnNldHRpbmdzLmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQpOgorICAgICAgICAod2Via2l0X3dl
Yl9zZXR0aW5nc19maW5hbGl6ZSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9w
cm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eSk6Cisg
ICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkpOgorICAgICAgICAqIHdlYmtpdC93ZWJr
aXR3ZWJ2aWV3LmNwcDoKKyAgICAgICAgKHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKToKKwogMjAw
OS0wNi0xOCAgR3VzdGF2byBOb3JvbmhhIFNpbHZhICA8Z3VzdGF2by5ub3JvbmhhQGNvbGxhYm9y
YS5jby51az4KIAogICAgICAgICBSZXZpZXdlZCBieSBYYW4gTG9wZXogYW5kIENocmlzdGlhbiBE
eXdhbi4KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJD
bGllbnRHdGsuY3BwIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5jcHAKaW5kZXggZjA3NzZmOS4uNmY2MjAyMCAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKKysrIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5jcHAKQEAgLTY0LDkgKzY0LDYgQEAK
ICNpbmNsdWRlIDxnbGliLmg+CiAjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KICNpbmNsdWRl
IDxzdGRpby5oPgotI2lmIFBMQVRGT1JNKFVOSVgpCi0jaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4K
LSNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNzQsNyArNzEsNiBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogRnJhbWVMb2FkZXJDbGllbnQ6OkZyYW1lTG9hZGVyQ2xpZW50
KFdlYktpdFdlYkZyYW1lKiBmcmFtZSkKICAgICA6IG1fZnJhbWUoZnJhbWUpCi0gICAgLCBtX3Vz
ZXJBZ2VudCgiIikKICAgICAsIG1fcG9saWN5RGVjaXNpb24oMCkKICAgICAsIG1fcGx1Z2luVmll
dygwKQogICAgICwgbV9oYXNTZW50UmVzcG9uc2VUb1BsdWdpbihmYWxzZSkKQEAgLTg4LDg2ICs4
NCw5IEBAIEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogICAgICAgICBn
X29iamVjdF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotc3RhdGljIFN0cmluZyBhZ2Vu
dFBsYXRmb3JtKCkKLXsKLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAgIHJldHVybiAiWDEx
IjsKLSNlbGlmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XSU4zMikKLSAgICByZXR1cm4gIldpbmRv
d3MiOwotI2VsaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1FVQVJUWikKLSAgICByZXR1cm4gIk1h
Y2ludG9zaCI7Ci0jZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCi0gICAgcmV0
dXJuICJEaXJlY3RGQiI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJu
ICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGFnZW50T1MoKQotewotI2lm
IFBMQVRGT1JNKERBUldJTikKLSNpZiBQTEFURk9STShYODYpCi0gICAgcmV0dXJuICJJbnRlbCBN
YWMgT1MgWCI7Ci0jZWxzZQotICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsKLSNlbmRpZgotI2Vs
aWYgUExBVEZPUk0oVU5JWCkKLSAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwotICAgIGlmICh1bmFt
ZSgmbmFtZSkgIT0gLTEpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBu
YW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gIlVu
a25vd24iOwotI2VsaWYgUExBVEZPUk0oV0lOX09TKQotICAgIC8vIEZJWE1FOiBDb21wdXRlIHRo
ZSBXaW5kb3dzIHZlcnNpb24KLSAgICByZXR1cm4gIldpbmRvd3MiOwotI2Vsc2UKLSAgICBub3RJ
bXBsZW1lbnRlZCgpOwotICAgIHJldHVybiAiVW5rbm93biI7Ci0jZW5kaWYKLX0KLQotc3RhdGlj
IFN0cmluZyBjb21wb3NlVXNlckFnZW50KCkKLXsKLSAgICAvLyBUaGlzIGlzIGEgbGliZXJhbCBp
bnRlcnByZXRhdGlvbiBvZiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL2J1aWxkL3JldmlzZWQtdXNl
ci1hZ2VudC1zdHJpbmdzLmh0bWwKLSAgICAvLyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFw
cGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9yMgotCi0gICAgU3RyaW5nIHVh
OwotCi0gICAgLy8gUHJvZHVjdAotICAgIHVhICs9ICJNb3ppbGxhLzUuMCI7Ci0KLSAgICAvLyBD
b21tZW50Ci0gICAgdWEgKz0gIiAoIjsKLSAgICB1YSArPSBhZ2VudFBsYXRmb3JtKCk7IC8vIFBs
YXRmb3JtCi0gICAgdWEgKz0gIjsgVTsgIjsgLy8gU2VjdXJpdHkKLSAgICB1YSArPSBhZ2VudE9T
KCk7IC8vIE9TLW9yLUNQVQotICAgIHVhICs9ICI7ICI7Ci0gICAgdWEgKz0gZGVmYXVsdExhbmd1
YWdlKCk7IC8vIExvY2FsaXphdGlvbiBpbmZvcm1hdGlvbgotICAgIHVhICs9ICIpICI7Ci0KLSAg
ICAvLyBXZWJLaXQgUHJvZHVjdAotICAgIC8vIEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMg
aGFyZGNvZGVkCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyB3ZWJLaXRWZXJzaW9uID0gIjUyOC41
KyI7Ci0gICAgdWEgKz0gIkFwcGxlV2ViS2l0LyIgKyB3ZWJLaXRWZXJzaW9uOwotICAgIHVhICs9
ICIgKEtIVE1MLCBsaWtlIEdlY2tvLCAiOwotICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNl
IG1hbnkgYnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQot
ICAgIC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNl
ZW0gdG8gbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKLSAgICB1YSArPSAiU2FmYXJpLyIgKyB3ZWJL
aXRWZXJzaW9uOwotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBWZW5kb3IgUHJvZHVjdAotICAg
IHVhICs9IGdfZ2V0X3ByZ25hbWUoKTsKLQotICAgIHJldHVybiB1YTsKLX0KLQogU3RyaW5nIEZy
YW1lTG9hZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7Ci0gICAgaWYgKG1fdXNl
ckFnZW50LmlzRW1wdHkoKSkKLSAgICAgICAgbV91c2VyQWdlbnQgPSBjb21wb3NlVXNlckFnZW50
KCk7Ci0KLSAgICByZXR1cm4gbV91c2VyQWdlbnQ7CisgICAgcmV0dXJuIHdlYmtpdF9nZXRfdXNl
cl9hZ2VudCgpOwogfQogCiBzdGF0aWMgdm9pZCBub3RpZnlTdGF0dXMoV2ViS2l0V2ViRnJhbWUq
IGZyYW1lLCBXZWJLaXRMb2FkU3RhdHVzIGxvYWRTdGF0dXMpCmRpZmYgLS1naXQgYS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmggYi9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmgKaW5kZXggZjg1YzYzYS4uYjBjZWVk
NiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVu
dEd0ay5oCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRH
dGsuaApAQCAtMTczLDcgKzE3Myw2IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogICAgIHByaXZhdGU6
CiAgICAgICAgIFdlYktpdFdlYkZyYW1lKiBtX2ZyYW1lOwogICAgICAgICBXZWJDb3JlOjpSZXNv
dXJjZVJlc3BvbnNlIG1fcmVzcG9uc2U7Ci0gICAgICAgIFdlYkNvcmU6OlN0cmluZyBtX3VzZXJB
Z2VudDsKICAgICAgICAgV2ViS2l0V2ViUG9saWN5RGVjaXNpb24qIG1fcG9saWN5RGVjaXNpb247
CiAKICAgICAgICAgLy8gUGx1Z2luIHZpZXcgdG8gcmVkaXJlY3QgZGF0YSB0bwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYyBiL1dlYktpdC9ndGsvdGVzdHMv
dGVzdHdlYnNldHRpbmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5
ODIwYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdz
LmMKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFl
bCBBbG9uem8KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRo
ZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICog
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZl
ZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFs
b25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3Qs
IHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFu
a2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisgKi8KKworI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVk
ZSA8d2Via2l0L3dlYmtpdC5oPgorCisjaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsIDE2LCAwKSAm
JiBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAxNCwgMCkKKworc3RhdGljIHZvaWQgdGVzdF93ZWJraXRf
d2ViX3NldHRpbmdzX3VzZXJfYWdlbnQodm9pZCkKK3sKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyog
c2V0dGluZ3M7CisgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldzsKKyAgICBnY2hhciogdXNlckFn
ZW50OworCisgICAgZ190ZXN0X2J1ZygiMTczNzUiKTsKKyAgICB3ZWJWaWV3ID0gd2Via2l0X3dl
Yl92aWV3X25ldygpOworICAgIGdfb2JqZWN0X3JlZl9zaW5rKHdlYlZpZXcpOworCisgICAgc2V0
dGluZ3MgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3NldHRpbmdzKHdlYlZpZXcpOworCisgICAgZ19v
YmplY3RfZ2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5V
TEwpOworICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCAiTW96aWxsYS81LjAgKFgx
MTsgVTsgTGludXggeDg2XzY0OyBjKSBBcHBsZVdlYktpdC81MzEuMCsgKEtIVE1MLCBsaWtlIEdl
Y2tvKSBTYWZhcmkvNTMxLjArIik7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisgICAgZ19vYmpl
Y3RfdW5yZWYod2ViVmlldyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikK
K3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZh
cmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvIik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL3VzZXJfYWdl
bnQiLCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfdXNlcl9hZ2VudCk7CisgICAgcmV0dXJuIGdf
dGVzdF9ydW4gKCk7Cit9CisKKyNlbHNlCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3Yp
Cit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBnbGliLTIuMTYuMCBh
bmQgZ3RrLTIuMTQuMCB0byBydW4gdGhlIHVuaXQgdGVzdHMuIERvaW5nIG5vdGhpbmcgbm93LiIp
OworICAgIHJldHVybiAwOworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuY3BwIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAKaW5kZXggZDhjNzk2Yy4uOTIzMDQzYiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5jcHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5j
cHAKQEAgLTE5LDI2ICsxOSwzNCBAQAogICovCiAKICNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgIndlYmtpdHNvdXBhdXRoZGlhbG9nLmgiCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgorCiAjaW5jbHVkZSAiQ2hyb21lQ2xpZW50R3RrLmgiCisjaWYgRU5BQkxFKERBVEFCQVNFKQor
I2luY2x1ZGUgIkRhdGFiYXNlVHJhY2tlci5oIgorI2VuZGlmCiAjaW5jbHVkZSAiRnJhbWUuaCIK
ICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZyYW1lTG9hZGVyQ2xpZW50R3Rr
LmgiCi0jaW5jbHVkZSA8bGliaW50bC5oPgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVk
ZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2VDYWNoZS5oIgogI2luY2x1ZGUgIlBhZ2VHcm91
cC5oIgogI2luY2x1ZGUgIlBhc3RlYm9hcmQuaCIKICNpbmNsdWRlICJQYXN0ZWJvYXJkSGVscGVy
R3RrLmgiCisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKICNpbmNsdWRlICJSZXNvdXJjZUhh
bmRsZS5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlQ2xpZW50LmgiCiAjaW5jbHVkZSAiUmVz
b3VyY2VIYW5kbGVJbnRlcm5hbC5oIgorCisjaW5jbHVkZSAid2Via2l0c291cGF1dGhkaWFsb2cu
aCIKKyNpbmNsdWRlICJ3ZWJraXR2ZXJzaW9uLmgiCisKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CiAj
aW5jbHVkZSA8cnVudGltZS9Jbml0aWFsaXplVGhyZWFkaW5nLmg+CiAKLSNpZiBFTkFCTEUoREFU
QUJBU0UpCi0jaW5jbHVkZSAiRGF0YWJhc2VUcmFja2VyLmgiCisjaWYgUExBVEZPUk0oVU5JWCkK
KyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgogI2VuZGlmCiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJD
b3JlOwpAQCAtMTcxLDMgKzE3OSw2MCBAQCB2b2lkIHdlYmtpdF9pbml0KCkKICAgICBzb3VwX3Nl
c3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aERpYWxvZyk7CiAgICAgZ19vYmplY3RfdW5y
ZWYoYXV0aERpYWxvZyk7CiB9CisKKy8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2VudCBzdHJp
bmcKKy8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mIGh0dHA6Ly93d3cubW96
aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3MuaHRtbAorLy8gU2VlIGFs
c28gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJuZXQvc2FmYXJpL2ZhcS5odG1sI2Fu
Y2hvcjIKK1N0cmluZyB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQoKQoreworICAgIGdjaGFyKiBwbGF0
Zm9ybTsKKyAgICBnY2hhciogb3NWZXJzaW9uOworCisjaWYgUExBVEZPUk0oWDExKQorICAgIHBs
YXRmb3JtID0gZ19zdHJkdXAoIlgxMSIpOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAgIHBs
YXRmb3JtID0gZ19zdHJkdXAoIldpbmRvd3MiKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBw
bGF0Zm9ybSA9IGdfc3RyZHVwKCJNYWNpbnRvc2giKTsKKyNlbGlmIGRlZmluZWQoR0RLX1dJTkRP
V0lOR19ESVJFQ1RGQikKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJEaXJlY3RGQiIpOworI2Vs
c2UKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJVbmtub3duIik7CisjZW5kaWYKKworICAgLy8g
RklYTUU6IHBsYXRmb3JtL3ZlcnNpb24gZGV0ZWN0aW9uIGNhbiBiZSBzaGFyZWQuCisjaWYgUExB
VEZPUk0oREFSV0lOKQorCisjaWYgUExBVEZPUk0oWDg2KQorICAgIG9zVmVyc2lvbiA9IGdfc3Ry
ZHVwKCJJbnRlbCBNYWMgT1MgWCIpOworI2Vsc2UKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgi
UFBDIE1hYyBPUyBYIik7CisjZW5kaWYKKworI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAgICBzdHJ1
Y3QgdXRzbmFtZSBuYW1lOworICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAgICAgIG9z
VmVyc2lvbiA9IGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFj
aGluZSk7CisgICAgZWxzZQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiVW5rbm93biIp
OworCisjZWxpZiBQTEFURk9STShXSU5fT1MpCisgICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdp
bmRvd3MgdmVyc2lvbgorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CisKKyNl
bHNlCisgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKyNlbmRpZgorCisgICAg
Ly8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0ZXMgY2hlY2sgZm9yIGl0
IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCisgICAgLy8gV2UgcmUtdXNlIHRoZSBXZWJLaXQgdmVy
c2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVjaCBpbiBwcmFjdGljZQor
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKFN0cmlu
Zzo6Zm9ybWF0KCIlZC4lZCsiLCBXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OLCBXRUJL
SVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwo
Y29uc3QgU3RyaW5nLCBzdGF0aWNVQSwgKFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUuMCAoJXM7
IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkvJXMi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHBsYXRmb3JtLCBvc1ZlcnNpb24sIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5k
YXRhKCksIHVhVmVyc2lvbi51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSkp
KTsKKworICAgIGdfZnJlZShvc1ZlcnNpb24pOworICAgIGdfZnJlZShwbGF0Zm9ybSk7CisKKyAg
ICByZXR1cm4gc3RhdGljVUE7Cit9CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKaW5kZXggMTNm
Y2QxNi4uYjAxMzU5YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaApAQCAtNDgsNiArNDgs
NyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yQ2xpZW50R3RrLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXJDbGllbnQuaCIKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmlu
Zy5oIgogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXF1
ZXN0LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VSZXNwb25zZS5oIgpAQCAtODUsNiArODYsNyBAQCB0
eXBlZGVmIHN0cnVjdCB7CiAKIGV4dGVybiAiQyIgewogICAgIHZvaWQgd2Via2l0X2luaXQoKTsK
KyAgICBXZWJDb3JlOjpTdHJpbmcgd2Via2l0X2dldF91c2VyX2FnZW50KCk7CiAKICNkZWZpbmUg
V0VCS0lUX1BBUkFNX1JFQURBQkxFICgoR1BhcmFtRmxhZ3MpKEdfUEFSQU1fUkVBREFCTEV8R19Q
QVJBTV9TVEFUSUNfTkFNRXxHX1BBUkFNX1NUQVRJQ19OSUNLfEdfUEFSQU1fU1RBVElDX0JMVVJC
KSkKICNkZWZpbmUgV0VCS0lUX1BBUkFNX1JFQURXUklURSAoKEdQYXJhbUZsYWdzKShHX1BBUkFN
X1JFQURXUklURXxHX1BBUkFNX1NUQVRJQ19OQU1FfEdfUEFSQU1fU1RBVElDX05JQ0t8R19QQVJB
TV9TVEFUSUNfQkxVUkIpKQpAQCAtOTgsOSArMTAwLDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAg
IFdlYktpdFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBX
ZWJLaXRXZWJGcmFtZSogbWFpbkZyYW1lOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50OwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2Vu
dDsKLQogICAgICAgICBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsK
IAogICAgICAgICBnaW50IGxhc3RQb3B1cFhQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbiBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZl
cnNpb24uaC5pbgppbmRleCBmNzA4MDBkLi45ZjFiODE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3Rr
L3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4KKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
dmVyc2lvbi5oLmluCkBAIC0yOCw2ICsyOCw4IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VC
S0lUX01BSk9SX1ZFUlNJT04gKEBXRUJLSVRfTUFKT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJ
VF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX01JTk9SX1ZFUlNJT05AKQogI2RlZmluZSBXRUJLSVRf
TUlDUk9fVkVSU0lPTiAoQFdFQktJVF9NSUNST19WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VT
RVJfQUdFTlRfTUFKT1JfVkVSU0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT05A
KQorI2RlZmluZSBXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJf
QUdFTlRfTUlOT1JfVkVSU0lPTkApCiAKICNkZWZpbmUgV0VCS0lUX0NIRUNLX1ZFUlNJT04obWFq
b3IsIG1pbm9yLCBtaWNybykgXAogICAoV0VCS0lUX01BSk9SX1ZFUlNJT04gPiAobWFqb3IpIHx8
IFwKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBi
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCBkNDFiNjQxLi44
NmIxMWI3IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5j
cHAKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0yMSwx
NCArMjEsMTcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNpbmNsdWRlICJ3ZWJr
aXR3ZWJzZXR0aW5ncy5oIgorCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUg
IndlYmtpdHZlcnNpb24uaCIKIAotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaW5jbHVk
ZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNsdWRlICJQbHVnaW5E
YXRhYmFzZS5oIgogCisjaW5jbHVkZSA8Z2xpYi9naTE4bi1saWIuaD4KKwogLyoqCiAgKiBTRUNU
SU9OOndlYmtpdHdlYnNldHRpbmdzCiAgKiBAc2hvcnRfZGVzY3JpcHRpb246IENvbnRyb2wgdGhl
IGJlaGF2aW91ciBvZiBhICNXZWJLaXRXZWJWaWV3CkBAIC04MCw2ICs4Myw3IEBAIHN0cnVjdCBf
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlIHsKICAgICBnYm9vbGVhbiBlbmFibGVfY2FyZXRfYnJv
d3Npbmc7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2h0bWw1X2RhdGFiYXNlOwogICAgIGdib29sZWFu
IGVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOworICAgIENTdHJpbmcgdXNlcl9hZ2VudDsKIH07
CiAKICNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfUFJJVkFURShvYmopIChHX1RZUEVf
SU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2Vi
S2l0V2ViU2V0dGluZ3NQcml2YXRlKSkKQEAgLTExMyw3ICsxMTcsOCBAQCBlbnVtIHsKICAgICBQ
Uk9QX1NQRUxMX0NIRUNLSU5HX0xBTkdVQUdFUywKICAgICBQUk9QX0VOQUJMRV9DQVJFVF9CUk9X
U0lORywKICAgICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKLSAgICBQUk9QX0VOQUJMRV9I
VE1MNV9MT0NBTF9TVE9SQUdFCisgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwK
KyAgICBQUk9QX1VTRVJfQUdFTlQKIH07CiAKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKQEAgLTQ1NSwxMiArNDYwLDI4IEBAIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0Ns
YXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFRSVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBmbGFncykpOwogCisgICAgLyoqCisgICAgICogV2ViS2l0V2Vi
U2V0dGluZ3M6dXNlci1hZ2VudDoKKyAgICAgKgorICAgICAqIFRoZSBVc2VyLUFnZW50IHN0cmlu
ZyB1c2VkIGJ5IFdlYktpdEd0ay4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTEKKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBS
T1BfVVNFUl9BR0VOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoInVzZXItYWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2Vy
LUFnZW50IHN0cmluZyB1c2VkIGJ5IHRoZSBXZWJWaWV3IiksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKICAg
ICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5n
c1ByaXZhdGUpKTsKIH0KIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19pbml0KFdl
YktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiB7CiAgICAgd2ViX3NldHRpbmdzLT5wcml2
ID0gV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfUFJJVkFURSh3ZWJfc2V0dGluZ3MpOworCisgICAg
d2ViX3NldHRpbmdzLT5wcml2LT51c2VyX2FnZW50ID0gd2Via2l0X2dldF91c2VyX2FnZW50KCku
dXRmOCgpOwogfQogCiBzdGF0aWMgdm9pZCBmcmVlX3NwZWxsX2NoZWNraW5nX2xhbmd1YWdlKGdw
b2ludGVyIGRhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKQEAgLTQ5Myw2ICs1MTQsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAg
ICBnX3NsaXN0X2ZvcmVhY2gocHJpdi0+c3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzX2xpc3QsIGZy
ZWVfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2UsIE5VTEwpOwogICAgIGdfc2xpc3RfZnJlZShwcml2
LT5zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfbGlzdCk7CiAKKyAgICBwcml2LT51c2VyX2FnZW50
ID0gQ1N0cmluZygpOworCiAgICAgR19PQkpFQ1RfQ0xBU1Mod2Via2l0X3dlYl9zZXR0aW5nc19w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShvYmplY3QpOwogfQogCkBAIC02MTcsNiArNjQwLDggQEAg
c3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2Jq
ZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICAgICAgZ19zbGlzdF9mcmVlKHByaXYtPnNwZWxs
X2NoZWNraW5nX2xhbmd1YWdlc19saXN0KTsKICAgICAgICAgcHJpdi0+c3BlbGxfY2hlY2tpbmdf
bGFuZ3VhZ2VzX2xpc3QgPSBzcGVsbExhbmd1YWdlczsKICAgICAgICAgYnJlYWs7CisgICAgY2Fz
ZSBQUk9QX1VTRVJfQUdFTlQ6CisgICAgICAgIGJyZWFrOyAvLyBkbyBub3RoaW5nIGZvciBub3cK
ICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQo
b2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzEwLDYgKzczNSw5
IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KEdPYmplY3Qq
IG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhCiAgICAgY2FzZSBQUk9QX1NQRUxMX0NIRUNLSU5H
X0xBTkdVQUdFUzoKICAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2LT5zcGVs
bF9jaGVja2luZ19sYW5ndWFnZXMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNF
Ul9BR0VOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyh2YWx1ZSwgcHJpdi0+
dXNlcl9hZ2VudC5kYXRhKCkpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3Bl
Yyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzY4LDYgKzc5Niw3IEBAIFdlYktpdFdlYlNldHRpbmdz
KiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5n
cykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1jYXJldC1icm93c2luZyIsIHByaXYtPmVuYWJs
ZV9jYXJldF9icm93c2luZywKICAgICAgICAgICAgICAgICAgImVuYWJsZS1odG1sNS1kYXRhYmFz
ZSIsIHByaXYtPmVuYWJsZV9odG1sNV9kYXRhYmFzZSwKICAgICAgICAgICAgICAgICAgImVuYWJs
ZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwgcHJpdi0+ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Us
CisgICAgICAgICAgICAgICAgICJ1c2VyLWFnZW50IiwgcHJpdi0+dXNlcl9hZ2VudC5kYXRhKCks
CiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAogICAgIHJldHVybiBjb3B5OwpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA5ODU5NjBhLi5jM2JkMzFkIDEwMDY0NAotLS0gYS9X
ZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtOTMyLDkgKzkzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtp
dF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9iamVjdCkKIAogICAgICAgICBndGtfdGFyZ2V0
X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVfdGFyZ2V0X2xpc3QpOwogICAgICAgICBwcml2LT5wYXN0
ZV90YXJnZXRfbGlzdCA9IE5VTEw7Ci0KLSAgICAgICAgZGVsZXRlIHByaXYtPnVzZXJBZ2VudDsK
LSAgICAgICAgcHJpdi0+dXNlckFnZW50ID0gTlVMTDsKICAgICB9CiAKICAgICBHX09CSkVDVF9D
TEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwpkaWZm
IC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IGI3MjBhNDMuLmNhN2My
MmYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTQsNiAr
NCwxMyBAQCBtNF9kZWZpbmUoW3dlYmtpdF9tYWpvcl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5l
KFt3ZWJraXRfbWlub3JfdmVyc2lvbl0sIFsxXSkKIG00X2RlZmluZShbd2Via2l0X21pY3JvX3Zl
cnNpb25dLCBbMTBdKQogCisjIFRoaXMgaXMgdGhlIHZlcnNpb24gd2UnbGwgYmUgdXNpbmcgYXMg
cGFydCBvZiBvdXIgVXNlci1BZ2VudCBzdHJpbmcKKyMgZS5nLiwgQXBwbGVXZWJLaXQvJCh3ZWJr
aXRfdXNlcl9hZ2VudF92ZXJzaW9uKSAuLi4KKyMKKyMgU291cmNlZCBmcm9tIFdlYkNvcmUvQ29u
ZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZworbTRfZGVmaW5lKFt3ZWJraXRfdXNlcl9hZ2Vu
dF9tYWpvcl92ZXJzaW9uXSwgWzUzMV0pCittNF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21p
bm9yX3ZlcnNpb25dLCBbMF0pCisKIEFDX0lOSVQoW1dlYktpdF0sW3dlYmtpdF9tYWpvcl92ZXJz
aW9uLndlYmtpdF9taW5vcl92ZXJzaW9uLndlYmtpdF9taWNyb192ZXJzaW9uXSxbaHR0cDovL2J1
Z3Mud2Via2l0Lm9yZy9dKQogCiBBQ19DT05GSUdfTUFDUk9fRElSKFthdXRvdG9vbHNdKQpAQCAt
MTYsOSArMjMsMTMgQEAgQUNfQ0FOT05JQ0FMX0hPU1QKIFdFQktJVF9NQUpPUl9WRVJTSU9OPXdl
YmtpdF9tYWpvcl92ZXJzaW9uCiBXRUJLSVRfTUlOT1JfVkVSU0lPTj13ZWJraXRfbWlub3JfdmVy
c2lvbgogV0VCS0lUX01JQ1JPX1ZFUlNJT049d2Via2l0X21pY3JvX3ZlcnNpb24KK1dFQktJVF9V
U0VSX0FHRU5UX01BSk9SX1ZFUlNJT049d2Via2l0X3VzZXJfYWdlbnRfbWFqb3JfdmVyc2lvbgor
V0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTj13ZWJraXRfdXNlcl9hZ2VudF9taW5vcl92
ZXJzaW9uCiBBQ19TVUJTVChXRUJLSVRfTUFKT1JfVkVSU0lPTikKIEFDX1NVQlNUKFdFQktJVF9N
SU5PUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VCS0lUX01JQ1JPX1ZFUlNJT04pCitBQ19TVUJTVChX
RUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OKQorQUNfU1VCU1QoV0VCS0lUX1VTRVJfQUdF
TlRfTUlOT1JfVkVSU0lPTikKIAogQUNfQ09ORklHX1NSQ0RJUihbV2ViQ29yZS9jb25maWcuaF0p
CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31641</attachid>
            <date>2009-06-22 03:35:11 -0700</date>
            <delta_ts>2009-06-26 00:57:11 -0700</delta_ts>
            <desc>updated per Christian&apos;s feedback</desc>
            <filename>ua-getter-property-settings.patch</filename>
            <type>text/plain</type>
            <size>20303</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi5lN2U3Yjll
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMjIgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IDQzNDE0NTUuLjFmZGI0MDkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMDktMDYtMjIgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19jbGFzc19pbml0
KToKKyAgICAgICAgKHdlYmtpdF9nZXRfdXNlcl9hZ2VudCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2luaXQpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19maW5hbGl6ZSk6
CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eSk6CisgICAgICAgICh3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NvcHkpOgorICAgICAgICAod2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2Vu
dCk6CisgICAgICAgICogd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmg6CisgICAgICAgICogd2Vi
a2l0L3dlYmtpdHdlYnZpZXcuY3BwOgorICAgICAgICAod2Via2l0X3dlYl92aWV3X2Rpc3Bvc2Up
OgorCiAyMDA5LTA2LTIwICBKYW4gTWljaGFlbCBBbG9uem8gIDxqbWFsb256b0B3ZWJraXQub3Jn
PgogCiAgICAgICAgIFJldmlld2VkIGJ5IEd1c3Rhdm8gTm9yb25oYSBhbmQgWGFuIExvcGV6Lgpk
aWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0
ay5jcHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNw
cAppbmRleCBmMDc3NmY5Li5lYzE1NzYyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNjQsOSArNjQsNiBAQAogI2luY2x1
ZGUgPGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlv
Lmg+Ci0jaWYgUExBVEZPUk0oVU5JWCkKLSNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotI2VuZGlm
CiAKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03NCw3ICs3MSw2IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogCiBGcmFtZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0
V2ViRnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fdXNlckFnZW50
KCIiKQogICAgICwgbV9wb2xpY3lEZWNpc2lvbigwKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAg
ICAgLCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQpAQCAtODgsODYgKzg0LDEwIEBA
IEZyYW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogICAgICAgICBnX29iamVj
dF91bnJlZihtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotc3RhdGljIFN0cmluZyBhZ2VudFBsYXRm
b3JtKCkKLXsKLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAgIHJldHVybiAiWDExIjsKLSNl
bGlmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19XSU4zMikKLSAgICByZXR1cm4gIldpbmRvd3MiOwot
I2VsaWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1FVQVJUWikKLSAgICByZXR1cm4gIk1hY2ludG9z
aCI7Ci0jZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCi0gICAgcmV0dXJuICJE
aXJlY3RGQiI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJVbmtu
b3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGFnZW50T1MoKQotewotI2lmIFBMQVRG
T1JNKERBUldJTikKLSNpZiBQTEFURk9STShYODYpCi0gICAgcmV0dXJuICJJbnRlbCBNYWMgT1Mg
WCI7Ci0jZWxzZQotICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsKLSNlbmRpZgotI2VsaWYgUExB
VEZPUk0oVU5JWCkKLSAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwotICAgIGlmICh1bmFtZSgmbmFt
ZSkgIT0gLTEpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5
c25hbWUsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gIlVua25vd24i
OwotI2VsaWYgUExBVEZPUk0oV0lOX09TKQotICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5k
b3dzIHZlcnNpb24KLSAgICByZXR1cm4gIldpbmRvd3MiOwotI2Vsc2UKLSAgICBub3RJbXBsZW1l
bnRlZCgpOwotICAgIHJldHVybiAiVW5rbm93biI7Ci0jZW5kaWYKLX0KLQotc3RhdGljIFN0cmlu
ZyBjb21wb3NlVXNlckFnZW50KCkKLXsKLSAgICAvLyBUaGlzIGlzIGEgbGliZXJhbCBpbnRlcnBy
ZXRhdGlvbiBvZiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL2J1aWxkL3JldmlzZWQtdXNlci1hZ2Vu
dC1zdHJpbmdzLmh0bWwKLSAgICAvLyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNv
bS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9yMgotCi0gICAgU3RyaW5nIHVhOwotCi0g
ICAgLy8gUHJvZHVjdAotICAgIHVhICs9ICJNb3ppbGxhLzUuMCI7Ci0KLSAgICAvLyBDb21tZW50
Ci0gICAgdWEgKz0gIiAoIjsKLSAgICB1YSArPSBhZ2VudFBsYXRmb3JtKCk7IC8vIFBsYXRmb3Jt
Ci0gICAgdWEgKz0gIjsgVTsgIjsgLy8gU2VjdXJpdHkKLSAgICB1YSArPSBhZ2VudE9TKCk7IC8v
IE9TLW9yLUNQVQotICAgIHVhICs9ICI7ICI7Ci0gICAgdWEgKz0gZGVmYXVsdExhbmd1YWdlKCk7
IC8vIExvY2FsaXphdGlvbiBpbmZvcm1hdGlvbgotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBX
ZWJLaXQgUHJvZHVjdAotICAgIC8vIEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMgaGFyZGNv
ZGVkCi0gICAgc3RhdGljIGNvbnN0IFN0cmluZyB3ZWJLaXRWZXJzaW9uID0gIjUyOC41KyI7Ci0g
ICAgdWEgKz0gIkFwcGxlV2ViS2l0LyIgKyB3ZWJLaXRWZXJzaW9uOwotICAgIHVhICs9ICIgKEtI
VE1MLCBsaWtlIEdlY2tvLCAiOwotICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkg
YnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQotICAgIC8v
IFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8g
bWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKLSAgICB1YSArPSAiU2FmYXJpLyIgKyB3ZWJLaXRWZXJz
aW9uOwotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBWZW5kb3IgUHJvZHVjdAotICAgIHVhICs9
IGdfZ2V0X3ByZ25hbWUoKTsKLQotICAgIHJldHVybiB1YTsKLX0KLQogU3RyaW5nIEZyYW1lTG9h
ZGVyQ2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7Ci0gICAgaWYgKG1fdXNlckFnZW50
LmlzRW1wdHkoKSkKLSAgICAgICAgbV91c2VyQWdlbnQgPSBjb21wb3NlVXNlckFnZW50KCk7Ci0K
LSAgICByZXR1cm4gbV91c2VyQWdlbnQ7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdz
ID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUp
KTsKKyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91
c2VyX2FnZW50KHNldHRpbmdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vdGlmeVN0YXR1cyhXZWJL
aXRXZWJGcmFtZSogZnJhbWUsIFdlYktpdExvYWRTdGF0dXMgbG9hZFN0YXR1cykKZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmODVj
NjNhLi5iMGNlZWQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oCkBAIC0xNzMsNyArMTczLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAg
ICAgcHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdl
YkNvcmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICAgICAgV2ViQ29yZTo6U3Ry
aW5nIG1fdXNlckFnZW50OwogICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogbV9wb2xp
Y3lEZWNpc2lvbjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRv
CmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jIGIvV2ViS2l0
L2d0ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwLi45NjVhODM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
d2Vic2V0dGluZ3MuYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5
IEphbiBNaWNoYWVsIEFsb256bworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUg
dGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1
Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNp
b24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lv
bi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBp
dCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBl
dmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo
YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGlj
ZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJ
Qi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIElu
Yy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEw
LTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsu
aD4KKyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHTElCX0NIRUNLX1ZFUlNJT04o
MiwgMTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQorCitzdGF0aWMgdm9pZCB0
ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3NfdXNlcl9hZ2VudCh2b2lkKQoreworICAgIFdlYktpdFdl
YlNldHRpbmdzKiBzZXR0aW5nczsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIGdj
aGFyKiB1c2VyQWdlbnQ7CisgICAgZ190ZXN0X2J1ZygiMTczNzUiKTsKKworICAgIHdlYlZpZXcg
PSB3ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7
CisKKyAgICBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7
CisKKyAgICAvLyB0ZXN0IHRoZSBkZWZhdWx0IFVBIHN0cmluZworICAgIGdfb2JqZWN0X2dldChH
X09CSkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAmdXNlckFnZW50LCBOVUxMKTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNl
cl9hZ2VudChzZXR0aW5ncykpOworICAgIGdfZnJlZSh1c2VyQWdlbnQpOworCisgICAgLy8gdGVz
dCBhIGN1c3RvbSBVQSBzdHJpbmcKKyAgICB1c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0
X3NldChHX09CSkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgInRlc3R3ZWJzZXR0aW5ncy8w
LjEiLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCJ1c2VyLWFn
ZW50IiwgJnVzZXJBZ2VudCwgTlVMTCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVzZXJBZ2VudCwg
PT0sICJ0ZXN0d2Vic2V0dGluZ3MvMC4xIik7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAg
ICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIq
KiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgm
YXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3Mv
dXNlcl9hZ2VudCIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KTsKKyAgICBy
ZXR1cm4gZ190ZXN0X3J1biAoKTsKK30KKworI2Vsc2UKK2ludCBtYWluKGludCBhcmdjLCBjaGFy
KiogYXJndikKK3sKKyAgICBnX2NyaXRpY2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGdsaWIt
Mi4xNi4wIGFuZCBndGstMi4xNC4wIHRvIHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9pbmcgbm90aGlu
ZyBub3cuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJp
dmF0ZS5oCmluZGV4IDEzZmNkMTYuLjFkMTg0MzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRl
LmgKQEAgLTk4LDkgKzk4LDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIFdlYktpdFdlYldpbmRv
d0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBXZWJLaXRXZWJGcmFtZSog
bWFpbkZyYW1lOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNl
ckFnZW50OwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKLQogICAgICAgICBX
ZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAogICAgICAgICBnaW50
IGxhc3RQb3B1cFhQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHZlcnNpb24uaC5pbiBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbgppbmRl
eCBmNzA4MDBkLi45ZjFiODE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2
ZXJzaW9uLmguaW4KKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCkBA
IC0yOCw2ICsyOCw4IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX01BSk9SX1ZFUlNJ
T04gKEBXRUJLSVRfTUFKT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJVF9NSU5PUl9WRVJTSU9O
IChAV0VCS0lUX01JTk9SX1ZFUlNJT05AKQogI2RlZmluZSBXRUJLSVRfTUlDUk9fVkVSU0lPTiAo
QFdFQktJVF9NSUNST19WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1Jf
VkVSU0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT05AKQorI2RlZmluZSBXRUJL
SVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVS
U0lPTkApCiAKICNkZWZpbmUgV0VCS0lUX0NIRUNLX1ZFUlNJT04obWFqb3IsIG1pbm9yLCBtaWNy
bykgXAogICAoV0VCS0lUX01BSk9SX1ZFUlNJT04gPiAobWFqb3IpIHx8IFwKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyZjE4ODZjLi5mNTk5YmNmIDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29w
eXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFi
b3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhl
cgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bwogICoKICAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
ICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCkBAIC0yMSwxMyArMjIsMjEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0K
ICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgorCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0
ZS5oIgorI2luY2x1ZGUgIndlYmtpdHZlcnNpb24uaCIKIAotI2luY2x1ZGUgPGdsaWIvZ2kxOG4t
bGliLmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNp
bmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVk
ZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaWYg
UExBVEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCiAKIC8qKgog
ICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncwpAQCAtODEsNiArOTAsOCBAQCBzdHJ1Y3QgX1dl
YktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2h0bWw1X2RhdGFi
YXNlOwogICAgIGdib29sZWFuIGVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOwogICAgIGdib29s
ZWFuIGVuYWJsZV94c3NfYXVkaXRvcjsKKyAgICBDU3RyaW5nIGN1c3RvbV91c2VyX2FnZW50Owor
ICAgIENTdHJpbmcgdXNlcl9hZ2VudDsKIH07CiAKICNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5H
U19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdF
QktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSkKQEAgLTEx
NSw3ICsxMjYsOCBAQCBlbnVtIHsKICAgICBQUk9QX0VOQUJMRV9DQVJFVF9CUk9XU0lORywKICAg
ICBQUk9QX0VOQUJMRV9IVE1MNV9EQVRBQkFTRSwKICAgICBQUk9QX0VOQUJMRV9IVE1MNV9MT0NB
TF9TVE9SQUdFLAotICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SCisgICAgUFJPUF9FTkFCTEVf
WFNTX0FVRElUT1IsCisgICAgUFJPUF9VU0VSX0FHRU5UCiB9OwogCiBzdGF0aWMgdm9pZCB3ZWJr
aXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CkBAIC00NzQsMTIgKzQ4
Niw4OSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2ViS2l0
V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioKKyAg
ICAgKiBXZWJLaXRXZWJTZXR0aW5nczp1c2VyLWFnZW50OgorICAgICAqCisgICAgICogVGhlIFVz
ZXItQWdlbnQgc3RyaW5nIHVzZWQgYnkgV2ViS2l0R3RrLgorICAgICAqCisgICAgICogVGhpcyB3
aWxsIHJldHVybiBhIGRlZmF1bHQgVXNlci1BZ2VudCBzdHJpbmcgaWYgYSBjdXN0b20gc3RyaW5n
IHdhc24ndAorICAgICAqIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgKgorICAg
ICAqIFNpbmNlOiAxLjEuMTEKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3By
b3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1BfVVNFUl9BR0VOVCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInVzZXItYWdlbnQiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJV
c2VyIEFnZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIF8oIlRoZSBVc2VyLUFnZW50IHN0cmluZyB1c2VkIGJ5IFdlYktpdEd0ayIp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmbGFncykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBz
aXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKKy8vIENyZWF0ZSBhIGRlZmF1
bHQgdXNlciBhZ2VudCBzdHJpbmcKKy8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9u
IG9mIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmlu
Z3MuaHRtbAorLy8gU2VlIGFsc28gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJuZXQv
c2FmYXJpL2ZhcS5odG1sI2FuY2hvcjIKK3N0YXRpYyBTdHJpbmcgd2Via2l0X2dldF91c2VyX2Fn
ZW50KCkKK3sKKyAgICBnY2hhciogcGxhdGZvcm07CisgICAgZ2NoYXIqIG9zVmVyc2lvbjsKKwor
I2lmIFBMQVRGT1JNKFgxMSkKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJYMTEiKTsKKyNlbGlm
IFBMQVRGT1JNKFdJTl9PUykKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJXaW5kb3dzIik7Cisj
ZWxpZiBQTEFURk9STShNQUMpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiTWFjaW50b3NoIik7
CisjZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgcGxhdGZvcm0gPSBn
X3N0cmR1cCgiRGlyZWN0RkIiKTsKKyNlbHNlCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiVW5r
bm93biIpOworI2VuZGlmCisKKyAgIC8vIEZJWE1FOiBwbGF0Zm9ybS92ZXJzaW9uIGRldGVjdGlv
biBjYW4gYmUgc2hhcmVkLgorI2lmIFBMQVRGT1JNKERBUldJTikKKworI2lmIFBMQVRGT1JNKFg4
NikKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiSW50ZWwgTWFjIE9TIFgiKTsKKyNlbHNlCisg
ICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlBQQyBNYWMgT1MgWCIpOworI2VuZGlmCisKKyNlbGlm
IFBMQVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUo
Jm5hbWUpICE9IC0xKQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cF9wcmludGYoIiVzICVz
IiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgIGVsc2UKKyAgICAgICAgb3NWZXJz
aW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAg
IC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KKyAgICBvc1ZlcnNpb24gPSBn
X3N0cmR1cCgiV2luZG93cyIpOworCisjZWxzZQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJV
bmtub3duIik7CisjZW5kaWYKKworICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkg
YnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQorICAgIC8v
IFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8g
bWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCB1YVZlcnNpb24sIChTdHJpbmc6OmZvcm1hdCgiJWQuJWQrIiwgV0VCS0lUX1VTRVJf
QUdFTlRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikpKTsK
KyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChTdHJpbmc6
OmZvcm1hdCgiTW96aWxsYS81LjAgKCVzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChLSFRN
TCwgbGlrZSBHZWNrbykgU2FmYXJpLyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3NWZXJzaW9uLCBk
ZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSwg
dWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisKKyAgICBnX2ZyZWUob3NWZXJzaW9uKTsKKyAg
ICBnX2ZyZWUocGxhdGZvcm0pOworCisgICAgcmV0dXJuIHN0YXRpY1VBOworfQorCiBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0
aW5ncykKIHsKICAgICB3ZWJfc2V0dGluZ3MtPnByaXYgPSBXRUJLSVRfV0VCX1NFVFRJTkdTX0dF
VF9QUklWQVRFKHdlYl9zZXR0aW5ncyk7CisKKyAgICB3ZWJfc2V0dGluZ3MtPnByaXYtPmN1c3Rv
bV91c2VyX2FnZW50ID0gQ1N0cmluZygpOworICAgIHdlYl9zZXR0aW5ncy0+cHJpdi0+dXNlcl9h
Z2VudCA9IHdlYmtpdF9nZXRfdXNlcl9hZ2VudCgpLnV0ZjgoKTsKIH0KIAogc3RhdGljIHZvaWQg
ZnJlZV9zcGVsbF9jaGVja2luZ19sYW5ndWFnZShncG9pbnRlciBkYXRhLCBncG9pbnRlciB1c2Vy
X2RhdGEpCkBAIC01MTIsNiArNjAxLDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5n
c19maW5hbGl6ZShHT2JqZWN0KiBvYmplY3QpCiAgICAgZ19zbGlzdF9mb3JlYWNoKHByaXYtPnNw
ZWxsX2NoZWNraW5nX2xhbmd1YWdlc19saXN0LCBmcmVlX3NwZWxsX2NoZWNraW5nX2xhbmd1YWdl
LCBOVUxMKTsKICAgICBnX3NsaXN0X2ZyZWUocHJpdi0+c3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2Vz
X2xpc3QpOwogCisgICAgcHJpdi0+Y3VzdG9tX3VzZXJfYWdlbnQgPSBDU3RyaW5nKCk7CisgICAg
cHJpdi0+dXNlcl9hZ2VudCA9IENTdHJpbmcoKTsKKwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF93ZWJfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAt
NjM5LDYgKzczMSwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9F
TkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvciA9IGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
VVNFUl9BR0VOVDoKKyAgICAgICAgLy8gU2V0IGEgY3VzdG9tIFVzZXItQWdlbnQgc3RyaW5nLgor
ICAgICAgICBwcml2LT5jdXN0b21fdXNlcl9hZ2VudCA9IFN0cmluZzo6ZnJvbVVURjgoZ192YWx1
ZV9nZXRfc3RyaW5nKHZhbHVlKSkudXRmOCgpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0
OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9w
X2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzM1LDYgKzgzMSwxMiBAQCBzdGF0aWMg
dm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1
aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CiAgICAg
ICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvcik7
CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgICBpZiAo
cHJpdi0+Y3VzdG9tX3VzZXJfYWdlbnQubGVuZ3RoKCkpCisgICAgICAgICAgICBnX3ZhbHVlX3Nl
dF9zdHJpbmcodmFsdWUsIHByaXYtPmN1c3RvbV91c2VyX2FnZW50LmRhdGEoKSk7CisgICAgICAg
IGVsc2UKKyAgICAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcodmFsdWUsIHByaXYt
PnVzZXJfYWdlbnQuZGF0YSgpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAg
ICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNw
ZWMpOwogICAgICAgICBicmVhazsKQEAgLTc5NCw2ICs4OTYsNyBAQCBXZWJLaXRXZWJTZXR0aW5n
cyogd2Via2l0X3dlYl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGlu
Z3MpCiAgICAgICAgICAgICAgICAgICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLCBwcml2LT5lbmFi
bGVfaHRtbDVfZGF0YWJhc2UsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtaHRtbDUtbG9jYWwt
c3RvcmFnZSIsIHByaXYtPmVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlLAogICAgICAgICAgICAg
ICAgICAiZW5hYmxlLXhzcy1hdWRpdG9yIiwgcHJpdi0+ZW5hYmxlX3hzc19hdWRpdG9yLAorICAg
ICAgICAgICAgICAgICAidXNlci1hZ2VudCIsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJf
YWdlbnQod2ViX3NldHRpbmdzKSwKICAgICAgICAgICAgICAgICAgTlVMTCkpOwogCiAgICAgcmV0
dXJuIGNvcHk7CkBAIC04MzQsMyArOTM3LDIwIEBAIEdTTGlzdCogd2Via2l0X3dlYl9zZXR0aW5n
c19nZXRfc3BlbGxfbGFuZ3VhZ2VzKFdlYktpdFdlYlZpZXcgKndlYl92aWV3KQogCiAgICAgcmV0
dXJuIGxpc3Q7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2Vu
dDoKKyAqIEB3ZWJfdmlldzogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zIHRo
ZSBVc2VyLUFnZW50IHN0cmluZyBjdXJyZW50bHkgdXNlZCBieSB0aGUgV2ViVmlldy4KKyAqCisg
KiBTaW5jZTogMS4xLjExCisgKi8KK0dfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykKK3sK
KyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRp
bmdzKSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3ZWJT
ZXR0aW5ncy0+cHJpdjsKKworICAgIHJldHVybiBwcml2LT5jdXN0b21fdXNlcl9hZ2VudC5sZW5n
dGgoKSA/IHByaXYtPmN1c3RvbV91c2VyX2FnZW50LmRhdGEoKSA6IHByaXYtPnVzZXJfYWdlbnQu
ZGF0YSgpOworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmgKaW5kZXggNWQyNWZl
ZS4uOWVhYzMyMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlz
dGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9u
em8gPGptYWxvbnpvQGdtYWlsLmNvbQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01MywxMyArNTQs
MTYgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkg
R1R5cGUKLXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgKHZvaWQpOword2Via2l0X3dlYl9z
ZXR0aW5nc19nZXRfdHlwZSAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2Vi
U2V0dGluZ3MgKgotd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgICAgICAodm9pZCk7Cit3ZWJraXRf
d2ViX3NldHRpbmdzX25ldyAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJL
aXRXZWJTZXR0aW5ncyAqCi13ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkgICAgIChXZWJLaXRXZWJT
ZXR0aW5ncyAqd2ViX3NldHRpbmdzKTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfY29weSAgICAgICAg
ICAgICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJfc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIEdf
Q09OU1RfUkVUVVJOIGdjaGFyICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQg
ICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJfc2V0dGluZ3MpOwogCiBHX0VORF9ERUNMUwogCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDA4NzJkYWQuLmQ3NjA2MWUgMTAwNjQ0
Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC05MzIsOSArOTMyLDYgQEAgc3RhdGljIHZv
aWQgd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogCiAgICAgICAgIGd0
a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCk7CiAgICAgICAgIHBy
aXYtPnBhc3RlX3RhcmdldF9saXN0ID0gTlVMTDsKLQotICAgICAgICBkZWxldGUgcHJpdi0+dXNl
ckFnZW50OwotICAgICAgICBwcml2LT51c2VyQWdlbnQgPSBOVUxMOwogICAgIH0KIAogICAgIEdf
T0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVj
dCk7CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjcyMGE0
My4uY2E3YzIyZiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpA
QCAtNCw2ICs0LDEzIEBAIG00X2RlZmluZShbd2Via2l0X21ham9yX3ZlcnNpb25dLCBbMV0pCiBt
NF9kZWZpbmUoW3dlYmtpdF9taW5vcl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRf
bWljcm9fdmVyc2lvbl0sIFsxMF0pCiAKKyMgVGhpcyBpcyB0aGUgdmVyc2lvbiB3ZSdsbCBiZSB1
c2luZyBhcyBwYXJ0IG9mIG91ciBVc2VyLUFnZW50IHN0cmluZworIyBlLmcuLCBBcHBsZVdlYktp
dC8kKHdlYmtpdF91c2VyX2FnZW50X3ZlcnNpb24pIC4uLgorIworIyBTb3VyY2VkIGZyb20gV2Vi
Q29yZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCittNF9kZWZpbmUoW3dlYmtpdF91
c2VyX2FnZW50X21ham9yX3ZlcnNpb25dLCBbNTMxXSkKK200X2RlZmluZShbd2Via2l0X3VzZXJf
YWdlbnRfbWlub3JfdmVyc2lvbl0sIFswXSkKKwogQUNfSU5JVChbV2ViS2l0XSxbd2Via2l0X21h
am9yX3ZlcnNpb24ud2Via2l0X21pbm9yX3ZlcnNpb24ud2Via2l0X21pY3JvX3ZlcnNpb25dLFto
dHRwOi8vYnVncy53ZWJraXQub3JnL10pCiAKIEFDX0NPTkZJR19NQUNST19ESVIoW2F1dG90b29s
c10pCkBAIC0xNiw5ICsyMywxMyBAQCBBQ19DQU5PTklDQUxfSE9TVAogV0VCS0lUX01BSk9SX1ZF
UlNJT049d2Via2l0X21ham9yX3ZlcnNpb24KIFdFQktJVF9NSU5PUl9WRVJTSU9OPXdlYmtpdF9t
aW5vcl92ZXJzaW9uCiBXRUJLSVRfTUlDUk9fVkVSU0lPTj13ZWJraXRfbWljcm9fdmVyc2lvbgor
V0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTj13ZWJraXRfdXNlcl9hZ2VudF9tYWpvcl92
ZXJzaW9uCitXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OPXdlYmtpdF91c2VyX2FnZW50
X21pbm9yX3ZlcnNpb24KIEFDX1NVQlNUKFdFQktJVF9NQUpPUl9WRVJTSU9OKQogQUNfU1VCU1Qo
V0VCS0lUX01JTk9SX1ZFUlNJT04pCiBBQ19TVUJTVChXRUJLSVRfTUlDUk9fVkVSU0lPTikKK0FD
X1NVQlNUKFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRf
VVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKQogCiBBQ19DT05GSUdfU1JDRElSKFtXZWJDb3JlL2Nv
bmZpZy5oXSkKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>31914</attachid>
            <date>2009-06-26 00:56:11 -0700</date>
            <delta_ts>2009-06-30 05:42:25 -0700</delta_ts>
            <desc>updated per xan&apos;s feedback, converted CString to gchar</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>20208</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi4wMThlODkw
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMjYgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGIwMzhhNDcuLmUxNGY5YzggMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzMgQEAKKzIwMDktMDYtMjYgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHRlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jOiBBZGRl
ZC4KKyAgICAgICAgKHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KToKKyAgICAg
ICAgKG1haW4pOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAgICAgICog
d2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0
dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKHdl
YmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRp
bmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5
KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAgICAgICAg
KHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaDoK
KyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJraXRfd2Vi
X3ZpZXdfZGlzcG9zZSk6CisKIDIwMDktMDYtMjQgIEppYWh1YSBIdWFuZyAgPGpodWFuZ2ppYWh1
YUBnbWFpbC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgSG9sZ2VyIEZyZXl0aGVyLgpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5j
cHAgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApp
bmRleCBmMDc3NmY5Li5lYzE1NzYyIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBw
b3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcApAQCAtNjQsOSArNjQsNiBAQAogI2luY2x1ZGUg
PGdsaWIuaD4KICNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+
Ci0jaWYgUExBVEZPUk0oVU5JWCkKLSNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgotI2VuZGlmCiAK
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCkBAIC03NCw3ICs3MSw2IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBGcmFtZUxvYWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQoV2ViS2l0V2Vi
RnJhbWUqIGZyYW1lKQogICAgIDogbV9mcmFtZShmcmFtZSkKLSAgICAsIG1fdXNlckFnZW50KCIi
KQogICAgICwgbV9wb2xpY3lEZWNpc2lvbigwKQogICAgICwgbV9wbHVnaW5WaWV3KDApCiAgICAg
LCBtX2hhc1NlbnRSZXNwb25zZVRvUGx1Z2luKGZhbHNlKQpAQCAtODgsODYgKzg0LDEwIEBAIEZy
YW1lTG9hZGVyQ2xpZW50Ojp+RnJhbWVMb2FkZXJDbGllbnQoKQogICAgICAgICBnX29iamVjdF91
bnJlZihtX3BvbGljeURlY2lzaW9uKTsKIH0KIAotc3RhdGljIFN0cmluZyBhZ2VudFBsYXRmb3Jt
KCkKLXsKLSNpZmRlZiBHREtfV0lORE9XSU5HX1gxMQotICAgIHJldHVybiAiWDExIjsKLSNlbGlm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19XSU4zMikKLSAgICByZXR1cm4gIldpbmRvd3MiOwotI2Vs
aWYgZGVmaW5lZChHREtfV0lORE9XSU5HX1FVQVJUWikKLSAgICByZXR1cm4gIk1hY2ludG9zaCI7
Ci0jZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCi0gICAgcmV0dXJuICJEaXJl
Y3RGQiI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0gICAgcmV0dXJuICJVbmtub3du
IjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGFnZW50T1MoKQotewotI2lmIFBMQVRGT1JN
KERBUldJTikKLSNpZiBQTEFURk9STShYODYpCi0gICAgcmV0dXJuICJJbnRlbCBNYWMgT1MgWCI7
Ci0jZWxzZQotICAgIHJldHVybiAiUFBDIE1hYyBPUyBYIjsKLSNlbmRpZgotI2VsaWYgUExBVEZP
Uk0oVU5JWCkKLSAgICBzdHJ1Y3QgdXRzbmFtZSBuYW1lOwotICAgIGlmICh1bmFtZSgmbmFtZSkg
IT0gLTEpCi0gICAgICAgIHJldHVybiBTdHJpbmc6OmZvcm1hdCgiJXMgJXMiLCBuYW1lLnN5c25h
bWUsIG5hbWUubWFjaGluZSk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gIlVua25vd24iOwot
I2VsaWYgUExBVEZPUk0oV0lOX09TKQotICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dz
IHZlcnNpb24KLSAgICByZXR1cm4gIldpbmRvd3MiOwotI2Vsc2UKLSAgICBub3RJbXBsZW1lbnRl
ZCgpOwotICAgIHJldHVybiAiVW5rbm93biI7Ci0jZW5kaWYKLX0KLQotc3RhdGljIFN0cmluZyBj
b21wb3NlVXNlckFnZW50KCkKLXsKLSAgICAvLyBUaGlzIGlzIGEgbGliZXJhbCBpbnRlcnByZXRh
dGlvbiBvZiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL2J1aWxkL3JldmlzZWQtdXNlci1hZ2VudC1z
dHJpbmdzLmh0bWwKLSAgICAvLyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9p
bnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9yMgotCi0gICAgU3RyaW5nIHVhOwotCi0gICAg
Ly8gUHJvZHVjdAotICAgIHVhICs9ICJNb3ppbGxhLzUuMCI7Ci0KLSAgICAvLyBDb21tZW50Ci0g
ICAgdWEgKz0gIiAoIjsKLSAgICB1YSArPSBhZ2VudFBsYXRmb3JtKCk7IC8vIFBsYXRmb3JtCi0g
ICAgdWEgKz0gIjsgVTsgIjsgLy8gU2VjdXJpdHkKLSAgICB1YSArPSBhZ2VudE9TKCk7IC8vIE9T
LW9yLUNQVQotICAgIHVhICs9ICI7ICI7Ci0gICAgdWEgKz0gZGVmYXVsdExhbmd1YWdlKCk7IC8v
IExvY2FsaXphdGlvbiBpbmZvcm1hdGlvbgotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBXZWJL
aXQgUHJvZHVjdAotICAgIC8vIEZJWE1FOiBUaGUgV2ViS2l0IHZlcnNpb24gaXMgaGFyZGNvZGVk
Ci0gICAgc3RhdGljIGNvbnN0IFN0cmluZyB3ZWJLaXRWZXJzaW9uID0gIjUyOC41KyI7Ci0gICAg
dWEgKz0gIkFwcGxlV2ViS2l0LyIgKyB3ZWJLaXRWZXJzaW9uOwotICAgIHVhICs9ICIgKEtIVE1M
LCBsaWtlIEdlY2tvLCAiOwotICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkgYnJv
a2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQotICAgIC8vIFdl
IHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8gbWF0
dGVyIG11Y2ggaW4gcHJhY3RpY2UKLSAgICB1YSArPSAiU2FmYXJpLyIgKyB3ZWJLaXRWZXJzaW9u
OwotICAgIHVhICs9ICIpICI7Ci0KLSAgICAvLyBWZW5kb3IgUHJvZHVjdAotICAgIHVhICs9IGdf
Z2V0X3ByZ25hbWUoKTsKLQotICAgIHJldHVybiB1YTsKLX0KLQogU3RyaW5nIEZyYW1lTG9hZGVy
Q2xpZW50Ojp1c2VyQWdlbnQoY29uc3QgS1VSTCYpCiB7Ci0gICAgaWYgKG1fdXNlckFnZW50Lmlz
RW1wdHkoKSkKLSAgICAgICAgbV91c2VyQWdlbnQgPSBjb21wb3NlVXNlckFnZW50KCk7Ci0KLSAg
ICByZXR1cm4gbV91c2VyQWdlbnQ7CisgICAgV2ViS2l0V2ViU2V0dGluZ3MqIHNldHRpbmdzID0g
d2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyhnZXRWaWV3RnJvbUZyYW1lKG1fZnJhbWUpKTsK
KyAgICByZXR1cm4gU3RyaW5nOjpmcm9tVVRGOCh3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2Vy
X2FnZW50KHNldHRpbmdzKSk7CiB9CiAKIHN0YXRpYyB2b2lkIG5vdGlmeVN0YXR1cyhXZWJLaXRX
ZWJGcmFtZSogZnJhbWUsIFdlYktpdExvYWRTdGF0dXMgbG9hZFN0YXR1cykKZGlmZiAtLWdpdCBh
L1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaCBiL1dlYktp
dC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuaAppbmRleCBmODVjNjNh
Li5iMGNlZWQ2IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9h
ZGVyQ2xpZW50R3RrLmgKKysrIGIvV2ViS2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEd0ay5oCkBAIC0xNzMsNyArMTczLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAg
cHJpdmF0ZToKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1fZnJhbWU7CiAgICAgICAgIFdlYkNv
cmU6OlJlc291cmNlUmVzcG9uc2UgbV9yZXNwb25zZTsKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5n
IG1fdXNlckFnZW50OwogICAgICAgICBXZWJLaXRXZWJQb2xpY3lEZWNpc2lvbiogbV9wb2xpY3lE
ZWNpc2lvbjsKIAogICAgICAgICAvLyBQbHVnaW4gdmlldyB0byByZWRpcmVjdCBkYXRhIHRvCmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5ncy5jIGIvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0d2Vic2V0dGluZ3MuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwLi45NjVhODM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0L2d0ay90ZXN0cy90ZXN0d2Vi
c2V0dGluZ3MuYwpAQCAtMCwwICsxLDcwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEph
biBNaWNoYWVsIEFsb256bworICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5
b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVy
bXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxp
c2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
KyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3
aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVu
IHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZl
IHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5z
ZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4s
IDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4K
KyNpbmNsdWRlIDx3ZWJraXQvd2Via2l0Lmg+CisKKyNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwg
MTYsIDApICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE0LCAwKQorCitzdGF0aWMgdm9pZCB0ZXN0
X3dlYmtpdF93ZWJfc2V0dGluZ3NfdXNlcl9hZ2VudCh2b2lkKQoreworICAgIFdlYktpdFdlYlNl
dHRpbmdzKiBzZXR0aW5nczsKKyAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3OworICAgIGdjaGFy
KiB1c2VyQWdlbnQ7CisgICAgZ190ZXN0X2J1ZygiMTczNzUiKTsKKworICAgIHdlYlZpZXcgPSB3
ZWJraXRfd2ViX3ZpZXdfbmV3KCk7CisgICAgZ19vYmplY3RfcmVmX3Npbmsod2ViVmlldyk7CisK
KyAgICBzZXR0aW5ncyA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2V0dGluZ3Mod2ViVmlldyk7CisK
KyAgICAvLyB0ZXN0IHRoZSBkZWZhdWx0IFVBIHN0cmluZworICAgIGdfb2JqZWN0X2dldChHX09C
SkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAmdXNlckFnZW50LCBOVUxMKTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9h
Z2VudChzZXR0aW5ncykpOworICAgIGdfZnJlZSh1c2VyQWdlbnQpOworCisgICAgLy8gdGVzdCBh
IGN1c3RvbSBVQSBzdHJpbmcKKyAgICB1c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0X3Nl
dChHX09CSkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgInRlc3R3ZWJzZXR0aW5ncy8wLjEi
LCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCJ1c2VyLWFnZW50
IiwgJnVzZXJBZ2VudCwgTlVMTCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVzZXJBZ2VudCwgPT0s
ICJ0ZXN0d2Vic2V0dGluZ3MvMC4xIik7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICBn
X29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJn
YywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvdXNl
cl9hZ2VudCIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KTsKKyAgICByZXR1
cm4gZ190ZXN0X3J1biAoKTsKK30KKworI2Vsc2UKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBnX2NyaXRpY2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGdsaWItMi4x
Ni4wIGFuZCBndGstMi4xNC4wIHRvIHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9pbmcgbm90aGluZyBu
b3cuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCmluZGV4IDEzZmNkMTYuLjFkMTg0MzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgK
QEAgLTk4LDkgKzk4LDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbWFp
bkZyYW1lOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50OwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKLQogICAgICAgICBXZWJL
aXRXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAogICAgICAgICBnaW50IGxh
c3RQb3B1cFhQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZl
cnNpb24uaC5pbiBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbgppbmRleCBm
NzA4MDBkLi45ZjFiODE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJz
aW9uLmguaW4KKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCkBAIC0y
OCw2ICsyOCw4IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX01BSk9SX1ZFUlNJT04g
KEBXRUJLSVRfTUFKT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJVF9NSU5PUl9WRVJTSU9OIChA
V0VCS0lUX01JTk9SX1ZFUlNJT05AKQogI2RlZmluZSBXRUJLSVRfTUlDUk9fVkVSU0lPTiAoQFdF
QktJVF9NSUNST19WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVS
U0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT05AKQorI2RlZmluZSBXRUJLSVRf
VVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lP
TkApCiAKICNkZWZpbmUgV0VCS0lUX0NIRUNLX1ZFUlNJT04obWFqb3IsIG1pbm9yLCBtaWNybykg
XAogICAoV0VCS0lUX01BSk9SX1ZFUlNJT04gPiAobWFqb3IpIHx8IFwKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyZjE4ODZjLi4wNWNjMDFmIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bwogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMSwxMyArMjIsMjEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNp
bmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgorCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdHZlcnNpb24uaCIKIAotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaWYgUExB
VEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCiAKIC8qKgogICog
U0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncwpAQCAtODEsNiArOTAsOCBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2h0bWw1X2RhdGFiYXNl
OwogICAgIGdib29sZWFuIGVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOwogICAgIGdib29sZWFu
IGVuYWJsZV94c3NfYXVkaXRvcjsKKyAgICBnY2hhciogY3VzdG9tX3VzZXJfYWdlbnQ7CisgICAg
Z2NoYXIqIHVzZXJfYWdlbnQ7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VU
X1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRf
VFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMTUsOSAr
MTI2LDY3IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0NBUkVUX0JST1dTSU5HLAogICAgIFBS
T1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAogICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NU
T1JBR0UsCi0gICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IKKyAgICBQUk9QX0VOQUJMRV9YU1Nf
QVVESVRPUiwKKyAgICBQUk9QX1VTRVJfQUdFTlQKIH07CiAKKy8vIENyZWF0ZSBhIGRlZmF1bHQg
dXNlciBhZ2VudCBzdHJpbmcKKy8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9m
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3Mu
aHRtbAorLy8gU2VlIGFsc28gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJuZXQvc2Fm
YXJpL2ZhcS5odG1sI2FuY2hvcjIKK3N0YXRpYyBTdHJpbmcgd2Via2l0X2dldF91c2VyX2FnZW50
KCkKK3sKKyAgICBnY2hhciogcGxhdGZvcm07CisgICAgZ2NoYXIqIG9zVmVyc2lvbjsKKworI2lm
IFBMQVRGT1JNKFgxMSkKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJYMTEiKTsKKyNlbGlmIFBM
QVRGT1JNKFdJTl9PUykKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CisjZWxp
ZiBQTEFURk9STShNQUMpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiTWFjaW50b3NoIik7Cisj
ZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgcGxhdGZvcm0gPSBnX3N0
cmR1cCgiRGlyZWN0RkIiKTsKKyNlbHNlCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiVW5rbm93
biIpOworI2VuZGlmCisKKyAgIC8vIEZJWE1FOiBwbGF0Zm9ybS92ZXJzaW9uIGRldGVjdGlvbiBj
YW4gYmUgc2hhcmVkLgorI2lmIFBMQVRGT1JNKERBUldJTikKKworI2lmIFBMQVRGT1JNKFg4NikK
KyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiSW50ZWwgTWFjIE9TIFgiKTsKKyNlbHNlCisgICAg
b3NWZXJzaW9uID0gZ19zdHJkdXAoIlBQQyBNYWMgT1MgWCIpOworI2VuZGlmCisKKyNlbGlmIFBM
QVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUoJm5h
bWUpICE9IC0xKQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cF9wcmludGYoIiVzICVzIiwg
bmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgIGVsc2UKKyAgICAgICAgb3NWZXJzaW9u
ID0gZ19zdHJkdXAoIlVua25vd24iKTsKKworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAgIC8v
IEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KKyAgICBvc1ZlcnNpb24gPSBnX3N0
cmR1cCgiV2luZG93cyIpOworCisjZWxzZQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJVbmtu
b3duIik7CisjZW5kaWYKKworICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkgYnJv
a2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQorICAgIC8vIFdl
IHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8gbWF0
dGVyIG11Y2ggaW4gcHJhY3RpY2UKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCB1YVZlcnNpb24sIChTdHJpbmc6OmZvcm1hdCgiJWQuJWQrIiwgV0VCS0lUX1VTRVJfQUdF
TlRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikpKTsKKyAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChTdHJpbmc6OmZv
cm1hdCgiTW96aWxsYS81LjAgKCVzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChLSFRNTCwg
bGlrZSBHZWNrbykgU2FmYXJpLyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3NWZXJzaW9uLCBkZWZh
dWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSwgdWFW
ZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisKKyAgICBnX2ZyZWUob3NWZXJzaW9uKTsKKyAgICBn
X2ZyZWUocGxhdGZvcm0pOworCisgICAgcmV0dXJuIHN0YXRpY1VBOworfQorCiBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CiAKIHN0YXRp
YyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwg
Z3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwpA
QCAtNDc0LDYgKzU0MywyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNz
X2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAK
KyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJTZXR0aW5nczp1c2VyLWFnZW50OgorICAgICAqCisg
ICAgICogVGhlIFVzZXItQWdlbnQgc3RyaW5nIHVzZWQgYnkgV2ViS2l0R3RrLgorICAgICAqCisg
ICAgICogVGhpcyB3aWxsIHJldHVybiBhIGRlZmF1bHQgVXNlci1BZ2VudCBzdHJpbmcgaWYgYSBj
dXN0b20gc3RyaW5nIHdhc24ndAorICAgICAqIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4K
KyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTEKKyAgICAgKi8KKyAgICBnX29iamVjdF9jbGFz
c19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1BfVVNFUl9BR0VOVCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcoInVzZXIt
YWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2VyLUFnZW50IHN0cmluZyB1c2VkIGJ5
IFdlYktpdEd0ayIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQoKS51dGY4KCkuZGF0YSgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFn
cykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2YoV2ViS2l0
V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTUxMiw2ICs1OTgsOSBAQCBzdGF0aWMgdm9p
ZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAgICBnX3Ns
aXN0X2ZvcmVhY2gocHJpdi0+c3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzX2xpc3QsIGZyZWVfc3Bl
bGxfY2hlY2tpbmdfbGFuZ3VhZ2UsIE5VTEwpOwogICAgIGdfc2xpc3RfZnJlZShwcml2LT5zcGVs
bF9jaGVja2luZ19sYW5ndWFnZXNfbGlzdCk7CiAKKyAgICBnX2ZyZWUocHJpdi0+Y3VzdG9tX3Vz
ZXJfYWdlbnQpOworICAgIGdfZnJlZShwcml2LT51c2VyX2FnZW50KTsKKwogICAgIEdfT0JKRUNU
X0NMQVNTKHdlYmtpdF93ZWJfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0
KTsKIH0KIApAQCAtNjM5LDYgKzcyOCwxMCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAg
IGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIHByaXYtPmVuYWJsZV94c3Nf
YXVkaXRvciA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAgICAgICAgZ19mcmVlKHByaXYtPmN1c3RvbV91c2Vy
X2FnZW50KTsKKyAgICAgICAgcHJpdi0+Y3VzdG9tX3VzZXJfYWdlbnQgPSBnX3N0cmR1cChnX3Zh
bHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTczNSw2ICs4MjgsMTIgQEAgc3RhdGljIHZvaWQg
d2Via2l0X3dlYl9zZXR0aW5nc19nZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBw
cm9wX2lkLCBHVmEKICAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgogICAgICAgICBn
X3ZhbHVlX3NldF9ib29sZWFuKHZhbHVlLCBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IpOwogICAg
ICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAgICAgICAgaWYgKHByaXYt
PmN1c3RvbV91c2VyX2FnZW50ICYmIHN0cmxlbihwcml2LT5jdXN0b21fdXNlcl9hZ2VudCkpCisg
ICAgICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPmN1c3RvbV91c2VyX2Fn
ZW50KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmlu
Zyh2YWx1ZSwgcHJpdi0+dXNlcl9hZ2VudCk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3Bf
aWQsIHBzcGVjKTsKICAgICAgICAgYnJlYWs7CkBAIC03OTQsNiArODkzLDcgQEAgV2ViS2l0V2Vi
U2V0dGluZ3MqIHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weShXZWJLaXRXZWJTZXR0aW5ncyogd2Vi
X3NldHRpbmdzKQogICAgICAgICAgICAgICAgICAiZW5hYmxlLWh0bWw1LWRhdGFiYXNlIiwgcHJp
di0+ZW5hYmxlX2h0bWw1X2RhdGFiYXNlLAogICAgICAgICAgICAgICAgICAiZW5hYmxlLWh0bWw1
LWxvY2FsLXN0b3JhZ2UiLCBwcml2LT5lbmFibGVfaHRtbDVfbG9jYWxfc3RvcmFnZSwKICAgICAg
ICAgICAgICAgICAgImVuYWJsZS14c3MtYXVkaXRvciIsIHByaXYtPmVuYWJsZV94c3NfYXVkaXRv
ciwKKyAgICAgICAgICAgICAgICAgInVzZXItYWdlbnQiLCB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF91c2VyX2FnZW50KHdlYl9zZXR0aW5ncyksCiAgICAgICAgICAgICAgICAgIE5VTEwpKTsKIAog
ICAgIHJldHVybiBjb3B5OwpAQCAtODM0LDMgKzkzNCwyMiBAQCBHU0xpc3QqIHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X3NwZWxsX2xhbmd1YWdlcyhXZWJLaXRXZWJWaWV3ICp3ZWJfdmlldykKIAog
ICAgIHJldHVybiBsaXN0OwogfQorCisvKioKKyAqIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Vz
ZXJfYWdlbnQ6CisgKiBAd2ViX3NldHRpbmdzOiBhICNXZWJLaXRXZWJTZXR0aW5ncworICoKKyAq
IFJldHVybnMgdGhlIFVzZXItQWdlbnQgc3RyaW5nIGN1cnJlbnRseSB1c2VkIGJ5IHRoZSB3ZWIg
dmlldyhzKSBhc3NvY2lhdGVkCisgKiB3aXRoIHRoZSBAd2ViX3NldHRpbmdzLgorICoKKyAqIFNp
bmNlOiAxLjEuMTEKKyAqLworR19DT05TVF9SRVRVUk4gZ2NoYXIqIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X3VzZXJfYWdlbnQoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYlNldHRpbmdzKQoreworICAg
IGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfU0VUVElOR1Mod2ViU2V0dGluZ3Mp
LCBOVUxMKTsKKworICAgIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSogcHJpdiA9IHdlYlNldHRp
bmdzLT5wcml2OworCisgICAgcmV0dXJuIChwcml2LT5jdXN0b21fdXNlcl9hZ2VudCAmJiBzdHJs
ZW4ocHJpdi0+Y3VzdG9tX3VzZXJfYWdlbnQpKQorICAgICAgICA/IHByaXYtPmN1c3RvbV91c2Vy
X2FnZW50IDogcHJpdi0+dXNlcl9hZ2VudDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0
aW5ncy5oCmluZGV4IDVkMjVmZWUuLjllYWMzMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
c2V0dGluZ3MuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ2hy
aXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIw
MDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20KICAqCiAgKiBUaGlzIGxp
YnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAg
KiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYwpAQCAtNTMsMTMgKzU0LDE2IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyB7
CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBlICh2
b2lkKTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOwogCiBX
RUJLSVRfQVBJIFdlYktpdFdlYlNldHRpbmdzICoKLXdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3ICAg
ICAgKHZvaWQpOword2Via2l0X3dlYl9zZXR0aW5nc19uZXcgICAgICAgICAgICAgICAodm9pZCk7
CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgotd2Via2l0X3dlYl9zZXR0aW5nc19j
b3B5ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MgKndlYl9zZXR0aW5ncyk7Cit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2NvcHkgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRpbmdz
KTsKKworV0VCS0lUX0FQSSBHX0NPTlNUX1JFVFVSTiBnY2hhciAqCit3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF91c2VyX2FnZW50ICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRpbmdzKTsK
IAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vi
dmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCAwODcy
ZGFkLi5kNzYwNjFlIDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3
LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtOTMyLDkg
KzkzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3QqIG9i
amVjdCkKIAogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVfdGFyZ2V0
X2xpc3QpOwogICAgICAgICBwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCA9IE5VTEw7Ci0KLSAgICAg
ICAgZGVsZXRlIHByaXYtPnVzZXJBZ2VudDsKLSAgICAgICAgcHJpdi0+dXNlckFnZW50ID0gTlVM
TDsKICAgICB9CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50X2Ns
YXNzKS0+ZGlzcG9zZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmln
dXJlLmFjCmluZGV4IGI3MjBhNDMuLmNhN2MyMmYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYwor
KysgYi9jb25maWd1cmUuYWMKQEAgLTQsNiArNCwxMyBAQCBtNF9kZWZpbmUoW3dlYmtpdF9tYWpv
cl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWlub3JfdmVyc2lvbl0sIFsxXSkK
IG00X2RlZmluZShbd2Via2l0X21pY3JvX3ZlcnNpb25dLCBbMTBdKQogCisjIFRoaXMgaXMgdGhl
IHZlcnNpb24gd2UnbGwgYmUgdXNpbmcgYXMgcGFydCBvZiBvdXIgVXNlci1BZ2VudCBzdHJpbmcK
KyMgZS5nLiwgQXBwbGVXZWJLaXQvJCh3ZWJraXRfdXNlcl9hZ2VudF92ZXJzaW9uKSAuLi4KKyMK
KyMgU291cmNlZCBmcm9tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZpZwor
bTRfZGVmaW5lKFt3ZWJraXRfdXNlcl9hZ2VudF9tYWpvcl92ZXJzaW9uXSwgWzUzMV0pCittNF9k
ZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21pbm9yX3ZlcnNpb25dLCBbMF0pCisKIEFDX0lOSVQo
W1dlYktpdF0sW3dlYmtpdF9tYWpvcl92ZXJzaW9uLndlYmtpdF9taW5vcl92ZXJzaW9uLndlYmtp
dF9taWNyb192ZXJzaW9uXSxbaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9dKQogCiBBQ19DT05GSUdf
TUFDUk9fRElSKFthdXRvdG9vbHNdKQpAQCAtMTYsOSArMjMsMTMgQEAgQUNfQ0FOT05JQ0FMX0hP
U1QKIFdFQktJVF9NQUpPUl9WRVJTSU9OPXdlYmtpdF9tYWpvcl92ZXJzaW9uCiBXRUJLSVRfTUlO
T1JfVkVSU0lPTj13ZWJraXRfbWlub3JfdmVyc2lvbgogV0VCS0lUX01JQ1JPX1ZFUlNJT049d2Vi
a2l0X21pY3JvX3ZlcnNpb24KK1dFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT049d2Via2l0
X3VzZXJfYWdlbnRfbWFqb3JfdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lP
Tj13ZWJraXRfdXNlcl9hZ2VudF9taW5vcl92ZXJzaW9uCiBBQ19TVUJTVChXRUJLSVRfTUFKT1Jf
VkVSU0lPTikKIEFDX1NVQlNUKFdFQktJVF9NSU5PUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VCS0lU
X01JQ1JPX1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9O
KQorQUNfU1VCU1QoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikKIAogQUNfQ09ORklH
X1NSQ0RJUihbV2ViQ29yZS9jb25maWcuaF0pCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32055</attachid>
            <date>2009-06-30 05:42:32 -0700</date>
            <delta_ts>2009-06-30 05:45:45 -0700</delta_ts>
            <desc>updated patch</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>20228</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi5jZGI3YjNk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGZkNDNlZDYuLmJlNzM2ODkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZSk6CisKIDIwMDktMDYtMjkgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGYw
Nzc2ZjkuLmVjMTU3NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC02NCw5ICs2NCw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBQ
TEFURk9STShVTklYKQotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc0LDcgKzcxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV91c2VyQWdlbnQoIiIpCiAgICAg
LCBtX3BvbGljeURlY2lzaW9uKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCkBAIC04OCw4NiArODQsMTAgQEAgRnJhbWVMb2Fk
ZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1f
cG9saWN5RGVjaXNpb24pOwogfQogCi1zdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQotewot
I2lmZGVmIEdES19XSU5ET1dJTkdfWDExCi0gICAgcmV0dXJuICJYMTEiOwotI2VsaWYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dJTjMyKQotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfUVVBUlRaKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNlbGlm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJFQ1RGQikKLSAgICByZXR1cm4gIkRpcmVjdEZCIjsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gIlVua25vd24iOwotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyBTdHJpbmcgYWdlbnRPUygpCi17Ci0jaWYgUExBVEZPUk0oREFSV0lO
KQotI2lmIFBMQVRGT1JNKFg4NikKLSAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKLSNlbHNl
Ci0gICAgcmV0dXJuICJQUEMgTWFjIE9TIFgiOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShVTklY
KQotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFt
ZS5tYWNoaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAiVW5rbm93biI7Ci0jZWxpZiBQ
TEFURk9STShXSU5fT1MpCi0gICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lv
bgotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGNvbXBvc2VV
c2VyQWdlbnQoKQotewotICAgIC8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9m
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3Mu
aHRtbAotICAgIC8vIFNlZSBhbHNvIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ludGVybmV0
L3NhZmFyaS9mYXEuaHRtbCNhbmNob3IyCi0KLSAgICBTdHJpbmcgdWE7Ci0KLSAgICAvLyBQcm9k
dWN0Ci0gICAgdWEgKz0gIk1vemlsbGEvNS4wIjsKLQotICAgIC8vIENvbW1lbnQKLSAgICB1YSAr
PSAiICgiOwotICAgIHVhICs9IGFnZW50UGxhdGZvcm0oKTsgLy8gUGxhdGZvcm0KLSAgICB1YSAr
PSAiOyBVOyAiOyAvLyBTZWN1cml0eQotICAgIHVhICs9IGFnZW50T1MoKTsgLy8gT1Mtb3ItQ1BV
Ci0gICAgdWEgKz0gIjsgIjsKLSAgICB1YSArPSBkZWZhdWx0TGFuZ3VhZ2UoKTsgLy8gTG9jYWxp
emF0aW9uIGluZm9ybWF0aW9uCi0gICAgdWEgKz0gIikgIjsKLQotICAgIC8vIFdlYktpdCBQcm9k
dWN0Ci0gICAgLy8gRklYTUU6IFRoZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIHdlYktpdFZlcnNpb24gPSAiNTI4LjUrIjsKLSAgICB1YSArPSAi
QXBwbGVXZWJLaXQvIiArIHdlYktpdFZlcnNpb247Ci0gICAgdWEgKz0gIiAoS0hUTUwsIGxpa2Ug
R2Vja28sICI7Ci0gICAgLy8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0
ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCi0gICAgLy8gV2UgcmUtdXNl
IHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVj
aCBpbiBwcmFjdGljZQotICAgIHVhICs9ICJTYWZhcmkvIiArIHdlYktpdFZlcnNpb247Ci0gICAg
dWEgKz0gIikgIjsKLQotICAgIC8vIFZlbmRvciBQcm9kdWN0Ci0gICAgdWEgKz0gZ19nZXRfcHJn
bmFtZSgpOwotCi0gICAgcmV0dXJuIHVhOwotfQotCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgp
KQotICAgICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLQotICAgIHJldHVy
biBtX3VzZXJBZ2VudDsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQo
c2V0dGluZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5U3RhdHVzKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY4NWM2M2EuLmIwY2Vl
ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2Vy
QWdlbnQ7CiAgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURlY2lzaW9u
OwogCiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAw
MzIxNjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5n
cy5jCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hh
ZWwgQWxvbnpvCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXQuaD4KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkg
JiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgZ2NoYXIqIHVzZXJB
Z2VudDsKKyAgICBnX3Rlc3RfYnVnKCIxNzM3NSIpOworCisgICAgd2ViVmlldyA9IHdlYmtpdF93
ZWJfdmlld19uZXcoKTsKKyAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHNl
dHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KTsKKworICAgIC8v
IHRlc3QgdGhlIGRlZmF1bHQgVUEgc3RyaW5nCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHNl
dHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih1c2VyQWdlbnQsID09LCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNl
dHRpbmdzKSk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICAvLyB0ZXN0IGEgY3VzdG9t
IFVBIHN0cmluZworICAgIHVzZXJBZ2VudCA9IE5VTEw7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHNldHRpbmdzKSwgInVzZXItYWdlbnQiLCAidGVzdHdlYnNldHRpbmdzLzAuMSIsIE5VTEwp
OworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAmdXNl
ckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgInRlc3R3
ZWJzZXR0aW5ncy8wLjEiKTsKKyAgICBnX2ZyZWUodXNlckFnZW50KTsKKworICAgIC8vIHNldHRp
bmcgaXQgdG8gTlVMTCBvciBhbiBlbXB0eSB2YWx1ZSBzaG91bGQgZ2l2ZSB1cyB0aGUgZGVmYXVs
dCBVQSBzdHJpbmcKKyAgICB1c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgTlVMTCwgTlVMTCk7CisgICAgZ19vYmplY3Rf
Z2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF91c2VyX2FnZW50KHNldHRpbmdzKSk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICBn
X29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBh
cmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rlc3RfaW5pdCgmYXJn
YywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vic2V0dGluZ3MvdXNl
cl9hZ2VudCIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KTsKKyAgICByZXR1
cm4gZ190ZXN0X3J1biAoKTsKK30KKworI2Vsc2UKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiog
YXJndikKK3sKKyAgICBnX2NyaXRpY2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxlYXN0IGdsaWItMi4x
Ni4wIGFuZCBndGstMi4xNC4wIHRvIHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9pbmcgbm90aGluZyBu
b3cuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0
ZS5oCmluZGV4IDEzZmNkMTYuLjFkMTg0MzQgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgK
QEAgLTk4LDkgKzk4LDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIFdlYktpdFdlYldpbmRvd0Zl
YXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbWFp
bkZyYW1lOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25OYW1lRm9yVXNlckFn
ZW50OwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKLQogICAgICAgICBXZWJL
aXRXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAogICAgICAgICBnaW50IGxh
c3RQb3B1cFhQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZl
cnNpb24uaC5pbiBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbgppbmRleCBm
NzA4MDBkLi45ZjFiODE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJz
aW9uLmguaW4KKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCkBAIC0y
OCw2ICsyOCw4IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX01BSk9SX1ZFUlNJT04g
KEBXRUJLSVRfTUFKT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJVF9NSU5PUl9WRVJTSU9OIChA
V0VCS0lUX01JTk9SX1ZFUlNJT05AKQogI2RlZmluZSBXRUJLSVRfTUlDUk9fVkVSU0lPTiAoQFdF
QktJVF9NSUNST19WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVS
U0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT05AKQorI2RlZmluZSBXRUJLSVRf
VVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lP
TkApCiAKICNkZWZpbmUgV0VCS0lUX0NIRUNLX1ZFUlNJT04obWFqb3IsIG1pbm9yLCBtaWNybykg
XAogICAoV0VCS0lUX01BSk9SX1ZFUlNJT04gPiAobWFqb3IpIHx8IFwKZGlmZiAtLWdpdCBhL1dl
YktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktpdC9ndGsvd2Via2l0
L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyZjE4ODZjLi43ZTU0NzRiIDEwMDY0NAotLS0g
YS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysrIGIvV2ViS2l0L2d0
ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0zLDYgKzMsNyBAQAogICogQ29weXJp
Z2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggQ29sbGFib3Jh
IEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRlciBGcmV5dGhlcgor
ICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bwogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yMSwxMyArMjIsMjEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KICNp
bmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgorCiAjaW5jbHVkZSAid2Via2l0cHJpdmF0ZS5o
IgorI2luY2x1ZGUgIndlYmtpdHZlcnNpb24uaCIKIAotI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0ZW0uaCIKICNpbmNs
dWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCisjaW5jbHVkZSAi
UGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CisjaWYgUExB
VEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlmCiAKIC8qKgogICog
U0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncwpAQCAtODEsNiArOTAsNyBAQCBzdHJ1Y3QgX1dlYktp
dFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2h0bWw1X2RhdGFiYXNl
OwogICAgIGdib29sZWFuIGVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOwogICAgIGdib29sZWFu
IGVuYWJsZV94c3NfYXVkaXRvcjsKKyAgICBnY2hhciogdXNlcl9hZ2VudDsKIH07CiAKICNkZWZp
bmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0Vf
R0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywgV2ViS2l0V2ViU2V0
dGluZ3NQcml2YXRlKSkKQEAgLTExNSw5ICsxMjUsNjcgQEAgZW51bSB7CiAgICAgUFJPUF9FTkFC
TEVfQ0FSRVRfQlJPV1NJTkcsCiAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFUQUJBU0UsCiAgICAg
UFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKLSAgICBQUk9QX0VOQUJMRV9YU1NfQVVE
SVRPUgorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1BfVVNFUl9BR0VOVAog
fTsKIAorLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZworLy8gVGhpcyBpcyBh
IGxpYmVyYWwgaW50ZXJwcmV0YXRpb24gb2YgaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9idWlsZC9y
ZXZpc2VkLXVzZXItYWdlbnQtc3RyaW5ncy5odG1sCisvLyBTZWUgYWxzbyBodHRwOi8vZGV2ZWxv
cGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9yMgorc3RhdGljIFN0
cmluZyB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQoKQoreworICAgIGdjaGFyKiBwbGF0Zm9ybTsKKyAg
ICBnY2hhciogb3NWZXJzaW9uOworCisjaWYgUExBVEZPUk0oWDExKQorICAgIHBsYXRmb3JtID0g
Z19zdHJkdXAoIlgxMSIpOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAgIHBsYXRmb3JtID0g
Z19zdHJkdXAoIldpbmRvd3MiKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAgICBwbGF0Zm9ybSA9
IGdfc3RyZHVwKCJNYWNpbnRvc2giKTsKKyNlbGlmIGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJF
Q1RGQikKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJEaXJlY3RGQiIpOworI2Vsc2UKKyAgICBw
bGF0Zm9ybSA9IGdfc3RyZHVwKCJVbmtub3duIik7CisjZW5kaWYKKworICAgLy8gRklYTUU6IHBs
YXRmb3JtL3ZlcnNpb24gZGV0ZWN0aW9uIGNhbiBiZSBzaGFyZWQuCisjaWYgUExBVEZPUk0oREFS
V0lOKQorCisjaWYgUExBVEZPUk0oWDg2KQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJJbnRl
bCBNYWMgT1MgWCIpOworI2Vsc2UKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiUFBDIE1hYyBP
UyBYIik7CisjZW5kaWYKKworI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAgICBzdHJ1Y3QgdXRzbmFt
ZSBuYW1lOworICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAgICAgIG9zVmVyc2lvbiA9
IGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUubWFjaGluZSk7Cisg
ICAgZWxzZQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiVW5rbm93biIpOworCisjZWxp
ZiBQTEFURk9STShXSU5fT1MpCisgICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVy
c2lvbgorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CisKKyNlbHNlCisgICAg
b3NWZXJzaW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKyNlbmRpZgorCisgICAgLy8gV2UgbWVu
dGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2Vi
IGRvZXMgdGhpcyB0b28pCisgICAgLy8gV2UgcmUtdXNlIHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhv
dWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVjaCBpbiBwcmFjdGljZQorCisgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKFN0cmluZzo6Zm9ybWF0
KCIlZC4lZCsiLCBXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OLCBXRUJLSVRfVVNFUl9B
R0VOVF9NSU5PUl9WRVJTSU9OKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBzdGF0aWNVQSwgKFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUuMCAoJXM7IFU7ICVzOyAl
cykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkvJXMiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHBsYXRmb3JtLCBvc1ZlcnNpb24sIGRlZmF1bHRMYW5ndWFnZSgpLnV0ZjgoKS5kYXRhKCksIHVh
VmVyc2lvbi51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSkpKTsKKworICAg
IGdfZnJlZShvc1ZlcnNpb24pOworICAgIGdfZnJlZShwbGF0Zm9ybSk7CisKKyAgICByZXR1cm4g
c3RhdGljVUE7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRf
cHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUqIHZh
bHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CkBAIC00NzQsNiArNTQyLDIzIEBAIHN0YXRpYyB2b2lk
IHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0aW5nc0NsYXNzKiBr
bGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICAqIFdlYktpdFdlYlNldHRp
bmdzOnVzZXItYWdlbnQ6CisgICAgICoKKyAgICAgKiBUaGUgVXNlci1BZ2VudCBzdHJpbmcgdXNl
ZCBieSBXZWJLaXRHdGsuCisgICAgICoKKyAgICAgKiBUaGlzIHdpbGwgcmV0dXJuIGEgZGVmYXVs
dCBVc2VyLUFnZW50IHN0cmluZyBpZiBhIGN1c3RvbSBzdHJpbmcgd2Fzbid0CisgICAgICogcHJv
dmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uLgorICAgICAqCisgICAgICogU2luY2U6IDEuMS4xMQor
ICAgICAqLworICAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFz
cywgUFJPUF9VU0VSX0FHRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Z19wYXJhbV9zcGVjX3N0cmluZygidXNlci1hZ2VudCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVzZXIgQWdlbnQiKSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhl
IFVzZXItQWdlbnQgc3RyaW5nIHVzZWQgYnkgV2ViS2l0R3RrIiksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9nZXRfdXNlcl9h
Z2VudCgpLnV0ZjgoKS5kYXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3By
aXZhdGUoa2xhc3MsIHNpemVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKIH0KIApAQCAt
NTEyLDYgKzU5Nyw4IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemUo
R09iamVjdCogb2JqZWN0KQogICAgIGdfc2xpc3RfZm9yZWFjaChwcml2LT5zcGVsbF9jaGVja2lu
Z19sYW5ndWFnZXNfbGlzdCwgZnJlZV9zcGVsbF9jaGVja2luZ19sYW5ndWFnZSwgTlVMTCk7CiAg
ICAgZ19zbGlzdF9mcmVlKHByaXYtPnNwZWxsX2NoZWNraW5nX2xhbmd1YWdlc19saXN0KTsKIAor
ICAgIGdfZnJlZShwcml2LT51c2VyX2FnZW50KTsKKwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtp
dF93ZWJfc2V0dGluZ3NfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAt
NjM5LDYgKzcyNiwxMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9w
ZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9F
TkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvciA9IGdf
dmFsdWVfZ2V0X2Jvb2xlYW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1Bf
VVNFUl9BR0VOVDoKKyAgICAgICAgZ19mcmVlKHByaXYtPnVzZXJfYWdlbnQpOworICAgICAgICBp
ZiAoIWdfdmFsdWVfZ2V0X3N0cmluZyh2YWx1ZSkpCisgICAgICAgICAgICBwcml2LT51c2VyX2Fn
ZW50ID0gZ19zdHJkdXAod2Via2l0X2dldF91c2VyX2FnZW50KCkudXRmOCgpLmRhdGEoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaXYtPnVzZXJfYWdlbnQgPSBnX3N0cmR1cChnX3Zh
bHVlX2dldF9zdHJpbmcodmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAg
ICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwg
cHNwZWMpOwogICAgICAgICBicmVhazsKQEAgLTczNSw2ICs4MjksOSBAQCBzdGF0aWMgdm9pZCB3
ZWJraXRfd2ViX3NldHRpbmdzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHBy
b3BfaWQsIEdWYQogICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIGdf
dmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUsIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvcik7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgICBnX3ZhbHVlX3Nl
dF9zdHJpbmcodmFsdWUsIHByaXYtPnVzZXJfYWdlbnQpOworICAgICAgICBicmVhazsKICAgICBk
ZWZhdWx0OgogICAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0
LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzk0LDYgKzg5MSw3IEBAIFdl
YktpdFdlYlNldHRpbmdzKiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGlu
Z3MqIHdlYl9zZXR0aW5ncykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1odG1sNS1kYXRhYmFz
ZSIsIHByaXYtPmVuYWJsZV9odG1sNV9kYXRhYmFzZSwKICAgICAgICAgICAgICAgICAgImVuYWJs
ZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwgcHJpdi0+ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2Us
CiAgICAgICAgICAgICAgICAgICJlbmFibGUteHNzLWF1ZGl0b3IiLCBwcml2LT5lbmFibGVfeHNz
X2F1ZGl0b3IsCisgICAgICAgICAgICAgICAgICJ1c2VyLWFnZW50Iiwgd2Via2l0X3dlYl9zZXR0
aW5nc19nZXRfdXNlcl9hZ2VudCh3ZWJfc2V0dGluZ3MpLAogICAgICAgICAgICAgICAgICBOVUxM
KSk7CiAKICAgICByZXR1cm4gY29weTsKQEAgLTgzNCwzICs5MzIsMjEgQEAgR1NMaXN0KiB3ZWJr
aXRfd2ViX3NldHRpbmdzX2dldF9zcGVsbF9sYW5ndWFnZXMoV2ViS2l0V2ViVmlldyAqd2ViX3Zp
ZXcpCiAKICAgICByZXR1cm4gbGlzdDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF91c2VyX2FnZW50OgorICogQHdlYl9zZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MK
KyAqCisgKiBSZXR1cm5zIHRoZSBVc2VyLUFnZW50IHN0cmluZyBjdXJyZW50bHkgdXNlZCBieSB0
aGUgd2ViIHZpZXcocykgYXNzb2NpYXRlZAorICogd2l0aCB0aGUgQHdlYl9zZXR0aW5ncy4KKyAq
CisgKiBTaW5jZTogMS4xLjExCisgKi8KK0dfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2Vi
X3NldHRpbmdzX2dldF91c2VyX2FnZW50KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykK
K3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNl
dHRpbmdzKSwgTlVMTCk7CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3
ZWJTZXR0aW5ncy0+cHJpdjsKKworICAgIHJldHVybiBwcml2LT51c2VyX2FnZW50OworfQpkaWZm
IC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmgKaW5kZXggNWQyNWZlZS4uOWVhYzMyMSAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaAorKysgYi9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAq
IENvcHlyaWdodCAoQykgMjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNv
bT4KKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdt
YWlsLmNvbQogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJl
ZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC01MywxMyArNTQsMTYgQEAgc3RydWN0IF9X
ZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgKHZvaWQpOword2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlw
ZSAgICAgICAgICAodm9pZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgotd2Vi
a2l0X3dlYl9zZXR0aW5nc19uZXcgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3NldHRpbmdzX25l
dyAgICAgICAgICAgICAgICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0aW5ncyAq
Ci13ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkgICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3Nl
dHRpbmdzKTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfY29weSAgICAgICAgICAgICAgKFdlYktpdFdl
YlNldHRpbmdzICp3ZWJfc2V0dGluZ3MpOworCitXRUJLSVRfQVBJIEdfQ09OU1RfUkVUVVJOIGdj
aGFyICoKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQgICAgKFdlYktpdFdlYlNl
dHRpbmdzICp3ZWJfc2V0dGluZ3MpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCmluZGV4IDViMTk4NTYuLmJmNDYxYzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCkBAIC05MzIsOSArOTMyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92
aWV3X2Rpc3Bvc2UoR09iamVjdCogb2JqZWN0KQogCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF91
bnJlZihwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCk7CiAgICAgICAgIHByaXYtPnBhc3RlX3Rhcmdl
dF9saXN0ID0gTlVMTDsKLQotICAgICAgICBkZWxldGUgcHJpdi0+dXNlckFnZW50OwotICAgICAg
ICBwcml2LT51c2VyQWdlbnQgPSBOVUxMOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdl
YmtpdF93ZWJfdmlld19wYXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CmRpZmYgLS1naXQg
YS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggYjcyMGE0My4uY2E3YzIyZiAxMDA2
NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNCw2ICs0LDEzIEBA
IG00X2RlZmluZShbd2Via2l0X21ham9yX3ZlcnNpb25dLCBbMV0pCiBtNF9kZWZpbmUoW3dlYmtp
dF9taW5vcl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWljcm9fdmVyc2lvbl0s
IFsxMF0pCiAKKyMgVGhpcyBpcyB0aGUgdmVyc2lvbiB3ZSdsbCBiZSB1c2luZyBhcyBwYXJ0IG9m
IG91ciBVc2VyLUFnZW50IHN0cmluZworIyBlLmcuLCBBcHBsZVdlYktpdC8kKHdlYmtpdF91c2Vy
X2FnZW50X3ZlcnNpb24pIC4uLgorIworIyBTb3VyY2VkIGZyb20gV2ViQ29yZS9Db25maWd1cmF0
aW9ucy9WZXJzaW9uLnhjY29uZmlnCittNF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21ham9y
X3ZlcnNpb25dLCBbNTMxXSkKK200X2RlZmluZShbd2Via2l0X3VzZXJfYWdlbnRfbWlub3JfdmVy
c2lvbl0sIFswXSkKKwogQUNfSU5JVChbV2ViS2l0XSxbd2Via2l0X21ham9yX3ZlcnNpb24ud2Vi
a2l0X21pbm9yX3ZlcnNpb24ud2Via2l0X21pY3JvX3ZlcnNpb25dLFtodHRwOi8vYnVncy53ZWJr
aXQub3JnL10pCiAKIEFDX0NPTkZJR19NQUNST19ESVIoW2F1dG90b29sc10pCkBAIC0xNiw5ICsy
MywxMyBAQCBBQ19DQU5PTklDQUxfSE9TVAogV0VCS0lUX01BSk9SX1ZFUlNJT049d2Via2l0X21h
am9yX3ZlcnNpb24KIFdFQktJVF9NSU5PUl9WRVJTSU9OPXdlYmtpdF9taW5vcl92ZXJzaW9uCiBX
RUJLSVRfTUlDUk9fVkVSU0lPTj13ZWJraXRfbWljcm9fdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdF
TlRfTUFKT1JfVkVSU0lPTj13ZWJraXRfdXNlcl9hZ2VudF9tYWpvcl92ZXJzaW9uCitXRUJLSVRf
VVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OPXdlYmtpdF91c2VyX2FnZW50X21pbm9yX3ZlcnNpb24K
IEFDX1NVQlNUKFdFQktJVF9NQUpPUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VCS0lUX01JTk9SX1ZF
UlNJT04pCiBBQ19TVUJTVChXRUJLSVRfTUlDUk9fVkVSU0lPTikKK0FDX1NVQlNUKFdFQktJVF9V
U0VSX0FHRU5UX01BSk9SX1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NSU5P
Ul9WRVJTSU9OKQogCiBBQ19DT05GSUdfU1JDRElSKFtXZWJDb3JlL2NvbmZpZy5oXSk=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32056</attachid>
            <date>2009-06-30 05:45:52 -0700</date>
            <delta_ts>2009-06-30 06:03:40 -0700</delta_ts>
            <desc>updated patch with empty string test</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>20493</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi5jZGI3YjNk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGZkNDNlZDYuLmJlNzM2ODkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZSk6CisKIDIwMDktMDYtMjkgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGYw
Nzc2ZjkuLmVjMTU3NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC02NCw5ICs2NCw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBQ
TEFURk9STShVTklYKQotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc0LDcgKzcxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV91c2VyQWdlbnQoIiIpCiAgICAg
LCBtX3BvbGljeURlY2lzaW9uKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCkBAIC04OCw4NiArODQsMTAgQEAgRnJhbWVMb2Fk
ZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1f
cG9saWN5RGVjaXNpb24pOwogfQogCi1zdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQotewot
I2lmZGVmIEdES19XSU5ET1dJTkdfWDExCi0gICAgcmV0dXJuICJYMTEiOwotI2VsaWYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dJTjMyKQotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfUVVBUlRaKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNlbGlm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJFQ1RGQikKLSAgICByZXR1cm4gIkRpcmVjdEZCIjsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gIlVua25vd24iOwotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyBTdHJpbmcgYWdlbnRPUygpCi17Ci0jaWYgUExBVEZPUk0oREFSV0lO
KQotI2lmIFBMQVRGT1JNKFg4NikKLSAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKLSNlbHNl
Ci0gICAgcmV0dXJuICJQUEMgTWFjIE9TIFgiOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShVTklY
KQotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFt
ZS5tYWNoaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAiVW5rbm93biI7Ci0jZWxpZiBQ
TEFURk9STShXSU5fT1MpCi0gICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lv
bgotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGNvbXBvc2VV
c2VyQWdlbnQoKQotewotICAgIC8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9m
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3Mu
aHRtbAotICAgIC8vIFNlZSBhbHNvIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ludGVybmV0
L3NhZmFyaS9mYXEuaHRtbCNhbmNob3IyCi0KLSAgICBTdHJpbmcgdWE7Ci0KLSAgICAvLyBQcm9k
dWN0Ci0gICAgdWEgKz0gIk1vemlsbGEvNS4wIjsKLQotICAgIC8vIENvbW1lbnQKLSAgICB1YSAr
PSAiICgiOwotICAgIHVhICs9IGFnZW50UGxhdGZvcm0oKTsgLy8gUGxhdGZvcm0KLSAgICB1YSAr
PSAiOyBVOyAiOyAvLyBTZWN1cml0eQotICAgIHVhICs9IGFnZW50T1MoKTsgLy8gT1Mtb3ItQ1BV
Ci0gICAgdWEgKz0gIjsgIjsKLSAgICB1YSArPSBkZWZhdWx0TGFuZ3VhZ2UoKTsgLy8gTG9jYWxp
emF0aW9uIGluZm9ybWF0aW9uCi0gICAgdWEgKz0gIikgIjsKLQotICAgIC8vIFdlYktpdCBQcm9k
dWN0Ci0gICAgLy8gRklYTUU6IFRoZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIHdlYktpdFZlcnNpb24gPSAiNTI4LjUrIjsKLSAgICB1YSArPSAi
QXBwbGVXZWJLaXQvIiArIHdlYktpdFZlcnNpb247Ci0gICAgdWEgKz0gIiAoS0hUTUwsIGxpa2Ug
R2Vja28sICI7Ci0gICAgLy8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0
ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCi0gICAgLy8gV2UgcmUtdXNl
IHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVj
aCBpbiBwcmFjdGljZQotICAgIHVhICs9ICJTYWZhcmkvIiArIHdlYktpdFZlcnNpb247Ci0gICAg
dWEgKz0gIikgIjsKLQotICAgIC8vIFZlbmRvciBQcm9kdWN0Ci0gICAgdWEgKz0gZ19nZXRfcHJn
bmFtZSgpOwotCi0gICAgcmV0dXJuIHVhOwotfQotCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgp
KQotICAgICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLQotICAgIHJldHVy
biBtX3VzZXJBZ2VudDsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQo
c2V0dGluZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5U3RhdHVzKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY4NWM2M2EuLmIwY2Vl
ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2Vy
QWdlbnQ7CiAgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURlY2lzaW9u
OwogCiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1
YmQ5NjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5n
cy5jCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hh
ZWwgQWxvbnpvCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXQuaD4KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkg
JiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgZ2NoYXIqIHVzZXJB
Z2VudDsKKyAgICBnX3Rlc3RfYnVnKCIxNzM3NSIpOworCisgICAgd2ViVmlldyA9IHdlYmtpdF93
ZWJfdmlld19uZXcoKTsKKyAgICBnX29iamVjdF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHNl
dHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dldF9zZXR0aW5ncyh3ZWJWaWV3KTsKKworICAgIC8v
IHRlc3QgdGhlIGRlZmF1bHQgVUEgc3RyaW5nCisgICAgZ19vYmplY3RfZ2V0KEdfT0JKRUNUKHNl
dHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih1c2VyQWdlbnQsID09LCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2VyX2FnZW50KHNl
dHRpbmdzKSk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICAvLyB0ZXN0IGEgY3VzdG9t
IFVBIHN0cmluZworICAgIHVzZXJBZ2VudCA9IE5VTEw7CisgICAgZ19vYmplY3Rfc2V0KEdfT0JK
RUNUKHNldHRpbmdzKSwgInVzZXItYWdlbnQiLCAidGVzdHdlYnNldHRpbmdzLzAuMSIsIE5VTEwp
OworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAmdXNl
ckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgInRlc3R3
ZWJzZXR0aW5ncy8wLjEiKTsKKyAgICBnX2ZyZWUodXNlckFnZW50KTsKKworICAgIC8vIHNldHRp
bmcgaXQgdG8gTlVMTCBvciBhbiBlbXB0eSB2YWx1ZSBzaG91bGQgZ2l2ZSB1cyB0aGUgZGVmYXVs
dCBVQSBzdHJpbmcKKyAgICB1c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgTlVMTCwgTlVMTCk7CisgICAgZ19vYmplY3Rf
Z2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCB3ZWJraXRfd2ViX3NldHRpbmdzX2dl
dF91c2VyX2FnZW50KHNldHRpbmdzKSk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICB1
c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJ1
c2VyLWFnZW50IiwgIiIsIE5VTEwpOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChzZXR0aW5n
cyksInVzZXItYWdlbnQiLCAmdXNlckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
dXNlckFnZW50LCA9PSwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5n
cykpOworICAgIGdfZnJlZSh1c2VyQWdlbnQpOworCisgICAgZ19vYmplY3RfdW5yZWYod2ViVmll
dyk7Cit9CisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX3RocmVh
ZF9pbml0KE5VTEwpOworICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKwor
ICAgIGdfdGVzdF9idWdfYmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190
ZXN0X2FkZF9mdW5jKCIvd2Via2l0L3dlYnNldHRpbmdzL3VzZXJfYWdlbnQiLCB0ZXN0X3dlYmtp
dF93ZWJfc2V0dGluZ3NfdXNlcl9hZ2VudCk7CisgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9
CisKKyNlbHNlCitpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgZ19jcml0
aWNhbCgiWW91IHdpbGwgbmVlZCBhdCBsZWFzdCBnbGliLTIuMTYuMCBhbmQgZ3RrLTIuMTQuMCB0
byBydW4gdGhlIHVuaXQgdGVzdHMuIERvaW5nIG5vdGhpbmcgbm93LiIpOworICAgIHJldHVybiAw
OworfQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZh
dGUuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAxM2ZjZDE2Li4x
ZDE4NDM0IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC05OCw5ICs5OCw2IEBAIGV4
dGVybiAiQyIgewogICAgICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVh
dHVyZXM7CiAKICAgICAgICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKLSAgICAgICAgV2Vi
Q29yZTo6U3RyaW5nIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKLSAgICAgICAgV2ViQ29y
ZTo6U3RyaW5nKiB1c2VyQWdlbnQ7Ci0KICAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0
KiBiYWNrRm9yd2FyZExpc3Q7CiAKICAgICAgICAgZ2ludCBsYXN0UG9wdXBYUG9zaXRpb247CmRp
ZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4gYi9XZWJLaXQv
Z3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4KaW5kZXggZjcwODAwZC4uOWYxYjgxOCAxMDA2
NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCisrKyBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbgpAQCAtMjgsNiArMjgsOCBAQCBHX0JFR0lO
X0RFQ0xTCiAjZGVmaW5lIFdFQktJVF9NQUpPUl9WRVJTSU9OIChAV0VCS0lUX01BSk9SX1ZFUlNJ
T05AKQogI2RlZmluZSBXRUJLSVRfTUlOT1JfVkVSU0lPTiAoQFdFQktJVF9NSU5PUl9WRVJTSU9O
QCkKICNkZWZpbmUgV0VCS0lUX01JQ1JPX1ZFUlNJT04gKEBXRUJLSVRfTUlDUk9fVkVSU0lPTkAp
CisjZGVmaW5lIFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04gKEBXRUJLSVRfVVNFUl9B
R0VOVF9NQUpPUl9WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVS
U0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01JTk9SX1ZFUlNJT05AKQogCiAjZGVmaW5lIFdFQktJ
VF9DSEVDS19WRVJTSU9OKG1ham9yLCBtaW5vciwgbWljcm8pIFwKICAgKFdFQktJVF9NQUpPUl9W
RVJTSU9OID4gKG1ham9yKSB8fCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR3ZWJzZXR0aW5ncy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5j
cHAKaW5kZXggMmYxODg2Yy4uN2U1NDc0YiAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0d2Vic2V0dGluZ3MuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNl
dHRpbmdzLmNwcApAQCAtMyw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkg
THRkLgogICogQ29weXJpZ2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMDggSG9sZ2VyIEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAw
OSBKYW4gTWljaGFlbCBBbG9uem8KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTMgKzIyLDIx
IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0
dGluZ3MuaCIKKwogI2luY2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR2
ZXJzaW9uLmgiCiAKLSNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgIkNTdHJp
bmcuaCIKICNpbmNsdWRlICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2Uu
aCIKKyNpbmNsdWRlICJMYW5ndWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisK
KyNpbmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2lmIFBMQVRGT1JNKFVOSVgpCisjaW5jbHVk
ZSA8c3lzL3V0c25hbWUuaD4KKyNlbmRpZgogCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2Vic2V0
dGluZ3MKQEAgLTgxLDYgKzkwLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUg
ewogICAgIGdib29sZWFuIGVuYWJsZV9odG1sNV9kYXRhYmFzZTsKICAgICBnYm9vbGVhbiBlbmFi
bGVfaHRtbDVfbG9jYWxfc3RvcmFnZTsKICAgICBnYm9vbGVhbiBlbmFibGVfeHNzX2F1ZGl0b3I7
CisgICAgZ2NoYXIqIHVzZXJfYWdlbnQ7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElO
R1NfR0VUX1BSSVZBVEUob2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBX
RUJLSVRfVFlQRV9XRUJfU0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0x
MTUsOSArMTI1LDY3IEBAIGVudW0gewogICAgIFBST1BfRU5BQkxFX0NBUkVUX0JST1dTSU5HLAog
ICAgIFBST1BfRU5BQkxFX0hUTUw1X0RBVEFCQVNFLAogICAgIFBST1BfRU5BQkxFX0hUTUw1X0xP
Q0FMX1NUT1JBR0UsCi0gICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IKKyAgICBQUk9QX0VOQUJM
RV9YU1NfQVVESVRPUiwKKyAgICBQUk9QX1VTRVJfQUdFTlQKIH07CiAKKy8vIENyZWF0ZSBhIGRl
ZmF1bHQgdXNlciBhZ2VudCBzdHJpbmcKKy8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0
aW9uIG9mIGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0
cmluZ3MuaHRtbAorLy8gU2VlIGFsc28gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJu
ZXQvc2FmYXJpL2ZhcS5odG1sI2FuY2hvcjIKK3N0YXRpYyBTdHJpbmcgd2Via2l0X2dldF91c2Vy
X2FnZW50KCkKK3sKKyAgICBnY2hhciogcGxhdGZvcm07CisgICAgZ2NoYXIqIG9zVmVyc2lvbjsK
KworI2lmIFBMQVRGT1JNKFgxMSkKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJYMTEiKTsKKyNl
bGlmIFBMQVRGT1JNKFdJTl9PUykKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJXaW5kb3dzIik7
CisjZWxpZiBQTEFURk9STShNQUMpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiTWFjaW50b3No
Iik7CisjZWxpZiBkZWZpbmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgcGxhdGZvcm0g
PSBnX3N0cmR1cCgiRGlyZWN0RkIiKTsKKyNlbHNlCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgi
VW5rbm93biIpOworI2VuZGlmCisKKyAgIC8vIEZJWE1FOiBwbGF0Zm9ybS92ZXJzaW9uIGRldGVj
dGlvbiBjYW4gYmUgc2hhcmVkLgorI2lmIFBMQVRGT1JNKERBUldJTikKKworI2lmIFBMQVRGT1JN
KFg4NikKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiSW50ZWwgTWFjIE9TIFgiKTsKKyNlbHNl
CisgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlBQQyBNYWMgT1MgWCIpOworI2VuZGlmCisKKyNl
bGlmIFBMQVRGT1JNKFVOSVgpCisgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKKyAgICBpZiAodW5h
bWUoJm5hbWUpICE9IC0xKQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cF9wcmludGYoIiVz
ICVzIiwgbmFtZS5zeXNuYW1lLCBuYW1lLm1hY2hpbmUpOworICAgIGVsc2UKKyAgICAgICAgb3NW
ZXJzaW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKworI2VsaWYgUExBVEZPUk0oV0lOX09TKQor
ICAgIC8vIEZJWE1FOiBDb21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KKyAgICBvc1ZlcnNpb24g
PSBnX3N0cmR1cCgiV2luZG93cyIpOworCisjZWxzZQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVw
KCJVbmtub3duIik7CisjZW5kaWYKKworICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1h
bnkgYnJva2VuIHNpdGVzIGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQorICAg
IC8vIFdlIHJlLXVzZSB0aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0g
dG8gbWF0dGVyIG11Y2ggaW4gcHJhY3RpY2UKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCB1YVZlcnNpb24sIChTdHJpbmc6OmZvcm1hdCgiJWQuJWQrIiwgV0VCS0lUX1VT
RVJfQUdFTlRfTUFKT1JfVkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikp
KTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChTdHJp
bmc6OmZvcm1hdCgiTW96aWxsYS81LjAgKCVzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChL
SFRNTCwgbGlrZSBHZWNrbykgU2FmYXJpLyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3NWZXJzaW9u
LCBkZWZhdWx0TGFuZ3VhZ2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEo
KSwgdWFWZXJzaW9uLnV0ZjgoKS5kYXRhKCkpKSk7CisKKyAgICBnX2ZyZWUob3NWZXJzaW9uKTsK
KyAgICBnX2ZyZWUocGxhdGZvcm0pOworCisgICAgcmV0dXJuIHN0YXRpY1VBOworfQorCiBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CiAK
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9i
amVjdCwgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNw
ZWMpOwpAQCAtNDc0LDYgKzU0MiwyMyBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdz
X2NsYXNzX2luaXQoV2ViS2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdz
KSk7CiAKKyAgICAvKioKKyAgICAgKiBXZWJLaXRXZWJTZXR0aW5nczp1c2VyLWFnZW50OgorICAg
ICAqCisgICAgICogVGhlIFVzZXItQWdlbnQgc3RyaW5nIHVzZWQgYnkgV2ViS2l0R3RrLgorICAg
ICAqCisgICAgICogVGhpcyB3aWxsIHJldHVybiBhIGRlZmF1bHQgVXNlci1BZ2VudCBzdHJpbmcg
aWYgYSBjdXN0b20gc3RyaW5nIHdhc24ndAorICAgICAqIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNh
dGlvbi4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTEKKyAgICAgKi8KKyAgICBnX29iamVj
dF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBST1BfVVNFUl9BR0VOVCwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmco
InVzZXItYWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2VyLUFnZW50IHN0cmluZyB1
c2VkIGJ5IFdlYktpdEd0ayIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQoKS51dGY4KCkuZGF0YSgp
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlKGtsYXNzLCBzaXplb2Yo
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTUxMiw2ICs1OTcsOCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCkKICAg
ICBnX3NsaXN0X2ZvcmVhY2gocHJpdi0+c3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2VzX2xpc3QsIGZy
ZWVfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2UsIE5VTEwpOwogICAgIGdfc2xpc3RfZnJlZShwcml2
LT5zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfbGlzdCk7CiAKKyAgICBnX2ZyZWUocHJpdi0+dXNl
cl9hZ2VudCk7CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3NldHRpbmdzX3BhcmVu
dF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKQEAgLTYzOSw2ICs3MjYsMTMgQEAgc3Rh
dGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0
LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgog
ICAgICAgICBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IgPSBnX3ZhbHVlX2dldF9ib29sZWFuKHZh
bHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1VTRVJfQUdFTlQ6CisgICAgICAg
IGdfZnJlZShwcml2LT51c2VyX2FnZW50KTsKKyAgICAgICAgaWYgKCFnX3ZhbHVlX2dldF9zdHJp
bmcodmFsdWUpKQorICAgICAgICAgICAgcHJpdi0+dXNlcl9hZ2VudCA9IGdfc3RyZHVwKHdlYmtp
dF9nZXRfdXNlcl9hZ2VudCgpLnV0ZjgoKS5kYXRhKCkpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwcml2LT51c2VyX2FnZW50ID0gZ19zdHJkdXAoZ192YWx1ZV9nZXRfc3RyaW5nKHZhbHVl
KSk7CisgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIEdfT0JKRUNUX1dBUk5f
SU5WQUxJRF9QUk9QRVJUWV9JRChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgICAgYnJl
YWs7CkBAIC03MzUsNiArODI5LDkgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19n
ZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmEKICAgICBjYXNl
IFBST1BfRU5BQkxFX1hTU19BVURJVE9SOgogICAgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuKHZh
bHVlLCBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IpOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IFBST1BfVVNFUl9BR0VOVDoKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nKHZhbHVlLCBwcml2
LT51c2VyX2FnZW50KTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19P
QkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwog
ICAgICAgICBicmVhazsKQEAgLTc5NCw2ICs4OTEsNyBAQCBXZWJLaXRXZWJTZXR0aW5ncyogd2Vi
a2l0X3dlYl9zZXR0aW5nc19jb3B5KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJfc2V0dGluZ3MpCiAg
ICAgICAgICAgICAgICAgICJlbmFibGUtaHRtbDUtZGF0YWJhc2UiLCBwcml2LT5lbmFibGVfaHRt
bDVfZGF0YWJhc2UsCiAgICAgICAgICAgICAgICAgICJlbmFibGUtaHRtbDUtbG9jYWwtc3RvcmFn
ZSIsIHByaXYtPmVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlLAogICAgICAgICAgICAgICAgICAi
ZW5hYmxlLXhzcy1hdWRpdG9yIiwgcHJpdi0+ZW5hYmxlX3hzc19hdWRpdG9yLAorICAgICAgICAg
ICAgICAgICAidXNlci1hZ2VudCIsIHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQo
d2ViX3NldHRpbmdzKSwKICAgICAgICAgICAgICAgICAgTlVMTCkpOwogCiAgICAgcmV0dXJuIGNv
cHk7CkBAIC04MzQsMyArOTMyLDIxIEBAIEdTTGlzdCogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRf
c3BlbGxfbGFuZ3VhZ2VzKFdlYktpdFdlYlZpZXcgKndlYl92aWV3KQogCiAgICAgcmV0dXJuIGxp
c3Q7CiB9CisKKy8qKgorICogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudDoKKyAq
IEB3ZWJfc2V0dGluZ3M6IGEgI1dlYktpdFdlYlNldHRpbmdzCisgKgorICogUmV0dXJucyB0aGUg
VXNlci1BZ2VudCBzdHJpbmcgY3VycmVudGx5IHVzZWQgYnkgdGhlIHdlYiB2aWV3KHMpIGFzc29j
aWF0ZWQKKyAqIHdpdGggdGhlIEB3ZWJfc2V0dGluZ3MuCisgKgorICogU2luY2U6IDEuMS4xMQor
ICovCitHX0NPTlNUX1JFVFVSTiBnY2hhciogd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9h
Z2VudChXZWJLaXRXZWJTZXR0aW5ncyogd2ViU2V0dGluZ3MpCit7CisgICAgZ19yZXR1cm5fdmFs
X2lmX2ZhaWwoV0VCS0lUX0lTX1dFQl9TRVRUSU5HUyh3ZWJTZXR0aW5ncyksIE5VTEwpOworCisg
ICAgV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKiBwcml2ID0gd2ViU2V0dGluZ3MtPnByaXY7CisK
KyAgICByZXR1cm4gcHJpdi0+dXNlcl9hZ2VudDsKK30KZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmggYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5oCmluZGV4IDVkMjVmZWUuLjllYWMzMjEgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsv
d2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmgKKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDgg
Q2hyaXN0aWFuIER5d2FuIDxjaHJpc3RpYW5AaW1lbmRpby5jb20+CisgKiBDb3B5cmlnaHQgKEMp
IDIwMDkgSmFuIE1pY2hhZWwgQWxvbnpvIDxqbWFsb256b0BnbWFpbC5jb20KICAqCiAgKiBUaGlz
IGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y
CiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYwpAQCAtNTMsMTMgKzU0LDE2IEBAIHN0cnVjdCBfV2ViS2l0V2ViU2V0dGluZ3NDbGFz
cyB7CiB9OwogCiBXRUJLSVRfQVBJIEdUeXBlCi13ZWJraXRfd2ViX3NldHRpbmdzX2dldF90eXBl
ICh2b2lkKTsKK3dlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOwog
CiBXRUJLSVRfQVBJIFdlYktpdFdlYlNldHRpbmdzICoKLXdlYmtpdF93ZWJfc2V0dGluZ3NfbmV3
ICAgICAgKHZvaWQpOword2Via2l0X3dlYl9zZXR0aW5nc19uZXcgICAgICAgICAgICAgICAodm9p
ZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgotd2Via2l0X3dlYl9zZXR0aW5n
c19jb3B5ICAgICAoV2ViS2l0V2ViU2V0dGluZ3MgKndlYl9zZXR0aW5ncyk7Cit3ZWJraXRfd2Vi
X3NldHRpbmdzX2NvcHkgICAgICAgICAgICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRp
bmdzKTsKKworV0VCS0lUX0FQSSBHX0NPTlNUX1JFVFVSTiBnY2hhciAqCit3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50ICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRpbmdz
KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0
d2Vidmlldy5jcHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcAppbmRleCA1
YjE5ODU2Li5iZjQ2MWM4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2aWV3LmNwcApAQCAtOTMy
LDkgKzkzMiw2IEBAIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfdmlld19kaXNwb3NlKEdPYmplY3Qq
IG9iamVjdCkKIAogICAgICAgICBndGtfdGFyZ2V0X2xpc3RfdW5yZWYocHJpdi0+cGFzdGVfdGFy
Z2V0X2xpc3QpOwogICAgICAgICBwcml2LT5wYXN0ZV90YXJnZXRfbGlzdCA9IE5VTEw7Ci0KLSAg
ICAgICAgZGVsZXRlIHByaXYtPnVzZXJBZ2VudDsKLSAgICAgICAgcHJpdi0+dXNlckFnZW50ID0g
TlVMTDsKICAgICB9CiAKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2ViX3ZpZXdfcGFyZW50
X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOwpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29u
ZmlndXJlLmFjCmluZGV4IGI3MjBhNDMuLmNhN2MyMmYgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5h
YworKysgYi9jb25maWd1cmUuYWMKQEAgLTQsNiArNCwxMyBAQCBtNF9kZWZpbmUoW3dlYmtpdF9t
YWpvcl92ZXJzaW9uXSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWlub3JfdmVyc2lvbl0sIFsx
XSkKIG00X2RlZmluZShbd2Via2l0X21pY3JvX3ZlcnNpb25dLCBbMTBdKQogCisjIFRoaXMgaXMg
dGhlIHZlcnNpb24gd2UnbGwgYmUgdXNpbmcgYXMgcGFydCBvZiBvdXIgVXNlci1BZ2VudCBzdHJp
bmcKKyMgZS5nLiwgQXBwbGVXZWJLaXQvJCh3ZWJraXRfdXNlcl9hZ2VudF92ZXJzaW9uKSAuLi4K
KyMKKyMgU291cmNlZCBmcm9tIFdlYkNvcmUvQ29uZmlndXJhdGlvbnMvVmVyc2lvbi54Y2NvbmZp
ZworbTRfZGVmaW5lKFt3ZWJraXRfdXNlcl9hZ2VudF9tYWpvcl92ZXJzaW9uXSwgWzUzMV0pCitt
NF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21pbm9yX3ZlcnNpb25dLCBbMF0pCisKIEFDX0lO
SVQoW1dlYktpdF0sW3dlYmtpdF9tYWpvcl92ZXJzaW9uLndlYmtpdF9taW5vcl92ZXJzaW9uLndl
YmtpdF9taWNyb192ZXJzaW9uXSxbaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy9dKQogCiBBQ19DT05G
SUdfTUFDUk9fRElSKFthdXRvdG9vbHNdKQpAQCAtMTYsOSArMjMsMTMgQEAgQUNfQ0FOT05JQ0FM
X0hPU1QKIFdFQktJVF9NQUpPUl9WRVJTSU9OPXdlYmtpdF9tYWpvcl92ZXJzaW9uCiBXRUJLSVRf
TUlOT1JfVkVSU0lPTj13ZWJraXRfbWlub3JfdmVyc2lvbgogV0VCS0lUX01JQ1JPX1ZFUlNJT049
d2Via2l0X21pY3JvX3ZlcnNpb24KK1dFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT049d2Vi
a2l0X3VzZXJfYWdlbnRfbWFqb3JfdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVS
U0lPTj13ZWJraXRfdXNlcl9hZ2VudF9taW5vcl92ZXJzaW9uCiBBQ19TVUJTVChXRUJLSVRfTUFK
T1JfVkVSU0lPTikKIEFDX1NVQlNUKFdFQktJVF9NSU5PUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VC
S0lUX01JQ1JPX1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJT
SU9OKQorQUNfU1VCU1QoV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikKIAogQUNfQ09O
RklHX1NSQ0RJUihbV2ViQ29yZS9jb25maWcuaF0p
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32059</attachid>
            <date>2009-06-30 06:03:46 -0700</date>
            <delta_ts>2009-06-30 06:36:02 -0700</delta_ts>
            <desc>updated patch with some test and doc fixes</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>20498</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi5jZGI3YjNk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGZkNDNlZDYuLmJlNzM2ODkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZSk6CisKIDIwMDktMDYtMjkgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGYw
Nzc2ZjkuLmVjMTU3NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC02NCw5ICs2NCw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBQ
TEFURk9STShVTklYKQotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc0LDcgKzcxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV91c2VyQWdlbnQoIiIpCiAgICAg
LCBtX3BvbGljeURlY2lzaW9uKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCkBAIC04OCw4NiArODQsMTAgQEAgRnJhbWVMb2Fk
ZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1f
cG9saWN5RGVjaXNpb24pOwogfQogCi1zdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQotewot
I2lmZGVmIEdES19XSU5ET1dJTkdfWDExCi0gICAgcmV0dXJuICJYMTEiOwotI2VsaWYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dJTjMyKQotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfUVVBUlRaKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNlbGlm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJFQ1RGQikKLSAgICByZXR1cm4gIkRpcmVjdEZCIjsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gIlVua25vd24iOwotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyBTdHJpbmcgYWdlbnRPUygpCi17Ci0jaWYgUExBVEZPUk0oREFSV0lO
KQotI2lmIFBMQVRGT1JNKFg4NikKLSAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKLSNlbHNl
Ci0gICAgcmV0dXJuICJQUEMgTWFjIE9TIFgiOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShVTklY
KQotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFt
ZS5tYWNoaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAiVW5rbm93biI7Ci0jZWxpZiBQ
TEFURk9STShXSU5fT1MpCi0gICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lv
bgotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGNvbXBvc2VV
c2VyQWdlbnQoKQotewotICAgIC8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9m
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3Mu
aHRtbAotICAgIC8vIFNlZSBhbHNvIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ludGVybmV0
L3NhZmFyaS9mYXEuaHRtbCNhbmNob3IyCi0KLSAgICBTdHJpbmcgdWE7Ci0KLSAgICAvLyBQcm9k
dWN0Ci0gICAgdWEgKz0gIk1vemlsbGEvNS4wIjsKLQotICAgIC8vIENvbW1lbnQKLSAgICB1YSAr
PSAiICgiOwotICAgIHVhICs9IGFnZW50UGxhdGZvcm0oKTsgLy8gUGxhdGZvcm0KLSAgICB1YSAr
PSAiOyBVOyAiOyAvLyBTZWN1cml0eQotICAgIHVhICs9IGFnZW50T1MoKTsgLy8gT1Mtb3ItQ1BV
Ci0gICAgdWEgKz0gIjsgIjsKLSAgICB1YSArPSBkZWZhdWx0TGFuZ3VhZ2UoKTsgLy8gTG9jYWxp
emF0aW9uIGluZm9ybWF0aW9uCi0gICAgdWEgKz0gIikgIjsKLQotICAgIC8vIFdlYktpdCBQcm9k
dWN0Ci0gICAgLy8gRklYTUU6IFRoZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIHdlYktpdFZlcnNpb24gPSAiNTI4LjUrIjsKLSAgICB1YSArPSAi
QXBwbGVXZWJLaXQvIiArIHdlYktpdFZlcnNpb247Ci0gICAgdWEgKz0gIiAoS0hUTUwsIGxpa2Ug
R2Vja28sICI7Ci0gICAgLy8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0
ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCi0gICAgLy8gV2UgcmUtdXNl
IHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVj
aCBpbiBwcmFjdGljZQotICAgIHVhICs9ICJTYWZhcmkvIiArIHdlYktpdFZlcnNpb247Ci0gICAg
dWEgKz0gIikgIjsKLQotICAgIC8vIFZlbmRvciBQcm9kdWN0Ci0gICAgdWEgKz0gZ19nZXRfcHJn
bmFtZSgpOwotCi0gICAgcmV0dXJuIHVhOwotfQotCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgp
KQotICAgICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLQotICAgIHJldHVy
biBtX3VzZXJBZ2VudDsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQo
c2V0dGluZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5U3RhdHVzKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY4NWM2M2EuLmIwY2Vl
ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2Vy
QWdlbnQ7CiAgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURlY2lzaW9u
OwogCiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0
Mjk0ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5n
cy5jCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hh
ZWwgQWxvbnpvCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXQuaD4KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkg
JiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgZ2NoYXIqIGRlZmF1
bHRVc2VyQWdlbnQ7CisgICAgZ2NoYXIqIHVzZXJBZ2VudDsKKyAgICBnX3Rlc3RfYnVnKCIxNzM3
NSIpOworCisgICAgd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKyAgICBnX29iamVj
dF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyh3ZWJWaWV3KTsKKworICAgIC8vIHRlc3QgYSBjdXN0b20gVUEgc3RyaW5nCisg
ICAgdXNlckFnZW50ID0gTlVMTDsKKyAgICBnX29iamVjdF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3Mp
LCAidXNlci1hZ2VudCIsICJ0ZXN0d2Vic2V0dGluZ3MvMC4xIiwgTlVMTCk7CisgICAgZ19vYmpl
Y3RfZ2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwp
OworICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCAidGVzdHdlYnNldHRpbmdzLzAu
MSIpOworICAgIGdfZnJlZSh1c2VyQWdlbnQpOworCisgICAgLy8gc2V0dGluZyBpdCB0byBOVUxM
IG9yIGFuIGVtcHR5IHZhbHVlIHNob3VsZCBnaXZlIHVzIHRoZSBkZWZhdWx0IFVBIHN0cmluZwor
ICAgIHVzZXJBZ2VudCA9IE5VTEw7CisgICAgZGVmYXVsdFVzZXJBZ2VudCA9IHdlYmtpdF93ZWJf
c2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQoc2V0dGluZ3MpOworICAgIGdfb2JqZWN0X3NldChHX09C
SkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgTlVMTCwgTlVMTCk7CisgICAgZ19vYmplY3Rf
Z2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQsIE5VTEwpOwor
ICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCBkZWZhdWx0VXNlckFnZW50KTsKKyAg
ICBnX2ZyZWUodXNlckFnZW50KTsKKworICAgIHVzZXJBZ2VudCA9IE5VTEw7CisgICAgZ19vYmpl
Y3Rfc2V0KEdfT0JKRUNUKHNldHRpbmdzKSwgInVzZXItYWdlbnQiLCAiIiwgTlVMTCk7CisgICAg
Z19vYmplY3RfZ2V0KEdfT0JKRUNUKHNldHRpbmdzKSwidXNlci1hZ2VudCIsICZ1c2VyQWdlbnQs
IE5VTEwpOworICAgIGdfYXNzZXJ0X2NtcHN0cih1c2VyQWdlbnQsID09LCBkZWZhdWx0VXNlckFn
ZW50KTsKKyAgICBnX2ZyZWUodXNlckFnZW50KTsKKworICAgIGdfZnJlZShkZWZhdWx0VXNlckFn
ZW50KTsKKyAgICBnX29iamVjdF91bnJlZih3ZWJWaWV3KTsKK30KKworaW50IG1haW4oaW50IGFy
Z2MsIGNoYXIqKiBhcmd2KQoreworICAgIGdfdGhyZWFkX2luaXQoTlVMTCk7CisgICAgZ3RrX3Rl
c3RfaW5pdCgmYXJnYywgJmFyZ3YsIE5VTEwpOworCisgICAgZ190ZXN0X2J1Z19iYXNlKCJodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy8iKTsKKyAgICBnX3Rlc3RfYWRkX2Z1bmMoIi93ZWJraXQvd2Vi
c2V0dGluZ3MvdXNlcl9hZ2VudCIsIHRlc3Rfd2Via2l0X3dlYl9zZXR0aW5nc191c2VyX2FnZW50
KTsKKyAgICByZXR1cm4gZ190ZXN0X3J1biAoKTsKK30KKworI2Vsc2UKK2ludCBtYWluKGludCBh
cmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX2NyaXRpY2FsKCJZb3Ugd2lsbCBuZWVkIGF0IGxl
YXN0IGdsaWItMi4xNi4wIGFuZCBndGstMi4xNC4wIHRvIHJ1biB0aGUgdW5pdCB0ZXN0cy4gRG9p
bmcgbm90aGluZyBub3cuIik7CisgICAgcmV0dXJuIDA7Cit9CisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0cHJpdmF0ZS5oIGIvV2ViS2l0L2d0ay93ZWJraXQv
d2Via2l0cHJpdmF0ZS5oCmluZGV4IDEzZmNkMTYuLjFkMTg0MzQgMTAwNjQ0Ci0tLSBhL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXRwcml2YXRlLmgKQEAgLTk4LDkgKzk4LDYgQEAgZXh0ZXJuICJDIiB7CiAgICAgICAgIFdlYktp
dFdlYldpbmRvd0ZlYXR1cmVzKiB3ZWJXaW5kb3dGZWF0dXJlczsKIAogICAgICAgICBXZWJLaXRX
ZWJGcmFtZSogbWFpbkZyYW1lOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgYXBwbGljYXRpb25O
YW1lRm9yVXNlckFnZW50OwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcqIHVzZXJBZ2VudDsKLQog
ICAgICAgICBXZWJLaXRXZWJCYWNrRm9yd2FyZExpc3QqIGJhY2tGb3J3YXJkTGlzdDsKIAogICAg
ICAgICBnaW50IGxhc3RQb3B1cFhQb3NpdGlvbjsKZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Vi
a2l0L3dlYmtpdHZlcnNpb24uaC5pbiBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHZlcnNpb24u
aC5pbgppbmRleCBmNzA4MDBkLi45ZjFiODE4IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtp
dC93ZWJraXR2ZXJzaW9uLmguaW4KKysrIGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0dmVyc2lv
bi5oLmluCkBAIC0yOCw2ICsyOCw4IEBAIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgV0VCS0lUX01B
Sk9SX1ZFUlNJT04gKEBXRUJLSVRfTUFKT1JfVkVSU0lPTkApCiAjZGVmaW5lIFdFQktJVF9NSU5P
Ul9WRVJTSU9OIChAV0VCS0lUX01JTk9SX1ZFUlNJT05AKQogI2RlZmluZSBXRUJLSVRfTUlDUk9f
VkVSU0lPTiAoQFdFQktJVF9NSUNST19WRVJTSU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdF
TlRfTUFKT1JfVkVSU0lPTiAoQFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT05AKQorI2Rl
ZmluZSBXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OIChAV0VCS0lUX1VTRVJfQUdFTlRf
TUlOT1JfVkVSU0lPTkApCiAKICNkZWZpbmUgV0VCS0lUX0NIRUNLX1ZFUlNJT04obWFqb3IsIG1p
bm9yLCBtaWNybykgXAogICAoV0VCS0lUX01BSk9SX1ZFUlNJT04gPiAobWFqb3IpIHx8IFwKZGlm
ZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcCBiL1dlYktp
dC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcAppbmRleCAyZjE4ODZjLi4yZTc0NDdh
IDEwMDY0NAotLS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKKysr
IGIvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuY3BwCkBAIC0zLDYgKzMsNyBA
QAogICogQ29weXJpZ2h0IChDKSAyMDA4IE51YW50aSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDggQ29sbGFib3JhIEx0ZC4KICAqIENvcHlyaWdodCAoQykgMjAwOCBIb2xnZXIgSGFucyBQZXRl
ciBGcmV5dGhlcgorICogQ29weXJpZ2h0IChDKSAyMDA5IEphbiBNaWNoYWVsIEFsb256bwogICoK
ICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBp
dCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5
IEdlbmVyYWwgUHVibGljCkBAIC0yMSwxMyArMjIsMjEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29u
ZmlnLmgiCi0KICNpbmNsdWRlICJ3ZWJraXR3ZWJzZXR0aW5ncy5oIgorCiAjaW5jbHVkZSAid2Vi
a2l0cHJpdmF0ZS5oIgorI2luY2x1ZGUgIndlYmtpdHZlcnNpb24uaCIKIAotI2luY2x1ZGUgPGds
aWIvZ2kxOG4tbGliLmg+CisjaW5jbHVkZSAiQ1N0cmluZy5oIgogI2luY2x1ZGUgIkZpbGVTeXN0
ZW0uaCIKICNpbmNsdWRlICJQbHVnaW5EYXRhYmFzZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgi
CisjaW5jbHVkZSAiUGxhdGZvcm1TdHJpbmcuaCIKKworI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGli
Lmg+CisjaWYgUExBVEZPUk0oVU5JWCkKKyNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorI2VuZGlm
CiAKIC8qKgogICogU0VDVElPTjp3ZWJraXR3ZWJzZXR0aW5ncwpAQCAtODEsNiArOTAsNyBAQCBz
dHJ1Y3QgX1dlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSB7CiAgICAgZ2Jvb2xlYW4gZW5hYmxlX2h0
bWw1X2RhdGFiYXNlOwogICAgIGdib29sZWFuIGVuYWJsZV9odG1sNV9sb2NhbF9zdG9yYWdlOwog
ICAgIGdib29sZWFuIGVuYWJsZV94c3NfYXVkaXRvcjsKKyAgICBnY2hhciogdXNlcl9hZ2VudDsK
IH07CiAKICNkZWZpbmUgV0VCS0lUX1dFQl9TRVRUSU5HU19HRVRfUFJJVkFURShvYmopIChHX1RZ
UEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUoKG9iaiksIFdFQktJVF9UWVBFX1dFQl9TRVRUSU5HUywg
V2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSkKQEAgLTExNSw5ICsxMjUsNjcgQEAgZW51bSB7CiAg
ICAgUFJPUF9FTkFCTEVfQ0FSRVRfQlJPV1NJTkcsCiAgICAgUFJPUF9FTkFCTEVfSFRNTDVfREFU
QUJBU0UsCiAgICAgUFJPUF9FTkFCTEVfSFRNTDVfTE9DQUxfU1RPUkFHRSwKLSAgICBQUk9QX0VO
QUJMRV9YU1NfQVVESVRPUgorICAgIFBST1BfRU5BQkxFX1hTU19BVURJVE9SLAorICAgIFBST1Bf
VVNFUl9BR0VOVAogfTsKIAorLy8gQ3JlYXRlIGEgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZwor
Ly8gVGhpcyBpcyBhIGxpYmVyYWwgaW50ZXJwcmV0YXRpb24gb2YgaHR0cDovL3d3dy5tb3ppbGxh
Lm9yZy9idWlsZC9yZXZpc2VkLXVzZXItYWdlbnQtc3RyaW5ncy5odG1sCisvLyBTZWUgYWxzbyBo
dHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9pbnRlcm5ldC9zYWZhcmkvZmFxLmh0bWwjYW5jaG9y
Mgorc3RhdGljIFN0cmluZyB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQoKQoreworICAgIGdjaGFyKiBw
bGF0Zm9ybTsKKyAgICBnY2hhciogb3NWZXJzaW9uOworCisjaWYgUExBVEZPUk0oWDExKQorICAg
IHBsYXRmb3JtID0gZ19zdHJkdXAoIlgxMSIpOworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAg
IHBsYXRmb3JtID0gZ19zdHJkdXAoIldpbmRvd3MiKTsKKyNlbGlmIFBMQVRGT1JNKE1BQykKKyAg
ICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJNYWNpbnRvc2giKTsKKyNlbGlmIGRlZmluZWQoR0RLX1dJ
TkRPV0lOR19ESVJFQ1RGQikKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJEaXJlY3RGQiIpOwor
I2Vsc2UKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJVbmtub3duIik7CisjZW5kaWYKKworICAg
Ly8gRklYTUU6IHBsYXRmb3JtL3ZlcnNpb24gZGV0ZWN0aW9uIGNhbiBiZSBzaGFyZWQuCisjaWYg
UExBVEZPUk0oREFSV0lOKQorCisjaWYgUExBVEZPUk0oWDg2KQorICAgIG9zVmVyc2lvbiA9IGdf
c3RyZHVwKCJJbnRlbCBNYWMgT1MgWCIpOworI2Vsc2UKKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1
cCgiUFBDIE1hYyBPUyBYIik7CisjZW5kaWYKKworI2VsaWYgUExBVEZPUk0oVU5JWCkKKyAgICBz
dHJ1Y3QgdXRzbmFtZSBuYW1lOworICAgIGlmICh1bmFtZSgmbmFtZSkgIT0gLTEpCisgICAgICAg
IG9zVmVyc2lvbiA9IGdfc3RyZHVwX3ByaW50ZigiJXMgJXMiLCBuYW1lLnN5c25hbWUsIG5hbWUu
bWFjaGluZSk7CisgICAgZWxzZQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiVW5rbm93
biIpOworCisjZWxpZiBQTEFURk9STShXSU5fT1MpCisgICAgLy8gRklYTUU6IENvbXB1dGUgdGhl
IFdpbmRvd3MgdmVyc2lvbgorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CisK
KyNlbHNlCisgICAgb3NWZXJzaW9uID0gZ19zdHJkdXAoIlVua25vd24iKTsKKyNlbmRpZgorCisg
ICAgLy8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0ZXMgY2hlY2sgZm9y
IGl0IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCisgICAgLy8gV2UgcmUtdXNlIHRoZSBXZWJLaXQg
dmVyc2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVjaCBpbiBwcmFjdGlj
ZQorCisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHVhVmVyc2lvbiwgKFN0
cmluZzo6Zm9ybWF0KCIlZC4lZCsiLCBXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJTSU9OLCBX
RUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKSkpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBzdGF0aWNVQSwgKFN0cmluZzo6Zm9ybWF0KCJNb3ppbGxhLzUuMCAo
JXM7IFU7ICVzOyAlcykgQXBwbGVXZWJLaXQvJXMgKEtIVE1MLCBsaWtlIEdlY2tvKSBTYWZhcmkv
JXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHBsYXRmb3JtLCBvc1ZlcnNpb24sIGRlZmF1bHRMYW5ndWFnZSgpLnV0Zjgo
KS5kYXRhKCksIHVhVmVyc2lvbi51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEo
KSkpKTsKKworICAgIGdfZnJlZShvc1ZlcnNpb24pOworICAgIGdfZnJlZShwbGF0Zm9ybSk7CisK
KyAgICByZXR1cm4gc3RhdGljVUE7Cit9CisKIHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGlu
Z3NfZmluYWxpemUoR09iamVjdCogb2JqZWN0KTsKIAogc3RhdGljIHZvaWQgd2Via2l0X3dlYl9z
ZXR0aW5nc19zZXRfcHJvcGVydHkoR09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb25z
dCBHVmFsdWUqIHZhbHVlLCBHUGFyYW1TcGVjKiBwc3BlYyk7CkBAIC00NzQsNiArNTQyLDI1IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdChXZWJLaXRXZWJTZXR0
aW5nc0NsYXNzKiBrbGFzcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIEZBTFNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpKTsKIAorICAgIC8qKgorICAgICAqIFdl
YktpdFdlYlNldHRpbmdzOnVzZXItYWdlbnQ6CisgICAgICoKKyAgICAgKiBUaGUgVXNlci1BZ2Vu
dCBzdHJpbmcgdXNlZCBieSBXZWJLaXRHdGsuCisgICAgICoKKyAgICAgKiBUaGlzIHdpbGwgcmV0
dXJuIGEgZGVmYXVsdCBVc2VyLUFnZW50IHN0cmluZyBpZiBhIGN1c3RvbSBzdHJpbmcgd2Fzbid0
CisgICAgICogcHJvdmlkZWQgYnkgdGhlIGFwcGxpY2F0aW9uLiBTZXR0aW5nIHRoaXMgcHJvcGVy
dHkgdG8gYSBOVUxMIHZhbHVlIG9yCisgICAgICogYW4gZW1wdHkgc3RyaW5nIHdpbGwgcmVzdWx0
IGluIHRoZSBVc2VyLUFnZW50IHN0cmluZyBiZWluZyByZXNldCB0byB0aGUKKyAgICAgKiBkZWZh
dWx0IHZhbHVlLgorICAgICAqCisgICAgICogU2luY2U6IDEuMS4xMQorICAgICAqLworICAgIGdf
b2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkoZ29iamVjdF9jbGFzcywgUFJPUF9VU0VSX0FH
RU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3N0
cmluZygidXNlci1hZ2VudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIF8oIlVzZXIgQWdlbnQiKSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVGhlIFVzZXItQWdlbnQgc3Ry
aW5nIHVzZWQgYnkgV2ViS2l0R3RrIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHdlYmtpdF9nZXRfdXNlcl9hZ2VudCgpLnV0ZjgoKS5k
YXRhKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZsYWdzKSk7CisKICAgICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUoa2xhc3MsIHNp
emVvZihXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUpKTsKIH0KIApAQCAtNTEyLDYgKzU5OSw4IEBA
IHN0YXRpYyB2b2lkIHdlYmtpdF93ZWJfc2V0dGluZ3NfZmluYWxpemUoR09iamVjdCogb2JqZWN0
KQogICAgIGdfc2xpc3RfZm9yZWFjaChwcml2LT5zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfbGlz
dCwgZnJlZV9zcGVsbF9jaGVja2luZ19sYW5ndWFnZSwgTlVMTCk7CiAgICAgZ19zbGlzdF9mcmVl
KHByaXYtPnNwZWxsX2NoZWNraW5nX2xhbmd1YWdlc19saXN0KTsKIAorICAgIGdfZnJlZShwcml2
LT51c2VyX2FnZW50KTsKKwogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfc2V0dGluZ3Nf
cGFyZW50X2NsYXNzKS0+ZmluYWxpemUob2JqZWN0KTsKIH0KIApAQCAtNjM5LDYgKzcyOCwxMyBA
QCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX3NldF9wcm9wZXJ0eShHT2JqZWN0KiBv
YmplY3QsIGd1aW50IHByb3BfaWQsIGNvbgogICAgIGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElU
T1I6CiAgICAgICAgIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvciA9IGdfdmFsdWVfZ2V0X2Jvb2xl
YW4odmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAg
ICAgICAgZ19mcmVlKHByaXYtPnVzZXJfYWdlbnQpOworICAgICAgICBpZiAoIWdfdmFsdWVfZ2V0
X3N0cmluZyh2YWx1ZSkpCisgICAgICAgICAgICBwcml2LT51c2VyX2FnZW50ID0gZ19zdHJkdXAo
d2Via2l0X2dldF91c2VyX2FnZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHByaXYtPnVzZXJfYWdlbnQgPSBnX3N0cmR1cChnX3ZhbHVlX2dldF9zdHJpbmco
dmFsdWUpKTsKKyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1Rf
V0FSTl9JTlZBTElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAg
ICBicmVhazsKQEAgLTczNSw2ICs4MzEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRp
bmdzX2dldF9wcm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAg
IGNhc2UgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xl
YW4odmFsdWUsIHByaXYtPmVuYWJsZV94c3NfYXVkaXRvcik7CiAgICAgICAgIGJyZWFrOworICAg
IGNhc2UgUFJPUF9VU0VSX0FHRU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUs
IHByaXYtPnVzZXJfYWdlbnQpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAg
ICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3Bl
Yyk7CiAgICAgICAgIGJyZWFrOwpAQCAtNzk0LDYgKzg5Myw3IEBAIFdlYktpdFdlYlNldHRpbmdz
KiB3ZWJraXRfd2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5n
cykKICAgICAgICAgICAgICAgICAgImVuYWJsZS1odG1sNS1kYXRhYmFzZSIsIHByaXYtPmVuYWJs
ZV9odG1sNV9kYXRhYmFzZSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1odG1sNS1sb2NhbC1z
dG9yYWdlIiwgcHJpdi0+ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UsCiAgICAgICAgICAgICAg
ICAgICJlbmFibGUteHNzLWF1ZGl0b3IiLCBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IsCisgICAg
ICAgICAgICAgICAgICJ1c2VyLWFnZW50Iiwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9h
Z2VudCh3ZWJfc2V0dGluZ3MpLAogICAgICAgICAgICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1
cm4gY29weTsKQEAgLTgzNCwzICs5MzQsMjEgQEAgR1NMaXN0KiB3ZWJraXRfd2ViX3NldHRpbmdz
X2dldF9zcGVsbF9sYW5ndWFnZXMoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpCiAKICAgICByZXR1
cm4gbGlzdDsKIH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2VyX2FnZW50
OgorICogQHdlYl9zZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5z
IHRoZSBVc2VyLUFnZW50IHN0cmluZyBjdXJyZW50bHkgdXNlZCBieSB0aGUgd2ViIHZpZXcocykg
YXNzb2NpYXRlZAorICogd2l0aCB0aGUgQHdlYl9zZXR0aW5ncy4KKyAqCisgKiBTaW5jZTogMS4x
LjExCisgKi8KK0dfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91
c2VyX2FnZW50KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykKK3sKKyAgICBnX3JldHVy
bl92YWxfaWZfZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRpbmdzKSwgTlVMTCk7
CisKKyAgICBXZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJp
djsKKworICAgIHJldHVybiBwcml2LT51c2VyX2FnZW50OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnNldHRpbmdzLmgKaW5kZXggNWQyNWZlZS4uOWVhYzMyMSAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGluZ3MuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJzZXR0aW5ncy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAwOCBDaHJpc3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdo
dCAoQykgMjAwOSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQogICoKICAq
IFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBh
bmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdl
bmVyYWwgUHVibGljCkBAIC01MywxMyArNTQsMTYgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5n
c0NsYXNzIHsKIH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0
X3R5cGUgKHZvaWQpOword2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSAgICAgICAgICAodm9p
ZCk7CiAKIFdFQktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgotd2Via2l0X3dlYl9zZXR0aW5n
c19uZXcgICAgICAodm9pZCk7Cit3ZWJraXRfd2ViX3NldHRpbmdzX25ldyAgICAgICAgICAgICAg
ICh2b2lkKTsKIAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0aW5ncyAqCi13ZWJraXRfd2ViX3Nl
dHRpbmdzX2NvcHkgICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRpbmdzKTsKK3dlYmtp
dF93ZWJfc2V0dGluZ3NfY29weSAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJf
c2V0dGluZ3MpOworCitXRUJLSVRfQVBJIEdfQ09OU1RfUkVUVVJOIGdjaGFyICoKK3dlYmtpdF93
ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQgICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJfc2V0
dGluZ3MpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93
ZWJraXR3ZWJ2aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmlu
ZGV4IDViMTk4NTYuLmJmNDYxYzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtp
dHdlYnZpZXcuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBA
IC05MzIsOSArOTMyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UoR09i
amVjdCogb2JqZWN0KQogCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0
ZV90YXJnZXRfbGlzdCk7CiAgICAgICAgIHByaXYtPnBhc3RlX3RhcmdldF9saXN0ID0gTlVMTDsK
LQotICAgICAgICBkZWxldGUgcHJpdi0+dXNlckFnZW50OwotICAgICAgICBwcml2LT51c2VyQWdl
bnQgPSBOVUxMOwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19w
YXJlbnRfY2xhc3MpLT5kaXNwb3NlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMg
Yi9jb25maWd1cmUuYWMKaW5kZXggYjcyMGE0My4uY2E3YzIyZiAxMDA2NDQKLS0tIGEvY29uZmln
dXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtNCw2ICs0LDEzIEBAIG00X2RlZmluZShbd2Vi
a2l0X21ham9yX3ZlcnNpb25dLCBbMV0pCiBtNF9kZWZpbmUoW3dlYmtpdF9taW5vcl92ZXJzaW9u
XSwgWzFdKQogbTRfZGVmaW5lKFt3ZWJraXRfbWljcm9fdmVyc2lvbl0sIFsxMF0pCiAKKyMgVGhp
cyBpcyB0aGUgdmVyc2lvbiB3ZSdsbCBiZSB1c2luZyBhcyBwYXJ0IG9mIG91ciBVc2VyLUFnZW50
IHN0cmluZworIyBlLmcuLCBBcHBsZVdlYktpdC8kKHdlYmtpdF91c2VyX2FnZW50X3ZlcnNpb24p
IC4uLgorIworIyBTb3VyY2VkIGZyb20gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhj
Y29uZmlnCittNF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21ham9yX3ZlcnNpb25dLCBbNTMx
XSkKK200X2RlZmluZShbd2Via2l0X3VzZXJfYWdlbnRfbWlub3JfdmVyc2lvbl0sIFswXSkKKwog
QUNfSU5JVChbV2ViS2l0XSxbd2Via2l0X21ham9yX3ZlcnNpb24ud2Via2l0X21pbm9yX3ZlcnNp
b24ud2Via2l0X21pY3JvX3ZlcnNpb25dLFtodHRwOi8vYnVncy53ZWJraXQub3JnL10pCiAKIEFD
X0NPTkZJR19NQUNST19ESVIoW2F1dG90b29sc10pCkBAIC0xNiw5ICsyMywxMyBAQCBBQ19DQU5P
TklDQUxfSE9TVAogV0VCS0lUX01BSk9SX1ZFUlNJT049d2Via2l0X21ham9yX3ZlcnNpb24KIFdF
QktJVF9NSU5PUl9WRVJTSU9OPXdlYmtpdF9taW5vcl92ZXJzaW9uCiBXRUJLSVRfTUlDUk9fVkVS
U0lPTj13ZWJraXRfbWljcm9fdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lP
Tj13ZWJraXRfdXNlcl9hZ2VudF9tYWpvcl92ZXJzaW9uCitXRUJLSVRfVVNFUl9BR0VOVF9NSU5P
Ul9WRVJTSU9OPXdlYmtpdF91c2VyX2FnZW50X21pbm9yX3ZlcnNpb24KIEFDX1NVQlNUKFdFQktJ
VF9NQUpPUl9WRVJTSU9OKQogQUNfU1VCU1QoV0VCS0lUX01JTk9SX1ZFUlNJT04pCiBBQ19TVUJT
VChXRUJLSVRfTUlDUk9fVkVSU0lPTikKK0FDX1NVQlNUKFdFQktJVF9VU0VSX0FHRU5UX01BSk9S
X1ZFUlNJT04pCitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKQogCiBB
Q19DT05GSUdfU1JDRElSKFtXZWJDb3JlL2NvbmZpZy5oXSk=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>32063</attachid>
            <date>2009-06-30 06:36:08 -0700</date>
            <delta_ts>2009-06-30 22:52:45 -0700</delta_ts>
            <desc>proper fix to the test + version bump to 531.2</desc>
            <filename>bugzilla_requires_a_filename.patch</filename>
            <type>text/plain</type>
            <size>20546</size>
            <attacher name="Jan Alonzo">jmalonzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBmMmNjOWEyLi5jZGI3YjNk
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgU2V0IHVzZXIt
YWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBEZWZpbmUgVUEgdmVyc2lvbiBtYWNyb3Mg
dG8gYmUgdXNlZCBieSB0aGUgVUEgc3RyaW5nLgorICAgICAgICBBZGQgbmV3IFdlYlNldHRpbmdz
IHVuaXQgdGVzdCBmb3IgdGhlIFVzZXItQWdlbnQgc3RyaW5nIEFQSS4KKworICAgICAgICAqIEdO
VW1ha2VmaWxlLmFtOgorICAgICAgICAqIGNvbmZpZ3VyZS5hYzoKKwogMjAwOS0wNi0yMCAgR3Vz
dGF2byBOb3JvbmhhIFNpbHZhICA8Z25zQGdub21lLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBKYW4gQWxvbnpvLgpkaWZmIC0tZ2l0IGEvR05VbWFrZWZpbGUuYW0gYi9HTlVtYWtlZmlsZS5h
bQppbmRleCBkMmIyYzcxLi5jODBkNjQ5IDEwMDY0NAotLS0gYS9HTlVtYWtlZmlsZS5hbQorKysg
Yi9HTlVtYWtlZmlsZS5hbQpAQCAtNTMyLDcgKzUzMiw4IEBAIFRFU1RfUFJPR1MgKz0gUHJvZ3Jh
bXMvdW5pdHRlc3RzL3Rlc3RodHRwYmFja2VuZCBcCiAJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3R3
ZWJiYWNrZm9yd2FyZGxpc3QgXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0d2ViaGlzdG9yeWl0
ZW0gXAogCVByb2dyYW1zL3VuaXR0ZXN0cy90ZXN0ZG93bmxvYWQgXAotCVByb2dyYW1zL3VuaXR0
ZXN0cy90ZXN0YXRrCisJUHJvZ3JhbXMvdW5pdHRlc3RzL3Rlc3RhdGsgXAorCVByb2dyYW1zL3Vu
aXR0ZXN0cy90ZXN0d2Vic2V0dGluZ3MKIAogIyBBZGQgYWRkaXRpb25hbCB0ZXN0cyBoZXJlCiBQ
cm9ncmFtc191bml0dGVzdHNfdGVzdGh0dHBiYWNrZW5kX1NPVVJDRVMgPSBXZWJLaXQvZ3RrL3Rl
c3RzL3Rlc3RodHRwYmFja2VuZC5jCkBAIC01NzUsNiArNTc2LDExIEBAIFByb2dyYW1zX3VuaXR0
ZXN0c190ZXN0YXRrX0NGTEFHUyA9ICQod2Via2l0X3Rlc3RzX2NmbGFncykKIFByb2dyYW1zX3Vu
aXR0ZXN0c190ZXN0YXRrX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCiBQcm9ncmFtc191
bml0dGVzdHNfdGVzdGF0a19MREZMQUdTID0gJCh3ZWJraXRfdGVzdHNfbGRmbGFncykKIAorUHJv
Z3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19TT1VSQ0VTID0gV2ViS2l0L2d0ay90ZXN0
cy90ZXN0d2Vic2V0dGluZ3MuYworUHJvZ3JhbXNfdW5pdHRlc3RzX3Rlc3R3ZWJzZXR0aW5nc19D
RkxBR1MgPSAkKHdlYmtpdF90ZXN0c19jZmxhZ3MpCitQcm9ncmFtc191bml0dGVzdHNfdGVzdHdl
YnNldHRpbmdzX0xEQUREID0gJCh3ZWJraXRfdGVzdHNfbGRhZGQpCitQcm9ncmFtc191bml0dGVz
dHNfdGVzdHdlYnNldHRpbmdzX0xERkxBR1MgPSAkKHdlYmtpdF90ZXN0c19sZGZsYWdzKQorCiAj
IEF1dG9nZW5lcmF0ZWQgc291cmNlcwogQlVJTFRfU09VUkNFUyA6PSBcCiAJJChqYXZhc2NyaXB0
Y29yZV9idWlsdF9zb3VyY2VzKSBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBi
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCmluZGV4IGZkNDNlZDYuLmJlNzM2ODkgMTAwNjQ0Ci0tLSBh
L1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzAgQEAKKzIwMDktMDYtMzAgIEphbiBNaWNoYWVsIEFsb256byAgPGptYWxvbnpvQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
U2V0IHVzZXItYWdlbnQgZnJvbSBhcHBsaWNhdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTczNzUKKworICAgICAgICBBZGQgJ3VzZXItYWdlbnQn
IHNldHRlci9nZXR0ZXIgQVBJIHRvIFdlYlNldHRpbmdzLgorCisgICAgICAgICogV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6RnJhbWVMb2FkZXJDbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpGcmFtZUxv
YWRlckNsaWVudDo6dXNlckFnZW50KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxv
YWRlckNsaWVudEd0ay5oOgorICAgICAgICAqIHdlYmtpdC93ZWJraXRwcml2YXRlLmg6CisgICAg
ICAgICogd2Via2l0L3dlYmtpdHZlcnNpb24uaC5pbjoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0
d2Vic2V0dGluZ3MuY3BwOgorICAgICAgICAod2Via2l0X2dldF91c2VyX2FnZW50KToKKyAgICAg
ICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY2xhc3NfaW5pdCk6CisgICAgICAgICh3ZWJraXRfd2Vi
X3NldHRpbmdzX2ZpbmFsaXplKToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3By
b3BlcnR5KToKKyAgICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3Byb3BlcnR5KToKKyAg
ICAgICAgKHdlYmtpdF93ZWJfc2V0dGluZ3NfY29weSk6CisgICAgICAgICh3ZWJraXRfd2ViX3Nl
dHRpbmdzX2dldF91c2VyX2FnZW50KToKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuaDoKKyAgICAgICAgKiB3ZWJraXQvd2Via2l0d2Vidmlldy5jcHA6CisgICAgICAgICh3ZWJr
aXRfd2ViX3ZpZXdfZGlzcG9zZSk6CisKIDIwMDktMDYtMjkgIFhhbiBMb3BleiAgPHhsb3BlekBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEphbiBBbG9uem8uCmRpZmYgLS1naXQg
YS9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50R3RrLmNwcCBiL1dl
YktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRHdGsuY3BwCmluZGV4IGYw
Nzc2ZjkuLmVjMTU3NjIgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCisrKyBiL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRHdGsuY3BwCkBAIC02NCw5ICs2NCw2IEBACiAjaW5jbHVkZSA8Z2xpYi5o
PgogI2luY2x1ZGUgPGdsaWIvZ2kxOG4tbGliLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KLSNpZiBQ
TEFURk9STShVTklYKQotI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+Ci0jZW5kaWYKIAogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CiAKQEAgLTc0LDcgKzcxLDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIEZyYW1lTG9hZGVyQ2xpZW50OjpGcmFtZUxvYWRlckNsaWVudChXZWJLaXRXZWJGcmFtZSog
ZnJhbWUpCiAgICAgOiBtX2ZyYW1lKGZyYW1lKQotICAgICwgbV91c2VyQWdlbnQoIiIpCiAgICAg
LCBtX3BvbGljeURlY2lzaW9uKDApCiAgICAgLCBtX3BsdWdpblZpZXcoMCkKICAgICAsIG1faGFz
U2VudFJlc3BvbnNlVG9QbHVnaW4oZmFsc2UpCkBAIC04OCw4NiArODQsMTAgQEAgRnJhbWVMb2Fk
ZXJDbGllbnQ6On5GcmFtZUxvYWRlckNsaWVudCgpCiAgICAgICAgIGdfb2JqZWN0X3VucmVmKG1f
cG9saWN5RGVjaXNpb24pOwogfQogCi1zdGF0aWMgU3RyaW5nIGFnZW50UGxhdGZvcm0oKQotewot
I2lmZGVmIEdES19XSU5ET1dJTkdfWDExCi0gICAgcmV0dXJuICJYMTEiOwotI2VsaWYgZGVmaW5l
ZChHREtfV0lORE9XSU5HX1dJTjMyKQotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfUVVBUlRaKQotICAgIHJldHVybiAiTWFjaW50b3NoIjsKLSNlbGlm
IGRlZmluZWQoR0RLX1dJTkRPV0lOR19ESVJFQ1RGQikKLSAgICByZXR1cm4gIkRpcmVjdEZCIjsK
LSNlbHNlCi0gICAgbm90SW1wbGVtZW50ZWQoKTsKLSAgICByZXR1cm4gIlVua25vd24iOwotI2Vu
ZGlmCi19Ci0KLXN0YXRpYyBTdHJpbmcgYWdlbnRPUygpCi17Ci0jaWYgUExBVEZPUk0oREFSV0lO
KQotI2lmIFBMQVRGT1JNKFg4NikKLSAgICByZXR1cm4gIkludGVsIE1hYyBPUyBYIjsKLSNlbHNl
Ci0gICAgcmV0dXJuICJQUEMgTWFjIE9TIFgiOwotI2VuZGlmCi0jZWxpZiBQTEFURk9STShVTklY
KQotICAgIHN0cnVjdCB1dHNuYW1lIG5hbWU7Ci0gICAgaWYgKHVuYW1lKCZuYW1lKSAhPSAtMSkK
LSAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlcyAlcyIsIG5hbWUuc3lzbmFtZSwgbmFt
ZS5tYWNoaW5lKTsKLSAgICBlbHNlCi0gICAgICAgIHJldHVybiAiVW5rbm93biI7Ci0jZWxpZiBQ
TEFURk9STShXSU5fT1MpCi0gICAgLy8gRklYTUU6IENvbXB1dGUgdGhlIFdpbmRvd3MgdmVyc2lv
bgotICAgIHJldHVybiAiV2luZG93cyI7Ci0jZWxzZQotICAgIG5vdEltcGxlbWVudGVkKCk7Ci0g
ICAgcmV0dXJuICJVbmtub3duIjsKLSNlbmRpZgotfQotCi1zdGF0aWMgU3RyaW5nIGNvbXBvc2VV
c2VyQWdlbnQoKQotewotICAgIC8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9m
IGh0dHA6Ly93d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3Mu
aHRtbAotICAgIC8vIFNlZSBhbHNvIGh0dHA6Ly9kZXZlbG9wZXIuYXBwbGUuY29tL2ludGVybmV0
L3NhZmFyaS9mYXEuaHRtbCNhbmNob3IyCi0KLSAgICBTdHJpbmcgdWE7Ci0KLSAgICAvLyBQcm9k
dWN0Ci0gICAgdWEgKz0gIk1vemlsbGEvNS4wIjsKLQotICAgIC8vIENvbW1lbnQKLSAgICB1YSAr
PSAiICgiOwotICAgIHVhICs9IGFnZW50UGxhdGZvcm0oKTsgLy8gUGxhdGZvcm0KLSAgICB1YSAr
PSAiOyBVOyAiOyAvLyBTZWN1cml0eQotICAgIHVhICs9IGFnZW50T1MoKTsgLy8gT1Mtb3ItQ1BV
Ci0gICAgdWEgKz0gIjsgIjsKLSAgICB1YSArPSBkZWZhdWx0TGFuZ3VhZ2UoKTsgLy8gTG9jYWxp
emF0aW9uIGluZm9ybWF0aW9uCi0gICAgdWEgKz0gIikgIjsKLQotICAgIC8vIFdlYktpdCBQcm9k
dWN0Ci0gICAgLy8gRklYTUU6IFRoZSBXZWJLaXQgdmVyc2lvbiBpcyBoYXJkY29kZWQKLSAgICBz
dGF0aWMgY29uc3QgU3RyaW5nIHdlYktpdFZlcnNpb24gPSAiNTI4LjUrIjsKLSAgICB1YSArPSAi
QXBwbGVXZWJLaXQvIiArIHdlYktpdFZlcnNpb247Ci0gICAgdWEgKz0gIiAoS0hUTUwsIGxpa2Ug
R2Vja28sICI7Ci0gICAgLy8gV2UgbWVudGlvbiBTYWZhcmkgc2luY2UgbWFueSBicm9rZW4gc2l0
ZXMgY2hlY2sgZm9yIGl0IChPbW5pV2ViIGRvZXMgdGhpcyB0b28pCi0gICAgLy8gV2UgcmUtdXNl
IHRoZSBXZWJLaXQgdmVyc2lvbiwgdGhvdWdoIGl0IGRvZXNuJ3Qgc2VlbSB0byBtYXR0ZXIgbXVj
aCBpbiBwcmFjdGljZQotICAgIHVhICs9ICJTYWZhcmkvIiArIHdlYktpdFZlcnNpb247Ci0gICAg
dWEgKz0gIikgIjsKLQotICAgIC8vIFZlbmRvciBQcm9kdWN0Ci0gICAgdWEgKz0gZ19nZXRfcHJn
bmFtZSgpOwotCi0gICAgcmV0dXJuIHVhOwotfQotCiBTdHJpbmcgRnJhbWVMb2FkZXJDbGllbnQ6
OnVzZXJBZ2VudChjb25zdCBLVVJMJikKIHsKLSAgICBpZiAobV91c2VyQWdlbnQuaXNFbXB0eSgp
KQotICAgICAgICBtX3VzZXJBZ2VudCA9IGNvbXBvc2VVc2VyQWdlbnQoKTsKLQotICAgIHJldHVy
biBtX3VzZXJBZ2VudDsKKyAgICBXZWJLaXRXZWJTZXR0aW5ncyogc2V0dGluZ3MgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X3NldHRpbmdzKGdldFZpZXdGcm9tRnJhbWUobV9mcmFtZSkpOworICAgIHJl
dHVybiBTdHJpbmc6OmZyb21VVEY4KHdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3VzZXJfYWdlbnQo
c2V0dGluZ3MpKTsKIH0KIAogc3RhdGljIHZvaWQgbm90aWZ5U3RhdHVzKFdlYktpdFdlYkZyYW1l
KiBmcmFtZSwgV2ViS2l0TG9hZFN0YXR1cyBsb2FkU3RhdHVzKQpkaWZmIC0tZ2l0IGEvV2ViS2l0
L2d0ay9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oIGIvV2ViS2l0L2d0ay9X
ZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEd0ay5oCmluZGV4IGY4NWM2M2EuLmIwY2Vl
ZDYgMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGll
bnRHdGsuaAorKysgYi9XZWJLaXQvZ3RrL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
R3RrLmgKQEAgLTE3Myw3ICsxNzMsNiBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKICAgICBwcml2YXRl
OgogICAgICAgICBXZWJLaXRXZWJGcmFtZSogbV9mcmFtZTsKICAgICAgICAgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSBtX3Jlc3BvbnNlOwotICAgICAgICBXZWJDb3JlOjpTdHJpbmcgbV91c2Vy
QWdlbnQ7CiAgICAgICAgIFdlYktpdFdlYlBvbGljeURlY2lzaW9uKiBtX3BvbGljeURlY2lzaW9u
OwogCiAgICAgICAgIC8vIFBsdWdpbiB2aWV3IHRvIHJlZGlyZWN0IGRhdGEgdG8KZGlmZiAtLWdp
dCBhL1dlYktpdC9ndGsvdGVzdHMvdGVzdHdlYnNldHRpbmdzLmMgYi9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3R3ZWJzZXR0aW5ncy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1
N2U1N2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3R3ZWJzZXR0aW5n
cy5jCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgSmFuIE1pY2hh
ZWwgQWxvbnpvCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g
cmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5
IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAq
IFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg
dXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
IExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBh
bG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90
LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJh
bmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNB
LgorICovCisKKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2luY2x1
ZGUgPHdlYmtpdC93ZWJraXQuaD4KKworI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTigyLCAxNiwgMCkg
JiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTQsIDApCisKK3N0YXRpYyB2b2lkIHRlc3Rfd2Via2l0
X3dlYl9zZXR0aW5nc191c2VyX2FnZW50KHZvaWQpCit7CisgICAgV2ViS2l0V2ViU2V0dGluZ3Mq
IHNldHRpbmdzOworICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXc7CisgICAgZ2NoYXIqIGRlZmF1
bHRVc2VyQWdlbnQ7CisgICAgZ2NoYXIqIHVzZXJBZ2VudDsKKyAgICBnX3Rlc3RfYnVnKCIxNzM3
NSIpOworCisgICAgd2ViVmlldyA9IHdlYmtpdF93ZWJfdmlld19uZXcoKTsKKyAgICBnX29iamVj
dF9yZWZfc2luayh3ZWJWaWV3KTsKKworICAgIHNldHRpbmdzID0gd2Via2l0X3dlYl92aWV3X2dl
dF9zZXR0aW5ncyh3ZWJWaWV3KTsKKyAgICBkZWZhdWx0VXNlckFnZW50ID0gZ19zdHJkdXAod2Vi
a2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudChzZXR0aW5ncykpOworCisgICAgLy8gdGVz
dCBhIGN1c3RvbSBVQSBzdHJpbmcKKyAgICB1c2VyQWdlbnQgPSBOVUxMOworICAgIGdfb2JqZWN0
X3NldChHX09CSkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgInRlc3R3ZWJzZXR0aW5ncy8w
LjEiLCBOVUxMKTsKKyAgICBnX29iamVjdF9nZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCJ1c2VyLWFn
ZW50IiwgJnVzZXJBZ2VudCwgTlVMTCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHVzZXJBZ2VudCwg
PT0sICJ0ZXN0d2Vic2V0dGluZ3MvMC4xIik7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAg
ICAvLyBzZXR0aW5nIGl0IHRvIE5VTEwgb3IgYW4gZW1wdHkgdmFsdWUgc2hvdWxkIGdpdmUgdXMg
dGhlIGRlZmF1bHQgVUEgc3RyaW5nCisgICAgdXNlckFnZW50ID0gTlVMTDsKKyAgICBnX29iamVj
dF9zZXQoR19PQkpFQ1Qoc2V0dGluZ3MpLCAidXNlci1hZ2VudCIsIE5VTEwsIE5VTEwpOworICAg
IGdfb2JqZWN0X2dldChHX09CSkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAmdXNlckFnZW50
LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgZGVmYXVsdFVzZXJB
Z2VudCk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICB1c2VyQWdlbnQgPSBOVUxMOwor
ICAgIGdfb2JqZWN0X3NldChHX09CSkVDVChzZXR0aW5ncyksICJ1c2VyLWFnZW50IiwgIiIsIE5V
TEwpOworICAgIGdfb2JqZWN0X2dldChHX09CSkVDVChzZXR0aW5ncyksInVzZXItYWdlbnQiLCAm
dXNlckFnZW50LCBOVUxMKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodXNlckFnZW50LCA9PSwgZGVm
YXVsdFVzZXJBZ2VudCk7CisgICAgZ19mcmVlKHVzZXJBZ2VudCk7CisKKyAgICBnX2ZyZWUoZGVm
YXVsdFVzZXJBZ2VudCk7CisgICAgZ19vYmplY3RfdW5yZWYod2ViVmlldyk7Cit9CisKK2ludCBt
YWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBnX3RocmVhZF9pbml0KE5VTEwpOwor
ICAgIGd0a190ZXN0X2luaXQoJmFyZ2MsICZhcmd2LCBOVUxMKTsKKworICAgIGdfdGVzdF9idWdf
YmFzZSgiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIik7CisgICAgZ190ZXN0X2FkZF9mdW5jKCIv
d2Via2l0L3dlYnNldHRpbmdzL3VzZXJfYWdlbnQiLCB0ZXN0X3dlYmtpdF93ZWJfc2V0dGluZ3Nf
dXNlcl9hZ2VudCk7CisgICAgcmV0dXJuIGdfdGVzdF9ydW4gKCk7Cit9CisKKyNlbHNlCitpbnQg
bWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCit7CisgICAgZ19jcml0aWNhbCgiWW91IHdpbGwg
bmVlZCBhdCBsZWFzdCBnbGliLTIuMTYuMCBhbmQgZ3RrLTIuMTQuMCB0byBydW4gdGhlIHVuaXQg
dGVzdHMuIERvaW5nIG5vdGhpbmcgbm93LiIpOworICAgIHJldHVybiAwOworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaCBiL1dlYktpdC9n
dGsvd2Via2l0L3dlYmtpdHByaXZhdGUuaAppbmRleCAxM2ZjZDE2Li4xZDE4NDM0IDEwMDY0NAot
LS0gYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXRwcml2YXRlLmgKKysrIGIvV2ViS2l0L2d0ay93
ZWJraXQvd2Via2l0cHJpdmF0ZS5oCkBAIC05OCw5ICs5OCw2IEBAIGV4dGVybiAiQyIgewogICAg
ICAgICBXZWJLaXRXZWJXaW5kb3dGZWF0dXJlcyogd2ViV2luZG93RmVhdHVyZXM7CiAKICAgICAg
ICAgV2ViS2l0V2ViRnJhbWUqIG1haW5GcmFtZTsKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5nIGFw
cGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKLSAgICAgICAgV2ViQ29yZTo6U3RyaW5nKiB1c2Vy
QWdlbnQ7Ci0KICAgICAgICAgV2ViS2l0V2ViQmFja0ZvcndhcmRMaXN0KiBiYWNrRm9yd2FyZExp
c3Q7CiAKICAgICAgICAgZ2ludCBsYXN0UG9wdXBYUG9zaXRpb247CmRpZmYgLS1naXQgYS9XZWJL
aXQvZ3RrL3dlYmtpdC93ZWJraXR2ZXJzaW9uLmguaW4gYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJr
aXR2ZXJzaW9uLmguaW4KaW5kZXggZjcwODAwZC4uOWYxYjgxOCAxMDA2NDQKLS0tIGEvV2ViS2l0
L2d0ay93ZWJraXQvd2Via2l0dmVyc2lvbi5oLmluCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dl
YmtpdHZlcnNpb24uaC5pbgpAQCAtMjgsNiArMjgsOCBAQCBHX0JFR0lOX0RFQ0xTCiAjZGVmaW5l
IFdFQktJVF9NQUpPUl9WRVJTSU9OIChAV0VCS0lUX01BSk9SX1ZFUlNJT05AKQogI2RlZmluZSBX
RUJLSVRfTUlOT1JfVkVSU0lPTiAoQFdFQktJVF9NSU5PUl9WRVJTSU9OQCkKICNkZWZpbmUgV0VC
S0lUX01JQ1JPX1ZFUlNJT04gKEBXRUJLSVRfTUlDUk9fVkVSU0lPTkApCisjZGVmaW5lIFdFQktJ
VF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04gKEBXRUJLSVRfVVNFUl9BR0VOVF9NQUpPUl9WRVJT
SU9OQCkKKyNkZWZpbmUgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTiAoQFdFQktJVF9V
U0VSX0FHRU5UX01JTk9SX1ZFUlNJT05AKQogCiAjZGVmaW5lIFdFQktJVF9DSEVDS19WRVJTSU9O
KG1ham9yLCBtaW5vciwgbWljcm8pIFwKICAgKFdFQktJVF9NQUpPUl9WRVJTSU9OID4gKG1ham9y
KSB8fCBcCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5j
cHAgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJzZXR0aW5ncy5jcHAKaW5kZXggMmYxODg2
Yy4uZWIyYjlkNSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJraXQvd2Via2l0d2Vic2V0dGlu
Z3MuY3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRpbmdzLmNwcApAQCAt
Myw2ICszLDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IENvbGxhYm9yYSBMdGQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggSG9sZ2Vy
IEhhbnMgUGV0ZXIgRnJleXRoZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOSBKYW4gTWljaGFlbCBB
bG9uem8KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH
TlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsMTMgKzIyLDIxIEBACiAgKi8KIAogI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCiAjaW5jbHVkZSAid2Via2l0d2Vic2V0dGluZ3MuaCIKKwogI2lu
Y2x1ZGUgIndlYmtpdHByaXZhdGUuaCIKKyNpbmNsdWRlICJ3ZWJraXR2ZXJzaW9uLmgiCiAKLSNp
bmNsdWRlIDxnbGliL2dpMThuLWxpYi5oPgorI2luY2x1ZGUgIkNTdHJpbmcuaCIKICNpbmNsdWRl
ICJGaWxlU3lzdGVtLmgiCiAjaW5jbHVkZSAiUGx1Z2luRGF0YWJhc2UuaCIKKyNpbmNsdWRlICJM
YW5ndWFnZS5oIgorI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5nLmgiCisKKyNpbmNsdWRlIDxnbGli
L2dpMThuLWxpYi5oPgorI2lmIFBMQVRGT1JNKFVOSVgpCisjaW5jbHVkZSA8c3lzL3V0c25hbWUu
aD4KKyNlbmRpZgogCiAvKioKICAqIFNFQ1RJT046d2Via2l0d2Vic2V0dGluZ3MKQEAgLTgxLDYg
KzkwLDcgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUgewogICAgIGdib29sZWFu
IGVuYWJsZV9odG1sNV9kYXRhYmFzZTsKICAgICBnYm9vbGVhbiBlbmFibGVfaHRtbDVfbG9jYWxf
c3RvcmFnZTsKICAgICBnYm9vbGVhbiBlbmFibGVfeHNzX2F1ZGl0b3I7CisgICAgZ2NoYXIqIHVz
ZXJfYWdlbnQ7CiB9OwogCiAjZGVmaW5lIFdFQktJVF9XRUJfU0VUVElOR1NfR0VUX1BSSVZBVEUo
b2JqKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvYmopLCBXRUJLSVRfVFlQRV9XRUJf
U0VUVElOR1MsIFdlYktpdFdlYlNldHRpbmdzUHJpdmF0ZSkpCkBAIC0xMTUsOSArMTI1LDY3IEBA
IGVudW0gewogICAgIFBST1BfRU5BQkxFX0NBUkVUX0JST1dTSU5HLAogICAgIFBST1BfRU5BQkxF
X0hUTUw1X0RBVEFCQVNFLAogICAgIFBST1BfRU5BQkxFX0hUTUw1X0xPQ0FMX1NUT1JBR0UsCi0g
ICAgUFJPUF9FTkFCTEVfWFNTX0FVRElUT1IKKyAgICBQUk9QX0VOQUJMRV9YU1NfQVVESVRPUiwK
KyAgICBQUk9QX1VTRVJfQUdFTlQKIH07CiAKKy8vIENyZWF0ZSBhIGRlZmF1bHQgdXNlciBhZ2Vu
dCBzdHJpbmcKKy8vIFRoaXMgaXMgYSBsaWJlcmFsIGludGVycHJldGF0aW9uIG9mIGh0dHA6Ly93
d3cubW96aWxsYS5vcmcvYnVpbGQvcmV2aXNlZC11c2VyLWFnZW50LXN0cmluZ3MuaHRtbAorLy8g
U2VlIGFsc28gaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vaW50ZXJuZXQvc2FmYXJpL2ZhcS5o
dG1sI2FuY2hvcjIKK3N0YXRpYyBTdHJpbmcgd2Via2l0X2dldF91c2VyX2FnZW50KCkKK3sKKyAg
ICBnY2hhciogcGxhdGZvcm07CisgICAgZ2NoYXIqIG9zVmVyc2lvbjsKKworI2lmIFBMQVRGT1JN
KFgxMSkKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJYMTEiKTsKKyNlbGlmIFBMQVRGT1JNKFdJ
Tl9PUykKKyAgICBwbGF0Zm9ybSA9IGdfc3RyZHVwKCJXaW5kb3dzIik7CisjZWxpZiBQTEFURk9S
TShNQUMpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiTWFjaW50b3NoIik7CisjZWxpZiBkZWZp
bmVkKEdES19XSU5ET1dJTkdfRElSRUNURkIpCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiRGly
ZWN0RkIiKTsKKyNlbHNlCisgICAgcGxhdGZvcm0gPSBnX3N0cmR1cCgiVW5rbm93biIpOworI2Vu
ZGlmCisKKyAgIC8vIEZJWE1FOiBwbGF0Zm9ybS92ZXJzaW9uIGRldGVjdGlvbiBjYW4gYmUgc2hh
cmVkLgorI2lmIFBMQVRGT1JNKERBUldJTikKKworI2lmIFBMQVRGT1JNKFg4NikKKyAgICBvc1Zl
cnNpb24gPSBnX3N0cmR1cCgiSW50ZWwgTWFjIE9TIFgiKTsKKyNlbHNlCisgICAgb3NWZXJzaW9u
ID0gZ19zdHJkdXAoIlBQQyBNYWMgT1MgWCIpOworI2VuZGlmCisKKyNlbGlmIFBMQVRGT1JNKFVO
SVgpCisgICAgc3RydWN0IHV0c25hbWUgbmFtZTsKKyAgICBpZiAodW5hbWUoJm5hbWUpICE9IC0x
KQorICAgICAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cF9wcmludGYoIiVzICVzIiwgbmFtZS5zeXNu
YW1lLCBuYW1lLm1hY2hpbmUpOworICAgIGVsc2UKKyAgICAgICAgb3NWZXJzaW9uID0gZ19zdHJk
dXAoIlVua25vd24iKTsKKworI2VsaWYgUExBVEZPUk0oV0lOX09TKQorICAgIC8vIEZJWE1FOiBD
b21wdXRlIHRoZSBXaW5kb3dzIHZlcnNpb24KKyAgICBvc1ZlcnNpb24gPSBnX3N0cmR1cCgiV2lu
ZG93cyIpOworCisjZWxzZQorICAgIG9zVmVyc2lvbiA9IGdfc3RyZHVwKCJVbmtub3duIik7Cisj
ZW5kaWYKKworICAgIC8vIFdlIG1lbnRpb24gU2FmYXJpIHNpbmNlIG1hbnkgYnJva2VuIHNpdGVz
IGNoZWNrIGZvciBpdCAoT21uaVdlYiBkb2VzIHRoaXMgdG9vKQorICAgIC8vIFdlIHJlLXVzZSB0
aGUgV2ViS2l0IHZlcnNpb24sIHRob3VnaCBpdCBkb2Vzbid0IHNlZW0gdG8gbWF0dGVyIG11Y2gg
aW4gcHJhY3RpY2UKKworICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCB1YVZl
cnNpb24sIChTdHJpbmc6OmZvcm1hdCgiJWQuJWQrIiwgV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1Jf
VkVSU0lPTiwgV0VCS0lUX1VTRVJfQUdFTlRfTUlOT1JfVkVSU0lPTikpKTsKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3RhdGljVUEsIChTdHJpbmc6OmZvcm1hdCgiTW96
aWxsYS81LjAgKCVzOyBVOyAlczsgJXMpIEFwcGxlV2ViS2l0LyVzIChLSFRNTCwgbGlrZSBHZWNr
bykgU2FmYXJpLyVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBwbGF0Zm9ybSwgb3NWZXJzaW9uLCBkZWZhdWx0TGFuZ3Vh
Z2UoKS51dGY4KCkuZGF0YSgpLCB1YVZlcnNpb24udXRmOCgpLmRhdGEoKSwgdWFWZXJzaW9uLnV0
ZjgoKS5kYXRhKCkpKSk7CisKKyAgICBnX2ZyZWUob3NWZXJzaW9uKTsKKyAgICBnX2ZyZWUocGxh
dGZvcm0pOworCisgICAgcmV0dXJuIHN0YXRpY1VBOworfQorCiBzdGF0aWMgdm9pZCB3ZWJraXRf
d2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmplY3QqIG9iamVjdCk7CiAKIHN0YXRpYyB2b2lkIHdl
YmtpdF93ZWJfc2V0dGluZ3Nfc2V0X3Byb3BlcnR5KEdPYmplY3QqIG9iamVjdCwgZ3VpbnQgcHJv
cF9pZCwgY29uc3QgR1ZhbHVlKiB2YWx1ZSwgR1BhcmFtU3BlYyogcHNwZWMpOwpAQCAtNDc0LDYg
KzU0MiwyNSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2NsYXNzX2luaXQoV2Vi
S2l0V2ViU2V0dGluZ3NDbGFzcyoga2xhc3MpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKSk7CiAKKyAgICAvKioK
KyAgICAgKiBXZWJLaXRXZWJTZXR0aW5nczp1c2VyLWFnZW50OgorICAgICAqCisgICAgICogVGhl
IFVzZXItQWdlbnQgc3RyaW5nIHVzZWQgYnkgV2ViS2l0R3RrLgorICAgICAqCisgICAgICogVGhp
cyB3aWxsIHJldHVybiBhIGRlZmF1bHQgVXNlci1BZ2VudCBzdHJpbmcgaWYgYSBjdXN0b20gc3Ry
aW5nIHdhc24ndAorICAgICAqIHByb3ZpZGVkIGJ5IHRoZSBhcHBsaWNhdGlvbi4gU2V0dGluZyB0
aGlzIHByb3BlcnR5IHRvIGEgTlVMTCB2YWx1ZSBvcgorICAgICAqIGFuIGVtcHR5IHN0cmluZyB3
aWxsIHJlc3VsdCBpbiB0aGUgVXNlci1BZ2VudCBzdHJpbmcgYmVpbmcgcmVzZXQgdG8gdGhlCisg
ICAgICogZGVmYXVsdCB2YWx1ZS4KKyAgICAgKgorICAgICAqIFNpbmNlOiAxLjEuMTEKKyAgICAg
Ki8KKyAgICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5KGdvYmplY3RfY2xhc3MsIFBS
T1BfVVNFUl9BR0VOVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdfcGFy
YW1fc3BlY19zdHJpbmcoInVzZXItYWdlbnQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfKCJVc2VyIEFnZW50IiksCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlRoZSBVc2Vy
LUFnZW50IHN0cmluZyB1c2VkIGJ5IFdlYktpdEd0ayIpLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJraXRfZ2V0X3VzZXJfYWdlbnQo
KS51dGY4KCkuZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBmbGFncykpOworCiAgICAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRl
KGtsYXNzLCBzaXplb2YoV2ViS2l0V2ViU2V0dGluZ3NQcml2YXRlKSk7CiB9CiAKQEAgLTUxMiw2
ICs1OTksOCBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2ZpbmFsaXplKEdPYmpl
Y3QqIG9iamVjdCkKICAgICBnX3NsaXN0X2ZvcmVhY2gocHJpdi0+c3BlbGxfY2hlY2tpbmdfbGFu
Z3VhZ2VzX2xpc3QsIGZyZWVfc3BlbGxfY2hlY2tpbmdfbGFuZ3VhZ2UsIE5VTEwpOwogICAgIGdf
c2xpc3RfZnJlZShwcml2LT5zcGVsbF9jaGVja2luZ19sYW5ndWFnZXNfbGlzdCk7CiAKKyAgICBn
X2ZyZWUocHJpdi0+dXNlcl9hZ2VudCk7CisKICAgICBHX09CSkVDVF9DTEFTUyh3ZWJraXRfd2Vi
X3NldHRpbmdzX3BhcmVudF9jbGFzcyktPmZpbmFsaXplKG9iamVjdCk7CiB9CiAKQEAgLTYzOSw2
ICs3MjgsMTMgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl9zZXR0aW5nc19zZXRfcHJvcGVydHko
R09iamVjdCogb2JqZWN0LCBndWludCBwcm9wX2lkLCBjb24KICAgICBjYXNlIFBST1BfRU5BQkxF
X1hTU19BVURJVE9SOgogICAgICAgICBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IgPSBnX3ZhbHVl
X2dldF9ib29sZWFuKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1VTRVJf
QUdFTlQ6CisgICAgICAgIGdfZnJlZShwcml2LT51c2VyX2FnZW50KTsKKyAgICAgICAgaWYgKCFn
X3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpIHx8ICFzdHJsZW4oZ192YWx1ZV9nZXRfc3RyaW5nKHZh
bHVlKSkpCisgICAgICAgICAgICBwcml2LT51c2VyX2FnZW50ID0gZ19zdHJkdXAod2Via2l0X2dl
dF91c2VyX2FnZW50KCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IHByaXYtPnVzZXJfYWdlbnQgPSBnX3N0cmR1cChnX3ZhbHVlX2dldF9zdHJpbmcodmFsdWUpKTsK
KyAgICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgICAgR19PQkpFQ1RfV0FSTl9JTlZB
TElEX1BST1BFUlRZX0lEKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgICBicmVhazsK
QEAgLTczNSw2ICs4MzEsOSBAQCBzdGF0aWMgdm9pZCB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9w
cm9wZXJ0eShHT2JqZWN0KiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYQogICAgIGNhc2UgUFJP
UF9FTkFCTEVfWFNTX0FVRElUT1I6CiAgICAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4odmFsdWUs
IHByaXYtPmVuYWJsZV94c3NfYXVkaXRvcik7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJP
UF9VU0VSX0FHRU5UOgorICAgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcodmFsdWUsIHByaXYtPnVz
ZXJfYWdlbnQpOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICBHX09CSkVD
VF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAg
ICAgIGJyZWFrOwpAQCAtNzk0LDYgKzg5Myw3IEBAIFdlYktpdFdlYlNldHRpbmdzKiB3ZWJraXRf
d2ViX3NldHRpbmdzX2NvcHkoV2ViS2l0V2ViU2V0dGluZ3MqIHdlYl9zZXR0aW5ncykKICAgICAg
ICAgICAgICAgICAgImVuYWJsZS1odG1sNS1kYXRhYmFzZSIsIHByaXYtPmVuYWJsZV9odG1sNV9k
YXRhYmFzZSwKICAgICAgICAgICAgICAgICAgImVuYWJsZS1odG1sNS1sb2NhbC1zdG9yYWdlIiwg
cHJpdi0+ZW5hYmxlX2h0bWw1X2xvY2FsX3N0b3JhZ2UsCiAgICAgICAgICAgICAgICAgICJlbmFi
bGUteHNzLWF1ZGl0b3IiLCBwcml2LT5lbmFibGVfeHNzX2F1ZGl0b3IsCisgICAgICAgICAgICAg
ICAgICJ1c2VyLWFnZW50Iiwgd2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdXNlcl9hZ2VudCh3ZWJf
c2V0dGluZ3MpLAogICAgICAgICAgICAgICAgICBOVUxMKSk7CiAKICAgICByZXR1cm4gY29weTsK
QEAgLTgzNCwzICs5MzQsMjEgQEAgR1NMaXN0KiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF9zcGVs
bF9sYW5ndWFnZXMoV2ViS2l0V2ViVmlldyAqd2ViX3ZpZXcpCiAKICAgICByZXR1cm4gbGlzdDsK
IH0KKworLyoqCisgKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2VyX2FnZW50OgorICogQHdl
Yl9zZXR0aW5nczogYSAjV2ViS2l0V2ViU2V0dGluZ3MKKyAqCisgKiBSZXR1cm5zIHRoZSBVc2Vy
LUFnZW50IHN0cmluZyBjdXJyZW50bHkgdXNlZCBieSB0aGUgd2ViIHZpZXcocykgYXNzb2NpYXRl
ZAorICogd2l0aCB0aGUgQHdlYl9zZXR0aW5ncy4KKyAqCisgKiBTaW5jZTogMS4xLjExCisgKi8K
K0dfQ09OU1RfUkVUVVJOIGdjaGFyKiB3ZWJraXRfd2ViX3NldHRpbmdzX2dldF91c2VyX2FnZW50
KFdlYktpdFdlYlNldHRpbmdzKiB3ZWJTZXR0aW5ncykKK3sKKyAgICBnX3JldHVybl92YWxfaWZf
ZmFpbChXRUJLSVRfSVNfV0VCX1NFVFRJTkdTKHdlYlNldHRpbmdzKSwgTlVMTCk7CisKKyAgICBX
ZWJLaXRXZWJTZXR0aW5nc1ByaXZhdGUqIHByaXYgPSB3ZWJTZXR0aW5ncy0+cHJpdjsKKworICAg
IHJldHVybiBwcml2LT51c2VyX2FnZW50OworfQpkaWZmIC0tZ2l0IGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuaCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnNldHRp
bmdzLmgKaW5kZXggNWQyNWZlZS4uOWVhYzMyMSAxMDA2NDQKLS0tIGEvV2ViS2l0L2d0ay93ZWJr
aXQvd2Via2l0d2Vic2V0dGluZ3MuaAorKysgYi9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJz
ZXR0aW5ncy5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAwOCBDaHJp
c3RpYW4gRHl3YW4gPGNocmlzdGlhbkBpbWVuZGlvLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAw
OSBKYW4gTWljaGFlbCBBbG9uem8gPGptYWxvbnpvQGdtYWlsLmNvbQogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC01MywxMyArNTQsMTYgQEAgc3RydWN0IF9XZWJLaXRXZWJTZXR0aW5nc0NsYXNzIHsK
IH07CiAKIFdFQktJVF9BUEkgR1R5cGUKLXdlYmtpdF93ZWJfc2V0dGluZ3NfZ2V0X3R5cGUgKHZv
aWQpOword2Via2l0X3dlYl9zZXR0aW5nc19nZXRfdHlwZSAgICAgICAgICAodm9pZCk7CiAKIFdF
QktJVF9BUEkgV2ViS2l0V2ViU2V0dGluZ3MgKgotd2Via2l0X3dlYl9zZXR0aW5nc19uZXcgICAg
ICAodm9pZCk7Cit3ZWJraXRfd2ViX3NldHRpbmdzX25ldyAgICAgICAgICAgICAgICh2b2lkKTsK
IAogV0VCS0lUX0FQSSBXZWJLaXRXZWJTZXR0aW5ncyAqCi13ZWJraXRfd2ViX3NldHRpbmdzX2Nv
cHkgICAgIChXZWJLaXRXZWJTZXR0aW5ncyAqd2ViX3NldHRpbmdzKTsKK3dlYmtpdF93ZWJfc2V0
dGluZ3NfY29weSAgICAgICAgICAgICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJfc2V0dGluZ3Mp
OworCitXRUJLSVRfQVBJIEdfQ09OU1RfUkVUVVJOIGdjaGFyICoKK3dlYmtpdF93ZWJfc2V0dGlu
Z3NfZ2V0X3VzZXJfYWdlbnQgICAgKFdlYktpdFdlYlNldHRpbmdzICp3ZWJfc2V0dGluZ3MpOwog
CiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9XZWJLaXQvZ3RrL3dlYmtpdC93ZWJraXR3ZWJ2
aWV3LmNwcCBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCmluZGV4IDViMTk4
NTYuLmJmNDYxYzggMTAwNjQ0Ci0tLSBhL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcu
Y3BwCisrKyBiL1dlYktpdC9ndGsvd2Via2l0L3dlYmtpdHdlYnZpZXcuY3BwCkBAIC05MzIsOSAr
OTMyLDYgQEAgc3RhdGljIHZvaWQgd2Via2l0X3dlYl92aWV3X2Rpc3Bvc2UoR09iamVjdCogb2Jq
ZWN0KQogCiAgICAgICAgIGd0a190YXJnZXRfbGlzdF91bnJlZihwcml2LT5wYXN0ZV90YXJnZXRf
bGlzdCk7CiAgICAgICAgIHByaXYtPnBhc3RlX3RhcmdldF9saXN0ID0gTlVMTDsKLQotICAgICAg
ICBkZWxldGUgcHJpdi0+dXNlckFnZW50OwotICAgICAgICBwcml2LT51c2VyQWdlbnQgPSBOVUxM
OwogICAgIH0KIAogICAgIEdfT0JKRUNUX0NMQVNTKHdlYmtpdF93ZWJfdmlld19wYXJlbnRfY2xh
c3MpLT5kaXNwb3NlKG9iamVjdCk7CmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1
cmUuYWMKaW5kZXggYjcyMGE0My4uM2IyZWQ4NyAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisr
KyBiL2NvbmZpZ3VyZS5hYwpAQCAtNCw2ICs0LDEzIEBAIG00X2RlZmluZShbd2Via2l0X21ham9y
X3ZlcnNpb25dLCBbMV0pCiBtNF9kZWZpbmUoW3dlYmtpdF9taW5vcl92ZXJzaW9uXSwgWzFdKQog
bTRfZGVmaW5lKFt3ZWJraXRfbWljcm9fdmVyc2lvbl0sIFsxMF0pCiAKKyMgVGhpcyBpcyB0aGUg
dmVyc2lvbiB3ZSdsbCBiZSB1c2luZyBhcyBwYXJ0IG9mIG91ciBVc2VyLUFnZW50IHN0cmluZwor
IyBlLmcuLCBBcHBsZVdlYktpdC8kKHdlYmtpdF91c2VyX2FnZW50X3ZlcnNpb24pIC4uLgorIwor
IyBTb3VyY2VkIGZyb20gV2ViQ29yZS9Db25maWd1cmF0aW9ucy9WZXJzaW9uLnhjY29uZmlnCitt
NF9kZWZpbmUoW3dlYmtpdF91c2VyX2FnZW50X21ham9yX3ZlcnNpb25dLCBbNTMxXSkKK200X2Rl
ZmluZShbd2Via2l0X3VzZXJfYWdlbnRfbWlub3JfdmVyc2lvbl0sIFsyXSkKKwogQUNfSU5JVChb
V2ViS2l0XSxbd2Via2l0X21ham9yX3ZlcnNpb24ud2Via2l0X21pbm9yX3ZlcnNpb24ud2Via2l0
X21pY3JvX3ZlcnNpb25dLFtodHRwOi8vYnVncy53ZWJraXQub3JnL10pCiAKIEFDX0NPTkZJR19N
QUNST19ESVIoW2F1dG90b29sc10pCkBAIC0xNiw5ICsyMywxMyBAQCBBQ19DQU5PTklDQUxfSE9T
VAogV0VCS0lUX01BSk9SX1ZFUlNJT049d2Via2l0X21ham9yX3ZlcnNpb24KIFdFQktJVF9NSU5P
Ul9WRVJTSU9OPXdlYmtpdF9taW5vcl92ZXJzaW9uCiBXRUJLSVRfTUlDUk9fVkVSU0lPTj13ZWJr
aXRfbWljcm9fdmVyc2lvbgorV0VCS0lUX1VTRVJfQUdFTlRfTUFKT1JfVkVSU0lPTj13ZWJraXRf
dXNlcl9hZ2VudF9tYWpvcl92ZXJzaW9uCitXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9O
PXdlYmtpdF91c2VyX2FnZW50X21pbm9yX3ZlcnNpb24KIEFDX1NVQlNUKFdFQktJVF9NQUpPUl9W
RVJTSU9OKQogQUNfU1VCU1QoV0VCS0lUX01JTk9SX1ZFUlNJT04pCiBBQ19TVUJTVChXRUJLSVRf
TUlDUk9fVkVSU0lPTikKK0FDX1NVQlNUKFdFQktJVF9VU0VSX0FHRU5UX01BSk9SX1ZFUlNJT04p
CitBQ19TVUJTVChXRUJLSVRfVVNFUl9BR0VOVF9NSU5PUl9WRVJTSU9OKQogCiBBQ19DT05GSUdf
U1JDRElSKFtXZWJDb3JlL2NvbmZpZy5oXSk=
</data>
<flag name="review"
          id="16586"
          type_id="1"
          status="+"
          setter="xan.lopez"
    />
          </attachment>
      

    </bug>

</bugzilla>