<?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>54752</bug_id>
          
          <creation_ts>2011-02-18 09:02:45 -0800</creation_ts>
          <short_desc>[EFL] Soup authentication feature implementation</short_desc>
          <delta_ts>2011-06-18 13:51:15 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Kamil Blank">k.blank</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>antognolli+webkit</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>leandro</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>tonikitoo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>353615</commentid>
    <comment_count>0</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-02-18 09:02:45 -0800</bug_when>
    <thetext>This implementation is based on GTK+ implementation.

In case of authentication request, previously defined callback to application will be called. 
This is a major difference between EFL and GTK implementation where authentication dialog is shown inside webkit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>353616</commentid>
    <comment_count>1</comment_count>
      <attachid>82967</attachid>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-02-18 09:08:23 -0800</bug_when>
    <thetext>Created attachment 82967
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360650</commentid>
    <comment_count>2</comment_count>
      <attachid>82967</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-02 00:56:45 -0800</bug_when>
    <thetext>Comment on attachment 82967
patch

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

I will contribute ewk_network.cpp / h file soon. Why don&apos;t you move these APIs to that ?

&gt; Source/WebKit/efl/ewk/ewk_main.cpp:204
&gt; +void ewk_show_auth_dialog_callback_set(ewk_show_auth_dialog_callback callback)

These API should not locate in ewk_main.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>361606</commentid>
    <comment_count>3</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-03-03 07:27:48 -0800</bug_when>
    <thetext>When can I expect ewk_network in main repo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>363146</commentid>
    <comment_count>4</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-06 15:39:54 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; When can I expect ewk_network in main repo?

Hmm, I will make a bug for it soon. But, I,m not sure when it can be landed to mainline. I will try it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>371320</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-22 03:28:08 -0700</bug_when>
    <thetext>Hello Kamil,

Why don&apos;t you make ewk_authenticate files ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>377594</commentid>
    <comment_count>6</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-03-31 18:51:58 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Hello Kamil,
&gt; 
&gt; Why don&apos;t you make ewk_authenticate files ?

Kamil, how do you think about my suggestion ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>378720</commentid>
    <comment_count>7</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-04-04 03:25:03 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; Hello Kamil,
&gt; 
&gt; Why don&apos;t you make ewk_authenticate files ?

Hi Gyuyoung,

Could you please give me more details about your idea? What exactly do you want me to put inside this file(s)?
Do you want me to move headers from ewk_main.h into ewk_authenticate.h?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>385490</commentid>
    <comment_count>8</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-04-13 21:03:20 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; Hello Kamil,
&gt; &gt; 
&gt; &gt; Why don&apos;t you make ewk_authenticate files ?
&gt; 
&gt; Hi Gyuyoung,
&gt; 
&gt; Could you please give me more details about your idea? What exactly do you want me to put inside this file(s)?
&gt; Do you want me to move headers from ewk_main.h into ewk_authenticate.h?

Sorry for my late reply. Yes, I think you should move your implementation to new ewk_xxx file (for example, ewk_auth.cpp) Please make new patch. :-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392889</commentid>
    <comment_count>9</comment_count>
      <attachid>82967</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2011-04-26 15:56:57 -0700</bug_when>
    <thetext>Comment on attachment 82967
patch

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

Gyuyoung&apos;s suggestion. r-&apos;ing it to keep it going ...

&gt; Source/WebKit/efl/ewk/ewk_main.h:59
&gt; +
&gt; +

unneeded extra line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>392934</commentid>
    <comment_count>10</comment_count>
      <attachid>82967</attachid>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-04-26 16:08:37 -0700</bug_when>
    <thetext>Comment on attachment 82967
patch

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

Overall I think most of this code should be shared somehow with gtk. There&apos;s no need to use g_slice_new0 / g_slice_free. If this indeed used, it should not be inside ewk/.

&gt; Source/WebKit/efl/ewk/ewk_main.h:48
&gt; +/**
&gt; + * Set callback to be called when authentication is required.
&gt; + */
&gt; +EAPI void ewk_show_auth_dialog_callback_set(ewk_show_auth_dialog_callback);

When you move to the new file, remember to keep namespaces clean. E.g.: this function should be named &quot;ewk_auth_...&quot;

&gt; Source/WebKit/efl/ewk/ewk_main.h:57
&gt; +/**
&gt; + * Calls authentication method for setting credentials.
&gt; + *
&gt; + * @param username username
&gt; + * @param password user password
&gt; + * @param data soup authentication data
&gt; + */
&gt; +EAPI void ewk_auth_credentials_set(char* username, char* password, void* data);

This one is right. Make the others like this.

&gt; Source/WebKit/efl/ewk/ewk_soup_authentication.cpp:3
&gt; +/*
&gt; +    Copyright (C) 2009-2011 Samsung Electronics
&gt; +

Since this is based on the GTK port, you probably need to keep their copyrights. And here it&apos;s only 2011 for yours.

&gt; Source/WebKit/efl/ewk/ewk_soup_authentication.h:23
&gt; +
&gt; +#include &quot;ewk_eapi.h&quot;

Remember that this is gone now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414723</commentid>
    <comment_count>11</comment_count>
      <attachid>95871</attachid>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-03 01:33:36 -0700</bug_when>
    <thetext>Created attachment 95871
patch

I&apos;ve updated patch. Could you please take a look on it again?

I&apos;d like to also ask for your opinion on naming of some objects/functions copied from GTK port.
Do you think keeping their original names started with webkit_, WebKit etc. is ok or would it be better to rename them with EWK/ewk_ prefixes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414958</commentid>
    <comment_count>12</comment_count>
      <attachid>95871</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-03 09:40:11 -0700</bug_when>
    <thetext>Comment on attachment 95871
patch

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

I couldn&apos;t figure out how this would work. Could you please provide a simple explanation of the expected flow?

&gt; Source/WebKit/efl/CMakeListsEfl.txt:106
&gt; +  LIST(APPEND WebKit_SOURCES
&gt; +    efl/ewk/ewk_auth.cpp
&gt; +    efl/ewk/ewk_soup_auth.cpp
&gt; +  )

I&apos;d prefer ewk_auth_soup.cpp, so it is consistent with EFL naming scheme.

&gt; Source/WebKit/efl/ewk/ewk_auth.cpp:27
&gt; +ewk_auth_show_dialog_callback g_auth_show_dialog_callback = 0;

Structures/typedefs in EFL are named Using_A_Combination_Of_Camel_Case_And_Underscores. Also, this variable should be static and there&apos;s no need to prepend the name with &quot;g_&quot; to denote it is a global variable.

&gt; Source/WebKit/efl/ewk/ewk_auth.cpp:42
&gt; +void ewk_auth_credentials_set(char* username, char* password, void* data)
&gt; +{
&gt; +#if USE(SOUP)
&gt; +    ewk_soup_auth_credentials_set(username, password, data);

ewk_auth_soup_credentials_set() would be better (makes it easier to grep by related functions on the source code).

&gt; Source/WebKit/efl/ewk/ewk_auth.h:35
&gt; +typedef void (*ewk_auth_show_dialog_callback)(const char* msg, void* data);

See remark about typedef naming above.

&gt; Source/WebKit/efl/ewk/ewk_soup_auth.cpp:45
&gt; +typedef struct _WebKitAuthData {
&gt; +    SoupMessage* msg;
&gt; +    SoupAuth* auth;
&gt; +    SoupSession* session;
&gt; +} WebKitAuthData;

See remarks about structure naming above. Also, prefix structures with Ewk rather than WebKit.

&gt; Source/WebKit/efl/ewk/ewk_soup_auth.cpp:94
&gt; +    uri = soup_message_get_uri(msg);

uri isn&apos;t used here.

&gt; Source/WebKit/efl/ewk/ewk_soup_auth.cpp:105
&gt; +    if (g_auth_show_dialog_callback)
&gt; +        g_auth_show_dialog_callback(realm, auth_data);

First parameter of this function is called &quot;msg&quot;, yet you just pass realm. How about passing instead &apos;url&apos; and &apos;realm&apos;, and having consistent naming on the function prototype?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415808</commentid>
    <comment_count>13</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-06 06:50:09 -0700</bug_when>
    <thetext>Thank you for the review. 
I followed your suggestions and prepared new patch.

I also added code inside ewk_auth_soup.cpp in case of unset callback - to free memory and unpause soup message.

(In reply to comment #12)
&gt; (From update of attachment 95871 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=95871&amp;action=review
&gt; 
&gt; I couldn&apos;t figure out how this would work. Could you please provide a simple explanation of the expected flow?

Let&apos;s say that we&apos;ve already got some functionality implemented to get username/password which is of type Ewk_Show_Auth_Dialog_Callback:
  static void auth_dialog_show(const char* realm, const char* uri, void* data);

First, application should call ewk_auth_show_dialog_callback_set(auth_dialog_show) to let WebKit know which function should be called when authentication required.
This function is responsible for getting username/password from user and pass them through ewk_auth_credentials_set(). 

&gt; &gt; Source/WebKit/efl/ewk/ewk_auth.cpp:27
&gt; &gt; +ewk_auth_show_dialog_callback g_auth_show_dialog_callback = 0;
&gt; 
&gt; Structures/typedefs in EFL are named Using_A_Combination_Of_Camel_Case_And_Underscores. Also, this variable should be static and there&apos;s no need to prepend the name with &quot;g_&quot; to denote it is a global variable.

I moved this variable inside ewk_auth_soup.cpp</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415809</commentid>
    <comment_count>14</comment_count>
      <attachid>96085</attachid>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-06 06:51:06 -0700</bug_when>
    <thetext>Created attachment 96085
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417416</commentid>
    <comment_count>15</comment_count>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-08 12:38:32 -0700</bug_when>
    <thetext>Looks better. Two nitpicks, however:

1) I don&apos;t see a way around it, but it would be a lot better if we used some already existing function to set the callback function.
2) How difficult would it be to also support this feature when using the Curl network backend?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>417893</commentid>
    <comment_count>16</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-09 01:38:14 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Looks better. Two nitpicks, however:
&gt; 
&gt; 1) I don&apos;t see a way around it, but it would be a lot better if we used some already existing function to set the callback function.

Ok. I&apos;ll replace it to use evas_object_callback functions.

&gt; 2) How difficult would it be to also support this feature when using the Curl network backend?

I&apos;m not familiar with CURL but public API I added is not dependent on soup and I don&apos;t think there should be any problems. 
The idea was to make API (ewk_auth) and network backend (ewk_auth_soup) in separate files so if there is a need to implement curl support you just have to create and implement ewk_auth_curl files with expected functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418671</commentid>
    <comment_count>17</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-10 05:13:40 -0700</bug_when>
    <thetext>&gt; 1) I don&apos;t see a way around it, but it would be a lot better if we used some already existing function to set the callback function.

I&apos;ve got problem with the modification we talked. I don&apos;t have any handle to ewk_view inside ewk_auth_soup and there is no possibility to emit any signal into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419762</commentid>
    <comment_count>18</comment_count>
      <attachid>96085</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-13 12:13:34 -0700</bug_when>
    <thetext>Comment on attachment 96085
patch

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

Regarding the function to set the callback, that&apos;s exactly what I said about not having a way around it. This seems to be a special case, so I think it is fine leaving as is.

&gt; Source/WebKit/efl/ewk/ewk_auth_soup.cpp:102
&gt; +    auth_data = (Ewk_Auth_Data*)calloc(1, sizeof(Ewk_Auth_Data));
&gt; +    auth_data-&gt;msg = msg;
&gt; +    auth_data-&gt;auth = auth;
&gt; +    auth_data-&gt;session = session;

Just make sure that, if calloc() fails, you return from this function before writing to it (and before pausing/incrementing references).

&gt; Source/WebKit/efl/ewk/ewk_auth_soup.h:37
&gt; +#define EWK_TYPE_SOUP_AUTH_DIALOG            (ewk_auth_soup_dialog_get_type ())
&gt; +#define EWK_SOUP_AUTH_DIALOG(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))
&gt; +#define EWK_SOUP_AUTH_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))
&gt; +#define EWK_IS_SOUP_AUTH_DIALOG(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), EWK_TYPE_SOUP_AUTH_DIALOG))
&gt; +#define EWK_IS_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EWK_TYPE_SOUP_AUTH_DIALOG))
&gt; +#define EWK_SOUP_AUTH_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))

Pay attention to spaces before parenthesis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420284</commentid>
    <comment_count>19</comment_count>
      <attachid>97088</attachid>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-14 02:13:10 -0700</bug_when>
    <thetext>Created attachment 97088
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420286</commentid>
    <comment_count>20</comment_count>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-14 02:19:40 -0700</bug_when>
    <thetext>&gt; &gt; Source/WebKit/efl/ewk/ewk_auth_soup.cpp:102
&gt; &gt; +    auth_data = (Ewk_Auth_Data*)calloc(1, sizeof(Ewk_Auth_Data));
&gt; &gt; +    auth_data-&gt;msg = msg;
&gt; &gt; +    auth_data-&gt;auth = auth;
&gt; &gt; +    auth_data-&gt;session = session;
&gt; 
&gt; Just make sure that, if calloc() fails, you return from this function before writing to it (and before pausing/incrementing references).

Fixed. 
I also moved checking whether callback is set before all other actions.

&gt; &gt; Source/WebKit/efl/ewk/ewk_auth_soup.h:37
&gt; &gt; +#define EWK_TYPE_SOUP_AUTH_DIALOG            (ewk_auth_soup_dialog_get_type ())
&gt; &gt; +#define EWK_SOUP_AUTH_DIALOG(object)         (G_TYPE_CHECK_INSTANCE_CAST ((object), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))
&gt; &gt; +#define EWK_SOUP_AUTH_DIALOG_CLASS(klass)    (G_TYPE_CHECK_CLASS_CAST ((klass), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))
&gt; &gt; +#define EWK_IS_SOUP_AUTH_DIALOG(object)      (G_TYPE_CHECK_INSTANCE_TYPE ((object), EWK_TYPE_SOUP_AUTH_DIALOG))
&gt; &gt; +#define EWK_IS_SOUP_AUTH_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EWK_TYPE_SOUP_AUTH_DIALOG))
&gt; &gt; +#define EWK_SOUP_AUTH_DIALOG_GET_CLASS(obj)  (G_TYPE_INSTANCE_GET_CLASS ((obj), EWK_TYPE_SOUP_AUTH_DIALOG, Ewk_Soup_Auth_Dialog))
&gt; 
&gt; Pay attention to spaces before parenthesis.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420457</commentid>
    <comment_count>21</comment_count>
      <attachid>97088</attachid>
    <who name="Leandro Pereira">leandro</who>
    <bug_when>2011-06-14 08:58:55 -0700</bug_when>
    <thetext>Comment on attachment 97088
patch

Informal r+.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420769</commentid>
    <comment_count>22</comment_count>
      <attachid>97088</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-14 15:27:58 -0700</bug_when>
    <thetext>Comment on attachment 97088
patch

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

&gt; Source/WebKit/efl/ChangeLog:7
&gt; +        [EFL] Soup authentication feature implementation.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=54752
&gt; +

A bit more description on what you fixed, how you did it etc would be welcome</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421094</commentid>
    <comment_count>23</comment_count>
      <attachid>97247</attachid>
    <who name="Kamil Blank">k.blank</who>
    <bug_when>2011-06-15 00:56:54 -0700</bug_when>
    <thetext>Created attachment 97247
patch

Added descriptions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421275</commentid>
    <comment_count>24</comment_count>
    <who name="Lucas De Marchi">lucas.de.marchi</who>
    <bug_when>2011-06-15 07:50:17 -0700</bug_when>
    <thetext>Committed r88929: &lt;http://trac.webkit.org/changeset/88929&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423254</commentid>
    <comment_count>25</comment_count>
      <attachid>97247</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-18 13:51:15 -0700</bug_when>
    <thetext>Comment on attachment 97247
patch

Cleared review? from attachment 97247 so that this bug does not appear in http://webkit.org/pending-review.  If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again).</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>82967</attachid>
            <date>2011-02-18 09:08:23 -0800</date>
            <delta_ts>2011-06-03 01:33:36 -0700</delta_ts>
            <desc>patch</desc>
            <filename>authentication.diff</filename>
            <type>text/plain</type>
            <size>10983</size>
            <attacher name="Kamil Blank">k.blank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMzYzYTA2OS4uNzlhYmQzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwMSw2ICsxMDEsOSBAQCBFTkRJRiAo
KQogSUYgKFdURl9VU0VfU09VUCkKICAgTElTVChBUFBFTkQgV2ViS2l0X0lOQ0xVREVfRElSRUNU
T1JJRVMgJHtMSUJTT1VQMjRfSU5DTFVERV9ESVJTfSkKICAgTElTVChBUFBFTkQgV2ViS2l0X0xJ
QlJBUklFUyAke0xJQlNPVVAyNF9MSUJSQVJJRVN9KQorICBMSVNUKEFQUEVORCBXZWJLaXRfU09V
UkNFUworICAgIGVmbC9ld2svZXdrX3NvdXBfYXV0aGVudGljYXRpb24uY3BwCisgICkKIEVORElG
ICgpCiAKIElGIChXVEZfVVNFX0NVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKaW5kZXggZmIwZTUwNC4uMWU3
OTViMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDExLTAyLTE4ICBLYW1p
bCBCbGFuayAgPGsuYmxhbmtAc2Ftc3VuZy5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgW0VGTF0gU291cCBhdXRoZW50aWNhdGlvbiBmZWF0dXJl
IGltcGxlbWVudGF0aW9uLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NTQ3NTIgCisKKyAgICAgICAgKiBDTWFrZUxpc3RzRWZsLnR4dDoKKyAgICAgICAg
KiBld2svZXdrX21haW4uY3BwOgorICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorICAgICAgICAo
ZXdrX3Nob3dfYXV0aF9kaWFsb2dfY2FsbGJhY2tfc2V0KToKKyAgICAgICAgKGV3a19hdXRoX2Ny
ZWRlbnRpYWxzX3NldCk6CisgICAgICAgICogZXdrL2V3a19tYWluLmg6CisgICAgICAgICogZXdr
L2V3a19zb3VwX2F1dGhlbnRpY2F0aW9uLmNwcDogQWRkZWQuCisgICAgICAgIChfV2ViS2l0QXV0
aERhdGE6OndlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2NsYXNzX2luaXQpOgorICAgICAgICAoX1dl
YktpdEF1dGhEYXRhOjp3ZWJraXRfc291cF9hdXRoX2RpYWxvZ19pbml0KToKKyAgICAgICAgKF9X
ZWJLaXRBdXRoRGF0YTo6d2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2lu
aXQpOgorICAgICAgICAoX1dlYktpdEF1dGhEYXRhOjpld2tfc291cF9hdXRoX2NyZWRlbnRpYWxz
X3NldCk6CisgICAgICAgIChfV2ViS2l0QXV0aERhdGE6OnNlc3Npb25fYXV0aGVudGljYXRlKToK
KyAgICAgICAgKF9XZWJLaXRBdXRoRGF0YTo6ZnJlZV9hdXRoX2RhdGEpOgorICAgICAgICAoX1dl
YktpdEF1dGhEYXRhOjphdHRhY2gpOgorICAgICAgICAoX1dlYktpdEF1dGhEYXRhOjpkZXRhY2gp
OgorICAgICAgICAqIGV3ay9ld2tfc291cF9hdXRoZW50aWNhdGlvbi5oOiBBZGRlZC4KKwogMjAx
MS0wMi0xNyAgUnl1YW4gQ2hvaSAgPHJ5dWFuLmNob2lAc2Ftc3VuZy5jb20+CiAKICAgICAgICAg
UmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNwcAppbmRl
eCAyNmRlYzgxLi5jOWQ5NjE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X21haW4uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKQEAgLTE4
NSw5ICsxODUsMzEgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAgICAgIFNv
dXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNz
aW9uKCk7CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHNlc3Npb24s
IFNPVVBfVFlQRV9DT05URU5UX1NOSUZGRVIpOwogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2Zl
YXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVSKTsKKworICAg
ICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8U291cFNl
c3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cs
IDApKTsKKyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhfZGlh
bG9nKTsKICAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9CiAKK2V3a19z
aG93X2F1dGhfZGlhbG9nX2NhbGxiYWNrIGdfc2hvd19hdXRoX2RpYWxvZ19jYWxsYmFjayA9IDA7
CisKKy8qKgorICogU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlv
biBpcyByZXF1aXJlZC4KKyAqCisgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGJhY2sgdG8gYmUgY2Fs
bGVkLgorICovCit2b2lkIGV3a19zaG93X2F1dGhfZGlhbG9nX2NhbGxiYWNrX3NldChld2tfc2hv
d19hdXRoX2RpYWxvZ19jYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBnX3Nob3dfYXV0aF9kaWFs
b2dfY2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKwordm9pZCBld2tfYXV0aF9jcmVkZW50aWFsc19z
ZXQoY2hhciogdXNlcm5hbWUsIGNoYXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRhKQoreworI2lmIFVT
RShTT1VQKQorICAgIGV3a19zb3VwX2F1dGhfY3JlZGVudGlhbHNfc2V0KHVzZXJuYW1lLCBwYXNz
d29yZCwgZGF0YSk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19tYWluLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uaAppbmRleCAz
NzMwZTg4Li5iZTgyOWZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21h
aW4uaAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uaApAQCAtMjMsNiArMjMs
MTAgQEAKIAogI2luY2x1ZGUgImV3a19lYXBpLmgiCiAKKyNpZmRlZiBXVEZfVVNFX1NPVVAKKyNp
bmNsdWRlICJld2tfc291cF9hdXRoZW50aWNhdGlvbi5oIgorI2VuZGlmCisKICNpZmRlZiBfX2Nw
bHVzcGx1cwogZXh0ZXJuICJDIiB7CiAjZW5kaWYKQEAgLTMwLDYgKzM0LDI5IEBAIGV4dGVybiAi
QyIgewogRUFQSSBpbnQgZXdrX2luaXQodm9pZCk7CiBFQVBJIGludCBld2tfc2h1dGRvd24odm9p
ZCk7CiAKKy8qKgorICogQ2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24g
aXMgcmVxdWlyZWQuCisgKgorICogQHBhcmFtIG1zZyBhdXRoJ3MgcmVhbG0KKyAqIEBwYXJhbSBk
YXRhIHBvaW50cyB0byBXZWJLaXRBdXRoRGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpld2tfc2hv
d19hdXRoX2RpYWxvZ19jYWxsYmFjaykoY29uc3QgY2hhciogbXNnLCB2b2lkKiBkYXRhKTsKKwor
LyoqCisgKiBTZXQgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24gaXMg
cmVxdWlyZWQuCisgKi8KK0VBUEkgdm9pZCBld2tfc2hvd19hdXRoX2RpYWxvZ19jYWxsYmFja19z
ZXQoZXdrX3Nob3dfYXV0aF9kaWFsb2dfY2FsbGJhY2spOworCisvKioKKyAqIENhbGxzIGF1dGhl
bnRpY2F0aW9uIG1ldGhvZCBmb3Igc2V0dGluZyBjcmVkZW50aWFscy4KKyAqCisgKiBAcGFyYW0g
dXNlcm5hbWUgdXNlcm5hbWUKKyAqIEBwYXJhbSBwYXNzd29yZCB1c2VyIHBhc3N3b3JkCisgKiBA
cGFyYW0gZGF0YSBzb3VwIGF1dGhlbnRpY2F0aW9uIGRhdGEKKyAqLworRUFQSSB2b2lkIGV3a19h
dXRoX2NyZWRlbnRpYWxzX3NldChjaGFyKiB1c2VybmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQq
IGRhdGEpOworCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NvdXBfYXV0aGVudGljYXRpb24uY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zb3VwX2F1dGhlbnRpY2F0aW9uLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNmE4NjQxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a19zb3VwX2F1dGhlbnRpY2F0aW9uLmNwcApAQCAtMCwwICsxLDEy
NiBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNz
CisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1
dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vu
c2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxp
YnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwK
KyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3
YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBj
b3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xp
biBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgor
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgImV3a19zb3VwX2F1dGhlbnRpY2F0
aW9uLmgiCisKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4K
KyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKKyNpZmRlZiBf
X2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiAjV2ViS2l0U291cEF1
dGhEaWFsb2cgaXMgYSAjU291cFNlc3Npb25GZWF0dXJlIHRoYXQgeW91IGNhbiBhdHRhY2ggdG8g
eW91cgorICogI1NvdXBTZXNzaW9uIHRvIHByb3ZpZGUgYSBzaW1wbGUgYXV0aGVudGljYXRpb24g
ZGlhbG9nIHdoaWxlCisgKiBoYW5kbGluZyBIVFRQIGJhc2ljIGF1dGguIEl0IGlzIGJ1aWx0IGFz
IGEgc2ltcGxlIEMtb25seSBtb2R1bGUKKyAqIHRvIGVhc2UgcmV1c2UuCisgKi8KKwordHlwZWRl
ZiBzdHJ1Y3QgX1dlYktpdEF1dGhEYXRhIHsKKyAgICBTb3VwTWVzc2FnZSogbXNnOworICAgIFNv
dXBBdXRoKiBhdXRoOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uOworfSBXZWJLaXRBdXRoRGF0
YTsKKworZXh0ZXJuIGV3a19zaG93X2F1dGhfZGlhbG9nX2NhbGxiYWNrIGdfc2hvd19hdXRoX2Rp
YWxvZ19jYWxsYmFjazsKKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfc2Vz
c2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNlKiwgZ3BvaW50ZXIp
Oworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSosIFNvdXBTZXNzaW9uKik7
CitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiwgU291cFNlc3Npb24qKTsK
K3N0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKFdlYktpdEF1dGhEYXRhKik7CisKK0dfREVGSU5F
X1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBBdXRoRGlhbG9nLCB3ZWJraXRfc291cF9hdXRoX2Rp
YWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5U
X0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFUVVJFLCB3ZWJraXRfc291cF9hdXRoX2Rp
YWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCkpCisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1
dGhfZGlhbG9nX2NsYXNzX2luaXQoV2ViS2l0U291cEF1dGhEaWFsb2dDbGFzcyoga2xhc3MpCit7
Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2luaXQoV2ViS2l0U291
cEF1dGhEaWFsb2cqIGluc3RhbmNlKQoreworfQorCitzdGF0aWMgdm9pZCB3ZWJraXRfc291cF9h
dXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZh
Y2UgKmZlYXR1cmVfaW50ZXJmYWNlLCBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSkKK3sKKyAgICBm
ZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOworICAgIGZlYXR1cmVfaW50ZXJmYWNl
LT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3ZvaWQgZXdrX3NvdXBfYXV0aF9jcmVkZW50aWFsc19z
ZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRh
KQoreworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAgV2ViS2l0QXV0aERh
dGEqIGF1dGhfZGF0YSA9IChXZWJLaXRBdXRoRGF0YSopZGF0YTsKKyAgICBzb3VwX2F1dGhfYXV0
aGVudGljYXRlKGF1dGhfZGF0YS0+YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKKyAgICBzb3Vw
X3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwgYXV0aF9kYXRhLT5t
c2cpOworICAgIGZyZWVfYXV0aF9kYXRhKGF1dGhfZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIHNl
c3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2FnZSogbXNn
LCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIC8qIHVzZXJfZGF0
YSAqLykKK3sKKyAgICBTb3VwVVJJKiB1cmk7CisgICAgV2ViS2l0QXV0aERhdGEqIGF1dGhfZGF0
YTsKKyAgICBjb25zdCBjaGFyKiByZWFsbTsKKworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNz
YWdlKHNlc3Npb24sIG1zZyk7CisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1lc3Nh
Z2Ugc3RpY2tzIGFyb3VuZCB3aGVuIHBhdXNpbmcgaXQuCisgICAgZ19vYmplY3RfcmVmKG1zZyk7
CisgICAgZ19vYmplY3RfcmVmKHNlc3Npb24pOworICAgIGdfb2JqZWN0X3JlZihhdXRoKTsKKwor
ICAgIHVyaSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1zZyk7CisgICAgYXV0aF9kYXRhID0gZ19z
bGljZV9uZXcwKFdlYktpdEF1dGhEYXRhKTsKKyAgICBhdXRoX2RhdGEtPm1zZyA9IG1zZzsKKyAg
ICBhdXRoX2RhdGEtPmF1dGggPSBhdXRoOworICAgIGF1dGhfZGF0YS0+c2Vzc2lvbiA9IHNlc3Np
b247CisKKyAgICB1cmkgPSBzb3VwX21lc3NhZ2VfZ2V0X3VyaShhdXRoX2RhdGEtPm1zZyk7Cisg
ICAgcmVhbG0gPSBzb3VwX2F1dGhfZ2V0X3JlYWxtKGF1dGhfZGF0YS0+YXV0aCk7CisKKyAgICAv
LyBDYWxsIGFwcGxpY2F0aW9uIG1ldGhvZCByZXNwb25zaWJsZSBmb3Igc2hvd2luZyBhdXRoZW50
aWNhdGlvbiBkaWFsb2cgYW5kIHNlbmRpbmcgYmFjayBhdXRob3JpemF0aW9uIGRhdGEuCisgICAg
aWYgKGdfc2hvd19hdXRoX2RpYWxvZ19jYWxsYmFjaykKKyAgICAgICAgZ19zaG93X2F1dGhfZGlh
bG9nX2NhbGxiYWNrKHJlYWxtLCBhdXRoX2RhdGEpOworfQorCitzdGF0aWMgdm9pZCBmcmVlX2F1
dGhfZGF0YShXZWJLaXRBdXRoRGF0YSogYXV0aF9kYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVm
KGF1dGhfZGF0YS0+bXNnKTsKKyAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPnNlc3Npb24p
OworICAgIGdfb2JqZWN0X3VucmVmKGF1dGhfZGF0YS0+YXV0aCk7CisgICAgZ19zbGljZV9mcmVl
KFdlYktpdEF1dGhEYXRhLCBhdXRoX2RhdGEpOworfQorCitzdGF0aWMgdm9pZCBhdHRhY2goU291
cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBn
X3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNhdGUiLCBHX0NBTExCQUNLKHNlc3Np
b25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7Cit9CisKK3N0YXRpYyB2b2lkIGRldGFjaChTb3Vw
U2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9uKiBzZXNzaW9uKQoreworICAgIGdf
c2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhzZXNzaW9uLCAodm9pZCopc2Vzc2lv
bl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOworfQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNl
bmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zb3VwX2F1dGhlbnRp
Y2F0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NvdXBfYXV0aGVudGljYXRpb24u
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYWRkMzZjCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zb3VwX2F1dGhlbnRpY2F0aW9uLmgK
QEAgLTAsMCArMSw2MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDktMjAxMSBTYW1zdW5n
IEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNh
biByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisK
KyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUg
cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNl
CisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4g
IElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu
LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAt
MTMwMSwgVVNBLgorKi8KKworI2lmbmRlZiBld2tfc291cF9hdXRoZW50aWNhdGlvbl9oCisjZGVm
aW5lIGV3a19zb3VwX2F1dGhlbnRpY2F0aW9uX2gKKworI2luY2x1ZGUgImV3a19lYXBpLmgiCisj
aW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBXRUJLSVRfVFlQRV9TT1VQ
X0FVVEhfRElBTE9HICAgICAgICAgICAgKHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBl
ICgpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdf
VFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqZWN0KSwgV0VCS0lUX1RZUEVfU09VUF9BVVRI
X0RJQUxPRywgV2ViS2l0U291cEF1dGhEaWFsb2cpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRI
X0RJQUxPR19DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3Mp
LCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisj
ZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NI
RUNLX0lOU1RBTkNFX1RZUEUgKChvYmplY3QpLCBXRUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9H
KSkKKyNkZWZpbmUgV0VCS0lUX0lTX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZ
UEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxP
RykpCisjZGVmaW5lIFdFQktJVF9TT1VQX0FVVEhfRElBTE9HX0dFVF9DTEFTUyhvYmopICAoR19U
WVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFM
T0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmpl
Y3QgcGFyZW50X2luc3RhbmNlOworfSBXZWJLaXRTb3VwQXV0aERpYWxvZzsKKwordHlwZWRlZiBz
dHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9IFdlYktpdFNvdXBBdXRo
RGlhbG9nQ2xhc3M7CisKK0dUeXBlIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2dldF90eXBlKHZv
aWQpOworCisvKioKKyAqICBNZXRob2QgZm9yIHNldHRpbmcgY3JlZGVudGlhbHMKKyAqCisgKiAg
QHBhcmFtIHVzZXJuYW1lIHVzZXJuYW1lCisgKiAgQHBhcmFtIHBhc3N3b3JkIHBhc3N3b3JkCisg
KiAgQHBhcmFtIGRhdGEgc291cCBhdXRoZW50aWNhdGlvbiBkYXRhCisgKi8KK3ZvaWQgZXdrX3Nv
dXBfYXV0aF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIq
IHBhc3N3b3JkLCB2b2lkKiBkYXRhKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYK
KworI2VuZGlmIC8vIGV3a19zb3VwX2F1dGhlbnRpY2F0aW9uX2gK
</data>
<flag name="review"
          id="74689"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95871</attachid>
            <date>2011-06-03 01:33:36 -0700</date>
            <delta_ts>2011-06-06 06:51:06 -0700</delta_ts>
            <desc>patch</desc>
            <filename>auth.diff</filename>
            <type>text/plain</type>
            <size>13050</size>
            <attacher name="Kamil Blank">k.blank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMjJjMjI4NS4uYWY2MDRmYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwMCw2ICsxMDAsMTAgQEAgRU5ESUYg
KCkKIElGIChXVEZfVVNFX1NPVVApCiAgIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTICR7TElCU09VUDI0X0lOQ0xVREVfRElSU30pCiAgIExJU1QoQVBQRU5EIFdlYktpdF9M
SUJSQVJJRVMgJHtMSUJTT1VQMjRfTElCUkFSSUVTfSkKKyAgTElTVChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKKyAgICBlZmwvZXdrL2V3a19hdXRoLmNwcAorICAgIGVmbC9ld2svZXdrX3NvdXBfYXV0
aC5jcHAKKyAgKQogRU5ESUYgKCkKIAogSUYgKFdURl9VU0VfQ1VSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA2NGQwNDQ5Li41ZTlmN2RhIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjggQEAK
KzIwMTEtMDYtMDIgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBTb3VwIGF1dGhl
bnRpY2F0aW9uIGZlYXR1cmUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc1MgorCisgICAgICAgICogQ01ha2VMaXN0c0Vm
bC50eHQ6CisgICAgICAgICogZXdrL2V3a19hdXRoLmNwcDogQWRkZWQuCisgICAgICAgIChld2tf
YXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOgorICAgICAgICAoZXdrX2F1dGhfY3JlZGVu
dGlhbHNfc2V0KToKKyAgICAgICAgKiBld2svZXdrX2F1dGguaDogQWRkZWQuCisgICAgICAgICog
ZXdrL2V3a19tYWluLmNwcDoKKyAgICAgICAgKF9ld2tfaW5pdF9ib2R5KToKKyAgICAgICAgKiBl
d2svZXdrX3NvdXBfYXV0aC5jcHA6IEFkZGVkLgorICAgICAgICAoX1dlYktpdEF1dGhEYXRhOjp3
ZWJraXRfc291cF9hdXRoX2RpYWxvZ19jbGFzc19pbml0KToKKyAgICAgICAgKF9XZWJLaXRBdXRo
RGF0YTo6d2Via2l0X3NvdXBfYXV0aF9kaWFsb2dfaW5pdCk6CisgICAgICAgIChfV2ViS2l0QXV0
aERhdGE6OndlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KToKKyAg
ICAgICAgKF9XZWJLaXRBdXRoRGF0YTo6ZXdrX3NvdXBfYXV0aF9jcmVkZW50aWFsc19zZXQpOgor
ICAgICAgICAoX1dlYktpdEF1dGhEYXRhOjpzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAg
IChfV2ViS2l0QXV0aERhdGE6OmZyZWVfYXV0aF9kYXRhKToKKyAgICAgICAgKF9XZWJLaXRBdXRo
RGF0YTo6YXR0YWNoKToKKyAgICAgICAgKF9XZWJLaXRBdXRoRGF0YTo6ZGV0YWNoKToKKyAgICAg
ICAgKiBld2svZXdrX3NvdXBfYXV0aC5oOiBBZGRlZC4KKwogMjAxMS0wNi0wMiAgR3l1eW91bmcg
S2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEtl
bm5ldGggUm9oZGUgQ2hyaXN0aWFuc2VuLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdiZTcxNwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAKQEAgLTAsMCArMSw0NSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJld2tfYXV0aC5oIgorCisjaWZkZWYgV1RGX1VTRV9T
T1VQCisjaW5jbHVkZSAiZXdrX3NvdXBfYXV0aC5oIgorI2VuZGlmCisKK2V3a19hdXRoX3Nob3df
ZGlhbG9nX2NhbGxiYWNrIGdfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IDA7CisKKy8qKgor
ICogU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1
aXJlZC4KKyAqCisgKiBAcGFyYW0gY2FsbGJhY2sgY2FsbGJhY2sgdG8gYmUgY2FsbGVkLgorICov
Cit2b2lkIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChld2tfYXV0aF9zaG93X2Rp
YWxvZ19jYWxsYmFjayBjYWxsYmFjaykKK3sKKyAgICBnX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJh
Y2sgPSBjYWxsYmFjazsKK30KKwordm9pZCBld2tfYXV0aF9jcmVkZW50aWFsc19zZXQoY2hhciog
dXNlcm5hbWUsIGNoYXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRhKQoreworI2lmIFVTRShTT1VQKQor
ICAgIGV3a19zb3VwX2F1dGhfY3JlZGVudGlhbHNfc2V0KHVzZXJuYW1lLCBwYXNzd29yZCwgZGF0
YSk7CisjZW5kaWYKK30KKwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19h
dXRoLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguaApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi5kODhlZWExCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19hdXRoLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAgICBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2F1dGhfaAor
I2RlZmluZSBld2tfYXV0aF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBDYWxsYmFjayB0byBiZSBjYWxs
ZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KKyAqCisgKiBAcGFyYW0gbXNnIGF1
dGgncyByZWFsbQorICogQHBhcmFtIGRhdGEgcG9pbnRzIHRvIFdlYktpdEF1dGhEYXRhCisgKi8K
K3R5cGVkZWYgdm9pZCAoKmV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKShjb25zdCBjaGFy
KiBtc2csIHZvaWQqIGRhdGEpOworCisvKioKKyAqIFNldCBjYWxsYmFjayB0byBiZSBjYWxsZWQg
d2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KKyAqLworRUFQSSB2b2lkIGV3a19hdXRo
X3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldChld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayk7
CisKKy8qKgorICogQ2FsbHMgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvciBzZXR0aW5nIGNyZWRl
bnRpYWxzLgorICoKKyAqIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogQHBhcmFtIHBhc3N3
b3JkIHVzZXIgcGFzc3dvcmQKKyAqIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0
YQorICovCitFQVBJIHZvaWQgZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIqIHVzZXJuYW1l
LCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQor
I2VuZGlmCisjZW5kaWYgLy8gZXdrX2F1dGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAK
aW5kZXggOGNhODdkMS4uMmRlMGRiNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4uY3BwCkBA
IC01Miw2ICs1Miw3IEBACiAjaWYgVVNFKFNPVVApCiAvLyBSRU1PVkUtTUU6IHNlZSB0b2RvIGJl
bG93CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJld2tfc291cF9hdXRo
LmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjZW5kaWYKIApAQCAtMjEwLDkgKzIxMSwx
MSBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKICAgICAgICAgU291cFNlc3Npb24q
IHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24oKTsKICAg
ICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09VUF9UWVBF
X0NPTlRFTlRfU05JRkZFUik7CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90
eXBlKHNlc3Npb24sIFNPVVBfVFlQRV9DT05URU5UX0RFQ09ERVIpOworCisgICAgICAgIFNvdXBT
ZXNzaW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lvbkZlYXR1
cmUqPihnX29iamVjdF9uZXcoV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgMCkpOworICAg
ICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aF9kaWFsb2cpOwogICAg
IH0KICNlbmRpZgogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KLQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19zb3VwX2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19zb3VwX2F1dGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjRlOWE0MzIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3Nv
dXBfYXV0aC5jcHAKQEAgLTAsMCArMSwxMjggQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5
IElnYWxpYSBTLkwuCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MK
KworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0
ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5z
ZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGli
cmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAor
ICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdh
cnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vu
c2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNv
cHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3
aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0
ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX3NvdXBfYXV0aC5oIgorCisj
aW5jbHVkZSAiRVdlYktpdC5oIgorI2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVkZSA8Z2xp
Yi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+
CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiAj
V2ViS2l0U291cEF1dGhEaWFsb2cgaXMgYSAjU291cFNlc3Npb25GZWF0dXJlIHRoYXQgeW91IGNh
biBhdHRhY2ggdG8geW91cgorICogI1NvdXBTZXNzaW9uIHRvIHByb3ZpZGUgYSBzaW1wbGUgYXV0
aGVudGljYXRpb24gZGlhbG9nIHdoaWxlCisgKiBoYW5kbGluZyBIVFRQIGJhc2ljIGF1dGguIEl0
IGlzIGJ1aWx0IGFzIGEgc2ltcGxlIEMtb25seSBtb2R1bGUKKyAqIHRvIGVhc2UgcmV1c2UuCisg
Ki8KKwordHlwZWRlZiBzdHJ1Y3QgX1dlYktpdEF1dGhEYXRhIHsKKyAgICBTb3VwTWVzc2FnZSog
bXNnOworICAgIFNvdXBBdXRoKiBhdXRoOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uOworfSBX
ZWJLaXRBdXRoRGF0YTsKKworZXh0ZXJuIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrIGdf
YXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjazsKKworc3RhdGljIHZvaWQgd2Via2l0X3NvdXBfYXV0
aF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNl
KiwgZ3BvaW50ZXIpOworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSosIFNv
dXBTZXNzaW9uKik7CitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiwgU291
cFNlc3Npb24qKTsKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKFdlYktpdEF1dGhEYXRhKik7
CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFKFdlYktpdFNvdXBBdXRoRGlhbG9nLCB3ZWJraXRf
c291cF9hdXRoX2RpYWxvZywgR19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAg
IEdfSU1QTEVNRU5UX0lOVEVSRkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFUVVJFLCB3ZWJraXRf
c291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCkpCisKK3N0YXRpYyB2b2lkIHdl
YmtpdF9zb3VwX2F1dGhfZGlhbG9nX2NsYXNzX2luaXQoV2ViS2l0U291cEF1dGhEaWFsb2dDbGFz
cyoga2xhc3MpCit7Cit9CisKK3N0YXRpYyB2b2lkIHdlYmtpdF9zb3VwX2F1dGhfZGlhbG9nX2lu
aXQoV2ViS2l0U291cEF1dGhEaWFsb2cqIGluc3RhbmNlKQoreworfQorCitzdGF0aWMgdm9pZCB3
ZWJraXRfc291cF9hdXRoX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZl
YXR1cmVJbnRlcmZhY2UgKmZlYXR1cmVfaW50ZXJmYWNlLCBncG9pbnRlciBpbnRlcmZhY2VfZGF0
YSkKK3sKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+YXR0YWNoID0gYXR0YWNoOworICAgIGZlYXR1
cmVfaW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7Cit9CisKK3ZvaWQgZXdrX3NvdXBfYXV0aF9j
cmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNoYXIqIHBhc3N3b3Jk
LCB2b2lkKiBkYXRhKQoreworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
V2ViS2l0QXV0aERhdGEqIGF1dGhfZGF0YSA9IChXZWJLaXRBdXRoRGF0YSopZGF0YTsKKyAgICBz
b3VwX2F1dGhfYXV0aGVudGljYXRlKGF1dGhfZGF0YS0+YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3Jk
KTsKKyAgICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwg
YXV0aF9kYXRhLT5tc2cpOworICAgIGZyZWVfYXV0aF9kYXRhKGF1dGhfZGF0YSk7Cit9CisKK3N0
YXRpYyB2b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3Vw
TWVzc2FnZSogbXNnLCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVy
IC8qIHVzZXJfZGF0YSAqLykKK3sKKyAgICBTb3VwVVJJKiB1cmk7CisgICAgV2ViS2l0QXV0aERh
dGEqIGF1dGhfZGF0YTsKKyAgICBjb25zdCBjaGFyKiByZWFsbTsKKworICAgIHNvdXBfc2Vzc2lv
bl9wYXVzZV9tZXNzYWdlKHNlc3Npb24sIG1zZyk7CisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1
cmUgdGhlIG1lc3NhZ2Ugc3RpY2tzIGFyb3VuZCB3aGVuIHBhdXNpbmcgaXQuCisgICAgZ19vYmpl
Y3RfcmVmKG1zZyk7CisgICAgZ19vYmplY3RfcmVmKHNlc3Npb24pOworICAgIGdfb2JqZWN0X3Jl
ZihhdXRoKTsKKworICAgIHVyaSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKG1zZyk7CisgICAgYXV0
aF9kYXRhID0gKFdlYktpdEF1dGhEYXRhKiljYWxsb2MoMSwgc2l6ZW9mKFdlYktpdEF1dGhEYXRh
KSk7CisgICAgYXV0aF9kYXRhLT5tc2cgPSBtc2c7CisgICAgYXV0aF9kYXRhLT5hdXRoID0gYXV0
aDsKKyAgICBhdXRoX2RhdGEtPnNlc3Npb24gPSBzZXNzaW9uOworCisgICAgdXJpID0gc291cF9t
ZXNzYWdlX2dldF91cmkoYXV0aF9kYXRhLT5tc2cpOworICAgIHJlYWxtID0gc291cF9hdXRoX2dl
dF9yZWFsbShhdXRoX2RhdGEtPmF1dGgpOworCisgICAgLy8gQ2FsbCBhcHBsaWNhdGlvbiBtZXRo
b2QgcmVzcG9uc2libGUgZm9yIHNob3dpbmcgYXV0aGVudGljYXRpb24gZGlhbG9nIGFuZCBzZW5k
aW5nIGJhY2sgYXV0aG9yaXphdGlvbiBkYXRhLgorICAgIGlmIChnX2F1dGhfc2hvd19kaWFsb2df
Y2FsbGJhY2spCisgICAgICAgIGdfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayhyZWFsbSwgYXV0
aF9kYXRhKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoV2ViS2l0QXV0aERhdGEq
IGF1dGhfZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPm1zZyk7CisgICAg
Z19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5zZXNzaW9uKTsKKyAgICBnX29iamVjdF91bnJlZihh
dXRoX2RhdGEtPmF1dGgpOworICAgIGZyZWUoYXV0aF9kYXRhKTsKK30KKworc3RhdGljIHZvaWQg
YXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Npb24p
Cit7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19DQUxM
QkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIpOworfQorCitzdGF0aWMgdm9pZCBk
ZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lvbikK
K3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwgKHZv
aWQqKXNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsKK30KKworI2lmZGVmIF9fY3BsdXNw
bHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfc291
cF9hdXRoLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NvdXBfYXV0aC5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyNjVjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3NvdXBfYXV0aC5oCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisgICAgQ29weXJpZ2h0IChDKSAy
MDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3
YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIg
dGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2Ug
YXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAg
IHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIg
dmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJy
YXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBz
aG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENP
UFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9u
LCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19zb3VwX2F1dGhfaAorI2Rl
ZmluZSBld2tfc291cF9hdXRoX2gKKworI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVk
ZSA8Z2xpYi5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisK
KyNkZWZpbmUgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRyAgICAgICAgICAgICh3ZWJraXRf
c291cF9hdXRoX2RpYWxvZ19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVUSF9E
SUFMT0cob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iamVj
dCksIFdFQktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0csIFdlYktpdFNvdXBBdXRoRGlhbG9nKSkK
KyNkZWZpbmUgV0VCS0lUX1NPVVBfQVVUSF9ESUFMT0dfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVf
Q0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgV0VCS0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRywg
V2ViS2l0U291cEF1dGhEaWFsb2cpKQorI2RlZmluZSBXRUJLSVRfSVNfU09VUF9BVVRIX0RJQUxP
RyhvYmplY3QpICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqZWN0KSwgV0VC
S0lUX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIFdFQktJVF9JU19TT1VQX0FVVEhf
RElBTE9HX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIFdF
QktJVF9UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBXRUJLSVRfU09VUF9BVVRIX0RJ
QUxPR19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBX
RUJLSVRfVFlQRV9TT1VQX0FVVEhfRElBTE9HLCBXZWJLaXRTb3VwQXV0aERpYWxvZykpCisKK3R5
cGVkZWYgc3RydWN0IHsKKyAgICBHT2JqZWN0IHBhcmVudF9pbnN0YW5jZTsKK30gV2ViS2l0U291
cEF1dGhEaWFsb2c7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBHT2JqZWN0Q2xhc3MgcGFyZW50
X2NsYXNzOworfSBXZWJLaXRTb3VwQXV0aERpYWxvZ0NsYXNzOworCitHVHlwZSB3ZWJraXRfc291
cF9hdXRoX2RpYWxvZ19nZXRfdHlwZSh2b2lkKTsKKworLyoqCisgKiAgTWV0aG9kIGZvciBzZXR0
aW5nIGNyZWRlbnRpYWxzCisgKgorICogIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogIEBw
YXJhbSBwYXNzd29yZCBwYXNzd29yZAorICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRp
b24gZGF0YQorICovCit2b2lkIGV3a19zb3VwX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNo
YXIqIHVzZXJuYW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRl
ZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfc291cF9hdXRoX2gK
</data>
<flag name="review"
          id="89453"
          type_id="1"
          status="-"
          setter="leandro"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96085</attachid>
            <date>2011-06-06 06:51:06 -0700</date>
            <delta_ts>2011-06-14 02:13:10 -0700</delta_ts>
            <desc>patch</desc>
            <filename>auth2.diff</filename>
            <type>text/plain</type>
            <size>13494</size>
            <attacher name="Kamil Blank">k.blank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMjJjMjI4NS4uNTVlZmI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwMCw2ICsxMDAsMTAgQEAgRU5ESUYg
KCkKIElGIChXVEZfVVNFX1NPVVApCiAgIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTICR7TElCU09VUDI0X0lOQ0xVREVfRElSU30pCiAgIExJU1QoQVBQRU5EIFdlYktpdF9M
SUJSQVJJRVMgJHtMSUJTT1VQMjRfTElCUkFSSUVTfSkKKyAgTElTVChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKKyAgICBlZmwvZXdrL2V3a19hdXRoLmNwcAorICAgIGVmbC9ld2svZXdrX2F1dGhfc291
cC5jcHAKKyAgKQogRU5ESUYgKCkKIAogSUYgKFdURl9VU0VfQ1VSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA2NGQwNDQ5Li5mNjVjNDI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTEtMDYtMDYgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBTb3VwIGF1dGhl
bnRpY2F0aW9uIGZlYXR1cmUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc1MgorCisgICAgICAgICogQ01ha2VMaXN0c0Vm
bC50eHQ6CisgICAgICAgICogZXdrL2V3a19hdXRoLmNwcDogQWRkZWQuCisgICAgICAgIChld2tf
YXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOgorICAgICAgICAoZXdrX2F1dGhfY3JlZGVu
dGlhbHNfc2V0KToKKyAgICAgICAgKiBld2svZXdrX2F1dGguaDogQWRkZWQuCisgICAgICAgICog
ZXdrL2V3a19hdXRoX3NvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpl
d2tfYXV0aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRh
Ojpld2tfYXV0aF9zb3VwX2RpYWxvZ19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpl
d2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CisgICAgICAgIChfRXdr
X0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOgorICAg
ICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KToKKyAg
ICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChf
RXdrX0F1dGhfRGF0YTo6ZnJlZV9hdXRoX2RhdGEpOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6
OmF0dGFjaCk6CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZGV0YWNoKToKKyAgICAgICAgKiBl
d2svZXdrX2F1dGhfc291cC5oOiBBZGRlZC4KKyAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgor
ICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorCiAyMDExLTA2LTAyICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjIxMmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19hdXRoLmgiCisKKyNpZmRlZiBXVEZfVVNFX1NPVVAKKyNp
bmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisjZW5kaWYKKworLyoqCisgKiBTZXRzIGNhbGxiYWNr
IHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgorICoKKyAqIEBw
YXJhbSBjYWxsYmFjayBjYWxsYmFjayB0byBiZSBjYWxsZWQuCisgKi8KK3ZvaWQgZXdrX2F1dGhf
c2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNh
bGxiYWNrKQoreworI2lmIFVTRShTT1VQKQorICAgIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2df
Y2FsbGJhY2tfc2V0KGNhbGxiYWNrKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19hdXRoX2NyZWRl
bnRpYWxzX3NldChjaGFyKiB1c2VybmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEpCit7
CisjaWYgVVNFKFNPVVApCisgICAgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQodXNlcm5h
bWUsIHBhc3N3b3JkLCBkYXRhKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzAyOTY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgZXdrX2F1dGhfaAorI2RlZmluZSBld2tfYXV0aF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBDYWxs
YmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KKyAqCisg
KiBAcGFyYW0gcmVhbG0gYXV0aCdzIHJlYWxtCisgKiBAcGFyYW0gdXJpIHVyaQorICogQHBhcmFt
IGRhdGEgcG9pbnRzIHRvIFdlYktpdEF1dGhEYXRhCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19B
dXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrKShjb25zdCBjaGFyKiByZWFsbSwgY29uc3QgY2hhciog
dXJpLCB2b2lkKiBkYXRhKTsKKworLyoqCisgKiBTZXQgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdo
ZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQKKyAqLworRUFQSSB2b2lkIGV3a19hdXRoX3No
b3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayk7CisK
Ky8qKgorICogQ2FsbHMgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvciBzZXR0aW5nIGNyZWRlbnRp
YWxzLgorICoKKyAqIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogQHBhcmFtIHBhc3N3b3Jk
IHVzZXIgcGFzc3dvcmQKKyAqIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQor
ICovCitFQVBJIHZvaWQgZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIqIHVzZXJuYW1lLCBj
aGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisjZW5kaWYgLy8gZXdrX2F1dGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3Nv
dXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2NGNmODYKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKQEAg
LTAsMCArMSwxMzYgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfc291cC5oIgorCisjaW5jbHVkZSAiRVdlYktp
dC5oIgorI2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNp
bmNsdWRlIDxnbGliLmg+CisjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CisKKyNpZmRlZiBfX2Nw
bHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiAjRXdrX1NvdXBfQXV0aF9E
aWFsb2cgaXMgYSAjU291cFNlc3Npb25GZWF0dXJlIHRoYXQgeW91IGNhbiBhdHRhY2ggdG8geW91
cgorICogI1NvdXBTZXNzaW9uIHRvIHByb3ZpZGUgYSBzaW1wbGUgYXV0aGVudGljYXRpb24gZGlh
bG9nIHdoaWxlCisgKiBoYW5kbGluZyBIVFRQIGJhc2ljIGF1dGguIEl0IGlzIGJ1aWx0IGFzIGEg
c2ltcGxlIEMtb25seSBtb2R1bGUKKyAqIHRvIGVhc2UgcmV1c2UuCisgKi8KKwordHlwZWRlZiBz
dHJ1Y3QgX0V3a19BdXRoX0RhdGEgeworICAgIFNvdXBNZXNzYWdlKiBtc2c7CisgICAgU291cEF1
dGgqIGF1dGg7CisgICAgU291cFNlc3Npb24qIHNlc3Npb247Cit9IEV3a19BdXRoX0RhdGE7CisK
K3N0YXRpYyBFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBld2tfYXV0aF9zaG93X2RpYWxv
Z19jYWxsYmFjayA9IDA7CisKK3N0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Np
b25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVyZUludGVyZmFjZSosIGdwb2ludGVyKTsK
K3N0YXRpYyB2b2lkIGF0dGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqLCBTb3VwU2Vzc2lvbiopOwor
c3RhdGljIHZvaWQgZGV0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSosIFNvdXBTZXNzaW9uKik7Citz
dGF0aWMgdm9pZCBmcmVlX2F1dGhfZGF0YShFd2tfQXV0aF9EYXRhKik7CisKK0dfREVGSU5FX1RZ
UEVfV0lUSF9DT0RFKEV3a19Tb3VwX0F1dGhfRGlhbG9nLCBld2tfYXV0aF9zb3VwX2RpYWxvZywg
R19UWVBFX09CSkVDVCwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdfSU1QTEVNRU5UX0lOVEVS
RkFDRShTT1VQX1RZUEVfU0VTU0lPTl9GRUFUVVJFLCBld2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNz
aW9uX2ZlYXR1cmVfaW5pdCkpCisKK3N0YXRpYyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2Ns
YXNzX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzcyoga2xhc3MpCit7Cit9CisKK3N0YXRp
YyB2b2lkIGV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQoRXdrX1NvdXBfQXV0aF9EaWFsb2cqIGlu
c3RhbmNlKQoreworfQorCitzdGF0aWMgdm9pZCBld2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9u
X2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZhY2UgKmZlYXR1cmVfaW50ZXJm
YWNlLCBncG9pbnRlciBpbnRlcmZhY2VfZGF0YSkKK3sKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+
YXR0YWNoID0gYXR0YWNoOworICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5kZXRhY2ggPSBkZXRhY2g7
Cit9CisKK3ZvaWQgZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1
dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhY2spCit7CisgICAgZXdrX2F1dGhfc2hvd19k
aWFsb2dfY2FsbGJhY2sgPSBjYWxsYmFjazsKK30KKwordm9pZCBld2tfYXV0aF9zb3VwX2NyZWRl
bnRpYWxzX3NldChjb25zdCBjaGFyKiB1c2VybmFtZSwgY29uc3QgY2hhciogcGFzc3dvcmQsIHZv
aWQqIGRhdGEpCit7CisgICAgaWYgKCFkYXRhKQorICAgICAgICByZXR1cm47CisKKyAgICBFd2tf
QXV0aF9EYXRhKiBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopZGF0YTsKKyAgICBzb3VwX2F1
dGhfYXV0aGVudGljYXRlKGF1dGhfZGF0YS0+YXV0aCwgdXNlcm5hbWUsIHBhc3N3b3JkKTsKKyAg
ICBzb3VwX3Nlc3Npb25fdW5wYXVzZV9tZXNzYWdlKGF1dGhfZGF0YS0+c2Vzc2lvbiwgYXV0aF9k
YXRhLT5tc2cpOworICAgIGZyZWVfYXV0aF9kYXRhKGF1dGhfZGF0YSk7Cit9CisKK3N0YXRpYyB2
b2lkIHNlc3Npb25fYXV0aGVudGljYXRlKFNvdXBTZXNzaW9uKiBzZXNzaW9uLCBTb3VwTWVzc2Fn
ZSogbXNnLCBTb3VwQXV0aCogYXV0aCwgZ2Jvb2xlYW4gcmV0cnlpbmcsIGdwb2ludGVyIC8qIHVz
ZXJfZGF0YSAqLykKK3sKKyAgICBTb3VwVVJJKiB1cmk7CisgICAgRXdrX0F1dGhfRGF0YSogYXV0
aF9kYXRhOworICAgIGNvbnN0IGNoYXIqIHJlYWxtOworCisgICAgc291cF9zZXNzaW9uX3BhdXNl
X21lc3NhZ2Uoc2Vzc2lvbiwgbXNnKTsKKyAgICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGUg
bWVzc2FnZSBzdGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBpdC4KKyAgICBnX29iamVjdF9yZWYo
bXNnKTsKKyAgICBnX29iamVjdF9yZWYoc2Vzc2lvbik7CisgICAgZ19vYmplY3RfcmVmKGF1dGgp
OworCisgICAgYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWNhbGxvYygxLCBzaXplb2YoRXdr
X0F1dGhfRGF0YSkpOworICAgIGF1dGhfZGF0YS0+bXNnID0gbXNnOworICAgIGF1dGhfZGF0YS0+
YXV0aCA9IGF1dGg7CisgICAgYXV0aF9kYXRhLT5zZXNzaW9uID0gc2Vzc2lvbjsKKworICAgIHVy
aSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKGF1dGhfZGF0YS0+bXNnKTsKKyAgICByZWFsbSA9IHNv
dXBfYXV0aF9nZXRfcmVhbG0oYXV0aF9kYXRhLT5hdXRoKTsKKworICAgIC8vIENhbGwgYXBwbGlj
YXRpb24gbWV0aG9kIHJlc3BvbnNpYmxlIGZvciBzaG93aW5nIGF1dGhlbnRpY2F0aW9uIGRpYWxv
ZyBhbmQgc2VuZGluZyBiYWNrIGF1dGhvcml6YXRpb24gZGF0YS4KKyAgICBpZiAoZXdrX2F1dGhf
c2hvd19kaWFsb2dfY2FsbGJhY2spCisgICAgICAgIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxi
YWNrKHJlYWxtLCBzb3VwX3VyaV90b19zdHJpbmcodXJpLCBUUlVFKSwgYXV0aF9kYXRhKTsKKyAg
ICBlbHNlIHsKKyAgICAgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoX2RhdGEt
PnNlc3Npb24sIGF1dGhfZGF0YS0+bXNnKTsKKyAgICAgICAgZnJlZV9hdXRoX2RhdGEoYXV0aF9k
YXRhKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19BdXRoX0Rh
dGEqIGF1dGhfZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPm1zZyk7Cisg
ICAgZ19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5zZXNzaW9uKTsKKyAgICBnX29iamVjdF91bnJl
ZihhdXRoX2RhdGEtPmF1dGgpOworICAgIGZyZWUoYXV0aF9kYXRhKTsKK30KKworc3RhdGljIHZv
aWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwgU291cFNlc3Npb24qIHNlc3Np
b24pCit7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAiYXV0aGVudGljYXRlIiwgR19D
QUxMQkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIpOworfQorCitzdGF0aWMgdm9p
ZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lvbiogc2Vzc2lv
bikKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMoc2Vzc2lvbiwg
KHZvaWQqKXNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsKK30KKworI2lmZGVmIF9fY3Bs
dXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
YXV0aF9zb3VwLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5oCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczYTg3M2EKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5oCkBAIC0wLDAgKzEsNjcgQEAK
Ky8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisgICAgQ29weXJpZ2h0IChD
KSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNv
ZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5k
ZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vu
c2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgor
ICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0
ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w
ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg
d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZ
IG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlv
dSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxl
IENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVmIGV3a19hdXRoX3NvdXBfaAor
I2RlZmluZSBld2tfYXV0aF9zb3VwX2gKKworI2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVk
ZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1
cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBFV0tfVFlQRV9TT1VQX0FVVEhfRElB
TE9HICAgICAgICAgICAgKGV3a19hdXRoX3NvdXBfZGlhbG9nX2dldF90eXBlICgpKQorI2RlZmlu
ZSBFV0tfU09VUF9BVVRIX0RJQUxPRyhvYmplY3QpICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNU
QU5DRV9DQVNUICgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBf
QXV0aF9EaWFsb2cpKQorI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBFV0tfVFlQRV9TT1VQX0FVVEhf
RElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCisjZGVmaW5lIEVXS19JU19TT1VQX0FVVEhf
RElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmplY3Qp
LCBFV0tfVFlQRV9TT1VQX0FVVEhfRElBTE9HKSkKKyNkZWZpbmUgRVdLX0lTX1NPVVBfQVVUSF9E
SUFMT0dfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgRVdL
X1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HX0dF
VF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEVXS19UWVBF
X1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKwordHlwZWRlZiBzdHJ1
Y3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworfSBFd2tfU291cF9BdXRoX0RpYWxv
ZzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9
IEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3M7CisKK0dUeXBlIGV3a19hdXRoX3NvdXBfZGlhbG9n
X2dldF90eXBlKHZvaWQpOworCisvKioKKyAqICBTZXRzIGNhbGxiYWNrIHRvIGJlIGNhbGxlZCB3
aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgorICovCit2b2lkIGV3a19hdXRoX3NvdXBf
c2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNh
bGxiYWNrKTsKKworLyoqCisgKiAgTWV0aG9kIGZvciBzZXR0aW5nIGNyZWRlbnRpYWxzCisgKgor
ICogIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogIEBwYXJhbSBwYXNzd29yZCBwYXNzd29y
ZAorICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQorICovCit2b2lkIGV3
a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJuYW1lLCBjb25zdCBj
aGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisKKyNlbmRpZiAvLyBld2tfYXV0aF9zb3VwX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4u
Y3BwCmluZGV4IDhjYTg3ZDEuLjllOWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZs
L2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19tYWluLmNw
cApAQCAtNTIsNiArNTIsNyBAQAogI2lmIFVTRShTT1VQKQogLy8gUkVNT1ZFLU1FOiBzZWUgdG9k
byBiZWxvdwogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhf
c291cC5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2VuZGlmCiAKQEAgLTIxMCw5ICsy
MTEsMTEgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAgICAgIFNvdXBTZXNz
aW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1bHRTZXNzaW9uKCk7
CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHNlc3Npb24sIFNPVVBf
VFlQRV9DT05URU5UX1NOSUZGRVIpOwogICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmVf
YnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVSKTsKKworICAgICAgICBT
b3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8U291cFNlc3Npb25G
ZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIDApKTsKKyAg
ICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhfZGlhbG9nKTsKICAg
ICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9Ci0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97088</attachid>
            <date>2011-06-14 02:13:10 -0700</date>
            <delta_ts>2011-06-15 00:56:54 -0700</delta_ts>
            <desc>patch</desc>
            <filename>auth3.diff</filename>
            <type>text/plain</type>
            <size>13506</size>
            <attacher name="Kamil Blank">k.blank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMjJjMjI4NS4uNTVlZmI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwMCw2ICsxMDAsMTAgQEAgRU5ESUYg
KCkKIElGIChXVEZfVVNFX1NPVVApCiAgIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTICR7TElCU09VUDI0X0lOQ0xVREVfRElSU30pCiAgIExJU1QoQVBQRU5EIFdlYktpdF9M
SUJSQVJJRVMgJHtMSUJTT1VQMjRfTElCUkFSSUVTfSkKKyAgTElTVChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKKyAgICBlZmwvZXdrL2V3a19hdXRoLmNwcAorICAgIGVmbC9ld2svZXdrX2F1dGhfc291
cC5jcHAKKyAgKQogRU5ESUYgKCkKIAogSUYgKFdURl9VU0VfQ1VSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA2NGQwNDQ5Li5mNjVjNDI2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAK
KzIwMTEtMDYtMDYgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBTb3VwIGF1dGhl
bnRpY2F0aW9uIGZlYXR1cmUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc1MgorCisgICAgICAgICogQ01ha2VMaXN0c0Vm
bC50eHQ6CisgICAgICAgICogZXdrL2V3a19hdXRoLmNwcDogQWRkZWQuCisgICAgICAgIChld2tf
YXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOgorICAgICAgICAoZXdrX2F1dGhfY3JlZGVu
dGlhbHNfc2V0KToKKyAgICAgICAgKiBld2svZXdrX2F1dGguaDogQWRkZWQuCisgICAgICAgICog
ZXdrL2V3a19hdXRoX3NvdXAuY3BwOiBBZGRlZC4KKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpl
d2tfYXV0aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRh
Ojpld2tfYXV0aF9zb3VwX2RpYWxvZ19pbml0KToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpl
d2tfYXV0aF9zb3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdCk6CisgICAgICAgIChfRXdr
X0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOgorICAg
ICAgICAoX0V3a19BdXRoX0RhdGE6OmV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KToKKyAg
ICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpzZXNzaW9uX2F1dGhlbnRpY2F0ZSk6CisgICAgICAgIChf
RXdrX0F1dGhfRGF0YTo6ZnJlZV9hdXRoX2RhdGEpOgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6
OmF0dGFjaCk6CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZGV0YWNoKToKKyAgICAgICAgKiBl
d2svZXdrX2F1dGhfc291cC5oOiBBZGRlZC4KKyAgICAgICAgKiBld2svZXdrX21haW4uY3BwOgor
ICAgICAgICAoX2V3a19pbml0X2JvZHkpOgorCiAyMDExLTA2LTAyICBHeXV5b3VuZyBLaW0gIDxn
eXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VubmV0aCBS
b2hkZSBDaHJpc3RpYW5zZW4uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGguY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjIxMmU3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmNwcApAQCAtMCwwICsxLDQ0IEBACisvKgorICAg
IENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVsZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJh
cnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAg
bW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9w
dGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBB
TlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1F
UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0
aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGli
cmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJl
ZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZs
b29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorKi8KKworI2luY2x1ZGUgImNv
bmZpZy5oIgorI2luY2x1ZGUgImV3a19hdXRoLmgiCisKKyNpZmRlZiBXVEZfVVNFX1NPVVAKKyNp
bmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisjZW5kaWYKKworLyoqCisgKiBTZXRzIGNhbGxiYWNr
IHRvIGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgorICoKKyAqIEBw
YXJhbSBjYWxsYmFjayBjYWxsYmFjayB0byBiZSBjYWxsZWQuCisgKi8KK3ZvaWQgZXdrX2F1dGhf
c2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNh
bGxiYWNrKQoreworI2lmIFVTRShTT1VQKQorICAgIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2df
Y2FsbGJhY2tfc2V0KGNhbGxiYWNrKTsKKyNlbmRpZgorfQorCit2b2lkIGV3a19hdXRoX2NyZWRl
bnRpYWxzX3NldChjaGFyKiB1c2VybmFtZSwgY2hhciogcGFzc3dvcmQsIHZvaWQqIGRhdGEpCit7
CisjaWYgVVNFKFNPVVApCisgICAgZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQodXNlcm5h
bWUsIHBhc3N3b3JkLCBkYXRhKTsKKyNlbmRpZgorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9lZmwvZXdrL2V3a19hdXRoLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzAyOTY1Ci0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoLmgKQEAgLTAsMCArMSw1NSBAQAor
LyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgorICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljCisgICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQg
eW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJ
VEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YK
KyAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu
ICBTZWUgdGhlIEdOVQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorCisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwKKyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5k
ZWYgZXdrX2F1dGhfaAorI2RlZmluZSBld2tfYXV0aF9oCisKKyNpbmNsdWRlIDxFaW5hLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBDYWxs
YmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyByZXF1aXJlZC4KKyAqCisg
KiBAcGFyYW0gcmVhbG0gYXV0aCdzIHJlYWxtCisgKiBAcGFyYW0gdXJpIHVyaQorICogQHBhcmFt
IGRhdGEgcG9pbnRzIHRvIFdlYktpdEF1dGhEYXRhCisgKi8KK3R5cGVkZWYgdm9pZCAoKkV3a19B
dXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrKShjb25zdCBjaGFyKiByZWFsbSwgY29uc3QgY2hhciog
dXJpLCB2b2lkKiBkYXRhKTsKKworLyoqCisgKiBTZXQgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdo
ZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQKKyAqLworRUFQSSB2b2lkIGV3a19hdXRoX3No
b3dfZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayk7CisK
Ky8qKgorICogQ2FsbHMgYXV0aGVudGljYXRpb24gbWV0aG9kIGZvciBzZXR0aW5nIGNyZWRlbnRp
YWxzLgorICoKKyAqIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogQHBhcmFtIHBhc3N3b3Jk
IHVzZXIgcGFzc3dvcmQKKyAqIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQor
ICovCitFQVBJIHZvaWQgZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIqIHVzZXJuYW1lLCBj
aGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2Vu
ZGlmCisjZW5kaWYgLy8gZXdrX2F1dGhfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoX3NvdXAuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19hdXRoX3Nv
dXAuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ODdlMTMKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKQEAg
LTAsMCArMSwxNDEgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwuCisg
ICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAg
ICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5k
YXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmli
dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgICAg
TUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2Vl
IHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0
YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBM
aWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGlicmFy
eTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGgg
Rmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaW5jbHVkZSAi
Y29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2F1dGhfc291cC5oIgorCisjaW5jbHVkZSAiRVdlYktp
dC5oIgorI2luY2x1ZGUgImV3a19hdXRoLmgiCisjaW5jbHVkZSAiZXdrX2xvZ2dpbmcuaCIKKyNp
bmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKyNpbmNsdWRlIDxsaWJz
b3VwL3NvdXAuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgor
CisvKioKKyAqICNFd2tfU291cF9BdXRoX0RpYWxvZyBpcyBhICNTb3VwU2Vzc2lvbkZlYXR1cmUg
dGhhdCB5b3UgY2FuIGF0dGFjaCB0byB5b3VyCisgKiAjU291cFNlc3Npb24gdG8gcHJvdmlkZSBh
IHNpbXBsZSBhdXRoZW50aWNhdGlvbiBkaWFsb2cgd2hpbGUKKyAqIGhhbmRsaW5nIEhUVFAgYmFz
aWMgYXV0aC4gSXQgaXMgYnVpbHQgYXMgYSBzaW1wbGUgQy1vbmx5IG1vZHVsZQorICogdG8gZWFz
ZSByZXVzZS4KKyAqLworCit0eXBlZGVmIHN0cnVjdCBfRXdrX0F1dGhfRGF0YSB7CisgICAgU291
cE1lc3NhZ2UqIG1zZzsKKyAgICBTb3VwQXV0aCogYXV0aDsKKyAgICBTb3VwU2Vzc2lvbiogc2Vz
c2lvbjsKK30gRXdrX0F1dGhfRGF0YTsKKworc3RhdGljIEV3a19BdXRoX1Nob3dfRGlhbG9nX0Nh
bGxiYWNrIGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrID0gMDsKKworc3RhdGljIHZvaWQg
ZXdrX2F1dGhfc291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0
dXJlSW50ZXJmYWNlKiwgZ3BvaW50ZXIpOworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9u
RmVhdHVyZSosIFNvdXBTZXNzaW9uKik7CitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25G
ZWF0dXJlKiwgU291cFNlc3Npb24qKTsKK3N0YXRpYyB2b2lkIGZyZWVfYXV0aF9kYXRhKEV3a19B
dXRoX0RhdGEqKTsKKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUoRXdrX1NvdXBfQXV0aF9EaWFs
b2csIGV3a19hdXRoX3NvdXBfZGlhbG9nLCBHX1RZUEVfT0JKRUNULAorICAgICAgICAgICAgICAg
ICAgICAgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFKFNPVVBfVFlQRV9TRVNTSU9OX0ZFQVRVUkUs
IGV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KSkKKworc3RhdGljIHZv
aWQgZXdrX2F1dGhfc291cF9kaWFsb2dfY2xhc3NfaW5pdChFd2tfU291cF9BdXRoX0RpYWxvZ0Ns
YXNzKiBrbGFzcykKK3sKK30KKworc3RhdGljIHZvaWQgZXdrX2F1dGhfc291cF9kaWFsb2dfaW5p
dChFd2tfU291cF9BdXRoX0RpYWxvZyogaW5zdGFuY2UpCit7Cit9CisKK3N0YXRpYyB2b2lkIGV3
a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KFNvdXBTZXNzaW9uRmVhdHVy
ZUludGVyZmFjZSAqZmVhdHVyZV9pbnRlcmZhY2UsIGdwb2ludGVyIGludGVyZmFjZV9kYXRhKQor
eworICAgIGZlYXR1cmVfaW50ZXJmYWNlLT5hdHRhY2ggPSBhdHRhY2g7CisgICAgZmVhdHVyZV9p
bnRlcmZhY2UtPmRldGFjaCA9IGRldGFjaDsKK30KKwordm9pZCBld2tfYXV0aF9zb3VwX3Nob3df
ZGlhbG9nX2NhbGxiYWNrX3NldChFd2tfQXV0aF9TaG93X0RpYWxvZ19DYWxsYmFjayBjYWxsYmFj
aykKK3sKKyAgICBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayA9IGNhbGxiYWNrOworfQor
Cit2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJuYW1l
LCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSkKK3sKKyAgICBpZiAoIWRhdGEpCisg
ICAgICAgIHJldHVybjsKKworICAgIEV3a19BdXRoX0RhdGEqIGF1dGhfZGF0YSA9IChFd2tfQXV0
aF9EYXRhKilkYXRhOworICAgIHNvdXBfYXV0aF9hdXRoZW50aWNhdGUoYXV0aF9kYXRhLT5hdXRo
LCB1c2VybmFtZSwgcGFzc3dvcmQpOworICAgIHNvdXBfc2Vzc2lvbl91bnBhdXNlX21lc3NhZ2Uo
YXV0aF9kYXRhLT5zZXNzaW9uLCBhdXRoX2RhdGEtPm1zZyk7CisgICAgZnJlZV9hdXRoX2RhdGEo
YXV0aF9kYXRhKTsKK30KKworc3RhdGljIHZvaWQgc2Vzc2lvbl9hdXRoZW50aWNhdGUoU291cFNl
c3Npb24qIHNlc3Npb24sIFNvdXBNZXNzYWdlKiBtc2csIFNvdXBBdXRoKiBhdXRoLCBnYm9vbGVh
biByZXRyeWluZywgZ3BvaW50ZXIgLyogdXNlcl9kYXRhICovKQoreworICAgIFNvdXBVUkkqIHVy
aTsKKyAgICBFd2tfQXV0aF9EYXRhKiBhdXRoX2RhdGE7CisgICAgY29uc3QgY2hhciogcmVhbG07
CisKKyAgICBpZiAoIWV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKQorICAgICAgICByZXR1
cm47CisKKyAgICBhdXRoX2RhdGEgPSAoRXdrX0F1dGhfRGF0YSopY2FsbG9jKDEsIHNpemVvZihF
d2tfQXV0aF9EYXRhKSk7CisKKyAgICBpZiAoIWF1dGhfZGF0YSkgeworICAgICAgICBDUklUSUNB
TCgiY291bGQgbm90IGFsbG9jYXRlIEV3a19BdXRoX0RhdGEiKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIHNvdXBfc2Vzc2lvbl9wYXVzZV9tZXNzYWdlKHNlc3Npb24sIG1zZyk7Cisg
ICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlIG1lc3NhZ2Ugc3RpY2tzIGFyb3VuZCB3aGVu
IHBhdXNpbmcgaXQuCisgICAgZ19vYmplY3RfcmVmKG1zZyk7CisgICAgZ19vYmplY3RfcmVmKHNl
c3Npb24pOworICAgIGdfb2JqZWN0X3JlZihhdXRoKTsKKworICAgIGF1dGhfZGF0YS0+bXNnID0g
bXNnOworICAgIGF1dGhfZGF0YS0+YXV0aCA9IGF1dGg7CisgICAgYXV0aF9kYXRhLT5zZXNzaW9u
ID0gc2Vzc2lvbjsKKworICAgIHVyaSA9IHNvdXBfbWVzc2FnZV9nZXRfdXJpKGF1dGhfZGF0YS0+
bXNnKTsKKyAgICByZWFsbSA9IHNvdXBfYXV0aF9nZXRfcmVhbG0oYXV0aF9kYXRhLT5hdXRoKTsK
KworICAgIC8vIENhbGwgYXBwbGljYXRpb24gbWV0aG9kIHJlc3BvbnNpYmxlIGZvciBzaG93aW5n
IGF1dGhlbnRpY2F0aW9uIGRpYWxvZyBhbmQgc2VuZGluZyBiYWNrIGF1dGhvcml6YXRpb24gZGF0
YS4KKyAgICBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFjayhyZWFsbSwgc291cF91cmlfdG9f
c3RyaW5nKHVyaSwgVFJVRSksIGF1dGhfZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkIGZyZWVfYXV0
aF9kYXRhKEV3a19BdXRoX0RhdGEqIGF1dGhfZGF0YSkKK3sKKyAgICBnX29iamVjdF91bnJlZihh
dXRoX2RhdGEtPm1zZyk7CisgICAgZ19vYmplY3RfdW5yZWYoYXV0aF9kYXRhLT5zZXNzaW9uKTsK
KyAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPmF1dGgpOworICAgIGZyZWUoYXV0aF9kYXRh
KTsKK30KKworc3RhdGljIHZvaWQgYXR0YWNoKFNvdXBTZXNzaW9uRmVhdHVyZSogbWFuYWdlciwg
U291cFNlc3Npb24qIHNlc3Npb24pCit7CisgICAgZ19zaWduYWxfY29ubmVjdChzZXNzaW9uLCAi
YXV0aGVudGljYXRlIiwgR19DQUxMQkFDSyhzZXNzaW9uX2F1dGhlbnRpY2F0ZSksIG1hbmFnZXIp
OworfQorCitzdGF0aWMgdm9pZCBkZXRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBT
b3VwU2Vzc2lvbiogc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0
X2J5X2Z1bmMoc2Vzc2lvbiwgKHZvaWQqKXNlc3Npb25fYXV0aGVudGljYXRlLCBtYW5hZ2VyKTsK
K30KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmggYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGhfc291cC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlZmNlYWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5o
CkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDA5IElnYWxpYSBTLkwu
CisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25pY3MKKworICAgIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFs
IFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZv
dW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlv
dXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMgbGlicmFyeSBpcyBkaXN0
cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICAgIGJ1dCBXSVRI
T1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisg
ICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUg
ZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9uZyB3aXRoIHRoaXMgbGli
cmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICAgIHRo
ZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlm
dGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisqLworCisjaWZuZGVm
IGV3a19hdXRoX3NvdXBfaAorI2RlZmluZSBld2tfYXV0aF9zb3VwX2gKKworI2luY2x1ZGUgImV3
a19hdXRoLmgiCisjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyNpbmNsdWRlIDxnbGliLmg+CisK
KyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2RlZmluZSBFV0tf
VFlQRV9TT1VQX0FVVEhfRElBTE9HICAgICAgICAgICAgKGV3a19hdXRoX3NvdXBfZGlhbG9nX2dl
dF90eXBlKCkpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAgICAo
R19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9E
SUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKyNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFM
T0dfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBFV0tf
VFlQRV9TT1VQX0FVVEhfRElBTE9HLCBFd2tfU291cF9BdXRoX0RpYWxvZykpCisjZGVmaW5lIEVX
S19JU19TT1VQX0FVVEhfRElBTE9HKG9iamVjdCkgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNF
X1RZUEUoKG9iamVjdCksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBFV0tf
SVNfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBF
KChrbGFzcyksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0cpKQorI2RlZmluZSBFV0tfU09VUF9B
VVRIX0RJQUxPR19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksIEVXS19UWVBFX1NPVVBfQVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKwor
dHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworfSBFd2tfU291
cF9BdXRoX0RpYWxvZzsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIEdPYmplY3RDbGFzcyBwYXJl
bnRfY2xhc3M7Cit9IEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3M7CisKK0dUeXBlIGV3a19hdXRo
X3NvdXBfZGlhbG9nX2dldF90eXBlKHZvaWQpOworCisvKioKKyAqICBTZXRzIGNhbGxiYWNrIHRv
IGJlIGNhbGxlZCB3aGVuIGF1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkLgorICovCit2b2lkIGV3
a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9n
X0NhbGxiYWNrIGNhbGxiYWNrKTsKKworLyoqCisgKiAgTWV0aG9kIGZvciBzZXR0aW5nIGNyZWRl
bnRpYWxzCisgKgorICogIEBwYXJhbSB1c2VybmFtZSB1c2VybmFtZQorICogIEBwYXJhbSBwYXNz
d29yZCBwYXNzd29yZAorICogIEBwYXJhbSBkYXRhIHNvdXAgYXV0aGVudGljYXRpb24gZGF0YQor
ICovCit2b2lkIGV3a19hdXRoX3NvdXBfY3JlZGVudGlhbHNfc2V0KGNvbnN0IGNoYXIqIHVzZXJu
YW1lLCBjb25zdCBjaGFyKiBwYXNzd29yZCwgdm9pZCogZGF0YSk7CisKKyNpZmRlZiBfX2NwbHVz
cGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBld2tfYXV0aF9zb3VwX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX21haW4uY3BwCmluZGV4IDhjYTg3ZDEuLjllOWU3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFpbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdr
L2V3a19tYWluLmNwcApAQCAtNTIsNiArNTIsNyBAQAogI2lmIFVTRShTT1VQKQogLy8gUkVNT1ZF
LU1FOiBzZWUgdG9kbyBiZWxvdwogI2luY2x1ZGUgIlJlc291cmNlSGFuZGxlLmgiCisjaW5jbHVk
ZSAiZXdrX2F1dGhfc291cC5oIgogI2luY2x1ZGUgPGxpYnNvdXAvc291cC5oPgogI2VuZGlmCiAK
QEAgLTIxMCw5ICsyMTEsMTEgQEAgRWluYV9Cb29sIF9ld2tfaW5pdF9ib2R5KHZvaWQpCiAgICAg
ICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uID0gV2ViQ29yZTo6UmVzb3VyY2VIYW5kbGU6OmRlZmF1
bHRTZXNzaW9uKCk7CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVyZV9ieV90eXBlKHNl
c3Npb24sIFNPVVBfVFlQRV9DT05URU5UX1NOSUZGRVIpOwogICAgICAgICBzb3VwX3Nlc3Npb25f
YWRkX2ZlYXR1cmVfYnlfdHlwZShzZXNzaW9uLCBTT1VQX1RZUEVfQ09OVEVOVF9ERUNPREVSKTsK
KworICAgICAgICBTb3VwU2Vzc2lvbkZlYXR1cmUqIGF1dGhfZGlhbG9nID0gc3RhdGljX2Nhc3Q8
U291cFNlc3Npb25GZWF0dXJlKj4oZ19vYmplY3RfbmV3KEVXS19UWVBFX1NPVVBfQVVUSF9ESUFM
T0csIDApKTsKKyAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlKHNlc3Npb24sIGF1dGhf
ZGlhbG9nKTsKICAgICB9CiAjZW5kaWYKIAogICAgIHJldHVybiBFSU5BX1RSVUU7CiB9Ci0K
</data>
<flag name="review"
          id="90938"
          type_id="1"
          status="+"
          setter="kenneth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97247</attachid>
            <date>2011-06-15 00:56:54 -0700</date>
            <delta_ts>2011-06-18 13:51:15 -0700</delta_ts>
            <desc>patch</desc>
            <filename>auth4.diff</filename>
            <type>text/plain</type>
            <size>14408</size>
            <attacher name="Kamil Blank">k.blank</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NNYWtlTGlzdHNFZmwudHh0IGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKaW5kZXggMjJjMjI4NS4uNTVlZmI2MCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvQ01ha2VMaXN0c0VmbC50eHQKQEAgLTEwMCw2ICsxMDAsMTAgQEAgRU5ESUYg
KCkKIElGIChXVEZfVVNFX1NPVVApCiAgIExJU1QoQVBQRU5EIFdlYktpdF9JTkNMVURFX0RJUkVD
VE9SSUVTICR7TElCU09VUDI0X0lOQ0xVREVfRElSU30pCiAgIExJU1QoQVBQRU5EIFdlYktpdF9M
SUJSQVJJRVMgJHtMSUJTT1VQMjRfTElCUkFSSUVTfSkKKyAgTElTVChBUFBFTkQgV2ViS2l0X1NP
VVJDRVMKKyAgICBlZmwvZXdrL2V3a19hdXRoLmNwcAorICAgIGVmbC9ld2svZXdrX2F1dGhfc291
cC5jcHAKKyAgKQogRU5ESUYgKCkKIAogSUYgKFdURl9VU0VfQ1VSTCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwpp
bmRleCA2NGQwNDQ5Li5lOTg3MzZiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzcgQEAK
KzIwMTEtMDYtMDYgIEthbWlsIEJsYW5rICA8ay5ibGFua0BzYW1zdW5nLmNvbT4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBbRUZMXSBTb3VwIGF1dGhl
bnRpY2F0aW9uIGZlYXR1cmUgaW1wbGVtZW50YXRpb24uCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01NDc1MgorCisgICAgICAgIFRoaXMgaW1wbGVtZW50
YXRpb24gaXMgYmFzZWQgb24gR1RLIGltcGxlbWVudGF0aW9uLgorICAgICAgICBEdXJpbmcgZXdr
IGluaXRpYWxpemF0aW9uIFNvdXBTZXNzaW9uRmVhdHVyZSBpcyBhZGRlZCB3aGljaCBwcm92aWRl
cyBwb3NzaWJpbGl0eSB0byBoYW5kbGUgSFRUUCBiYXNpYyBhdXRoLgorCisgICAgICAgIFRvIHN1
cHBvcnQgYXV0aGVudGljYXRpb24gd2UgaGF2ZSB0byBzZXQgZnVuY3Rpb24gKGNhbGxiYWNrKSB2
aWEgZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2tfc2V0KCkKKyAgICAgICAgd2hpY2ggd2ls
bCBiZSByZXNwb25zaWJsZSBmb3Igc2Vzc2lvbiBhdXRoZW50aWNhdGlvbi4KKyAgICAgICAgSWYg
Y2FsbGJhY2sgaXMgc2V0IGFuZCBhdXRoZW50aWNhdGlvbiByZXF1aXJlZCAtIHdlYmtpdCBwYXVz
ZXMgc291cCBtZXNzYWdlLCBjYWxscyBwcmV2aW91c2x5IHNldCBjYWxsYmFjaworICAgICAgICBh
bmQgd2FpdHMgZm9yIGF1dGhlbnRpY2F0aW9uIGRhdGEgKHVzZXJuYW1lL3Bhc3N3b3JkKSB3aGlj
aCBzaG91bGQgYmUgcGFzc2VkIGJ5IGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldCgpLgorCisgICAg
ICAgICogQ01ha2VMaXN0c0VmbC50eHQ6CisgICAgICAgICogZXdrL2V3a19hdXRoLmNwcDogQWRk
ZWQuCisgICAgICAgIChld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQpOiBTZXR0aW5n
IGNhbGxiYWNrIHdoaWNoIHNob3VsZCBiZSBjYWxsZWQgd2hlbiBhdXRoZW50aWNhdGlvbiBpcyBy
ZXF1aXJlZC4KKyAgICAgICAgKGV3a19hdXRoX2NyZWRlbnRpYWxzX3NldCk6IFBhc3NpbmcgYXV0
aGVudGljYXRpb24gZGF0YS4KKyAgICAgICAgKiBld2svZXdrX2F1dGguaDogQWRkZWQuIEF1dGhl
bnRpY2F0aW9uIEFQSS4KKyAgICAgICAgKiBld2svZXdrX2F1dGhfc291cC5jcHA6IEFkZGVkLiBT
b3VwIGF1dGhlbnRpY2F0aW9uIGltcGxlbWVudGF0aW9uLgorICAgICAgICAoX0V3a19BdXRoX0Rh
dGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX2NsYXNzX2luaXQpOgorICAgICAgICAoX0V3a19BdXRo
X0RhdGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX2luaXQpOgorICAgICAgICAoX0V3a19BdXRoX0Rh
dGE6OmV3a19hdXRoX3NvdXBfZGlhbG9nX3Nlc3Npb25fZmVhdHVyZV9pbml0KToKKyAgICAgICAg
KF9Fd2tfQXV0aF9EYXRhOjpld2tfYXV0aF9zb3VwX3Nob3dfZGlhbG9nX2NhbGxiYWNrX3NldCk6
CisgICAgICAgIChfRXdrX0F1dGhfRGF0YTo6ZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQp
OgorICAgICAgICAoX0V3a19BdXRoX0RhdGE6OnNlc3Npb25fYXV0aGVudGljYXRlKToKKyAgICAg
ICAgKF9Fd2tfQXV0aF9EYXRhOjpmcmVlX2F1dGhfZGF0YSk6CisgICAgICAgIChfRXdrX0F1dGhf
RGF0YTo6YXR0YWNoKToKKyAgICAgICAgKF9Fd2tfQXV0aF9EYXRhOjpkZXRhY2gpOgorICAgICAg
ICAqIGV3ay9ld2tfYXV0aF9zb3VwLmg6IEFkZGVkLgorICAgICAgICAqIGV3ay9ld2tfbWFpbi5j
cHA6CisgICAgICAgIChfZXdrX2luaXRfYm9keSk6IFNvdXBTZXNzaW9uRmVhdHVyZSByZXNwb25z
aWJsZSBmb3IgYXV0aGVudGljYXRpb24gYWRkZWQgdG8gU291cFNlc3Npb24uCisKIDIwMTEtMDYt
MDIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBLZW5uZXRoIFJvaGRlIENocmlzdGlhbnNlbi4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdr
X2F1dGguY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmMjEyZTcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguY3BwCkBAIC0w
LDAgKzEsNDQgQEAKKy8qCisgICAgQ29weXJpZ2h0IChDKSAyMDExIFNhbXN1bmcgRWxlY3Ryb25p
Y3MKKworICAgIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJp
YnV0ZSBpdCBhbmQvb3IKKyAgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUg
TGlicmFyeSBHZW5lcmFsIFB1YmxpYworICAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBG
cmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICAgIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKworICAgIFRoaXMg
bGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVs
LAorICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBh
IGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAgICBhbG9u
ZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3
cml0ZSB0bworICAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5r
bGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgICAgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0Eu
CisqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiZXdrX2F1dGguaCIKKworI2lm
ZGVmIFdURl9VU0VfU09VUAorI2luY2x1ZGUgImV3a19hdXRoX3NvdXAuaCIKKyNlbmRpZgorCisv
KioKKyAqIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24gaXMg
cmVxdWlyZWQuCisgKgorICogQHBhcmFtIGNhbGxiYWNrIGNhbGxiYWNrIHRvIGJlIGNhbGxlZC4K
KyAqLwordm9pZCBld2tfYXV0aF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hv
d19EaWFsb2dfQ2FsbGJhY2sgY2FsbGJhY2spCit7CisjaWYgVVNFKFNPVVApCisgICAgZXdrX2F1
dGhfc291cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoY2FsbGJhY2spOworI2VuZGlmCit9CisK
K3ZvaWQgZXdrX2F1dGhfY3JlZGVudGlhbHNfc2V0KGNoYXIqIHVzZXJuYW1lLCBjaGFyKiBwYXNz
d29yZCwgdm9pZCogZGF0YSkKK3sKKyNpZiBVU0UoU09VUCkKKyAgICBld2tfYXV0aF9zb3VwX2Ny
ZWRlbnRpYWxzX3NldCh1c2VybmFtZSwgcGFzc3dvcmQsIGRhdGEpOworI2VuZGlmCit9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGguaCBiL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfYXV0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZj
ODFlODAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGgu
aApAQCAtMCwwICsxLDYwIEBACisvKgorICAgIENvcHlyaWdodCAoQykgMjAxMSBTYW1zdW5nIEVs
ZWN0cm9uaWNzCisKKyAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiBy
ZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0
aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAgICB2ZXJzaW9uIDIgb2Yg
dGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAg
ICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUg
aW1wbGllZCB3YXJyYW50eSBvZgorICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgICAgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyAgICBZb3Ugc2hvdWxkIGhhdmUgcmVj
ZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisg
ICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMw
MSwgVVNBLgorKi8KKworLyoqCisgKiBAZmlsZSAgICBld2tfYXV0aC5oCisgKiBAYnJpZWYgICBE
ZXNjcmliZXMgdGhlIGF1dGhlbnRpY2F0aW9uIEFQSS4KKyAqLworCisjaWZuZGVmIGV3a19hdXRo
X2gKKyNkZWZpbmUgZXdrX2F1dGhfaAorCisjaW5jbHVkZSA8RWluYS5oPgorCisjaWZkZWYgX19j
cGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogQ2FsbGJhY2sgdG8gYmUg
Y2FsbGVkIHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCisgKgorICogQHBhcmFtIHJl
YWxtIGF1dGgncyByZWFsbQorICogQHBhcmFtIHVyaSB1cmkKKyAqIEBwYXJhbSBkYXRhIHBvaW50
cyB0byBXZWJLaXRBdXRoRGF0YQorICovCit0eXBlZGVmIHZvaWQgKCpFd2tfQXV0aF9TaG93X0Rp
YWxvZ19DYWxsYmFjaykoY29uc3QgY2hhciogcmVhbG0sIGNvbnN0IGNoYXIqIHVyaSwgdm9pZCog
ZGF0YSk7CisKKy8qKgorICogU2V0cyBjYWxsYmFjayB0byBiZSBjYWxsZWQgd2hlbiBhdXRoZW50
aWNhdGlvbiBpcyByZXF1aXJlZAorICovCitFQVBJIHZvaWQgZXdrX2F1dGhfc2hvd19kaWFsb2df
Y2FsbGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrKTsKKworLyoqCisgKiBD
YWxscyBhdXRoZW50aWNhdGlvbiBtZXRob2QgZm9yIHNldHRpbmcgY3JlZGVudGlhbHMuCisgKgor
ICogQHBhcmFtIHVzZXJuYW1lIHVzZXJuYW1lCisgKiBAcGFyYW0gcGFzc3dvcmQgdXNlciBwYXNz
d29yZAorICogQHBhcmFtIGRhdGEgc291cCBhdXRoZW50aWNhdGlvbiBkYXRhCisgKi8KK0VBUEkg
dm9pZCBld2tfYXV0aF9jcmVkZW50aWFsc19zZXQoY2hhciogdXNlcm5hbWUsIGNoYXIqIHBhc3N3
b3JkLCB2b2lkKiBkYXRhKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRp
ZiAvLyBld2tfYXV0aF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1
dGhfc291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2F1dGhfc291cC5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU4N2UxMwotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmNwcApAQCAtMCwwICsxLDE0
MSBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAgICBDb3B5cmln
aHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlzIGZy
ZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlmeSBp
dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgICAg
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFu
eSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJB
TlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFOVEFC
SUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQor
ICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisg
ICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhl
IGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAg
ICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpbmNsdWRlICJjb25maWcuaCIK
KyNpbmNsdWRlICJld2tfYXV0aF9zb3VwLmgiCisKKyNpbmNsdWRlICJFV2ViS2l0LmgiCisjaW5j
bHVkZSAiZXdrX2F1dGguaCIKKyNpbmNsdWRlICJld2tfbG9nZ2luZy5oIgorI2luY2x1ZGUgPGds
aWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGxpYnNvdXAvc291cC5o
PgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICog
I0V3a19Tb3VwX0F1dGhfRGlhbG9nIGlzIGEgI1NvdXBTZXNzaW9uRmVhdHVyZSB0aGF0IHlvdSBj
YW4gYXR0YWNoIHRvIHlvdXIKKyAqICNTb3VwU2Vzc2lvbiB0byBwcm92aWRlIGEgc2ltcGxlIGF1
dGhlbnRpY2F0aW9uIGRpYWxvZyB3aGlsZQorICogaGFuZGxpbmcgSFRUUCBiYXNpYyBhdXRoLiBJ
dCBpcyBidWlsdCBhcyBhIHNpbXBsZSBDLW9ubHkgbW9kdWxlCisgKiB0byBlYXNlIHJldXNlLgor
ICovCisKK3R5cGVkZWYgc3RydWN0IF9Fd2tfQXV0aF9EYXRhIHsKKyAgICBTb3VwTWVzc2FnZSog
bXNnOworICAgIFNvdXBBdXRoKiBhdXRoOworICAgIFNvdXBTZXNzaW9uKiBzZXNzaW9uOworfSBF
d2tfQXV0aF9EYXRhOworCitzdGF0aWMgRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sgZXdr
X2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2sgPSAwOworCitzdGF0aWMgdm9pZCBld2tfYXV0aF9z
b3VwX2RpYWxvZ19zZXNzaW9uX2ZlYXR1cmVfaW5pdChTb3VwU2Vzc2lvbkZlYXR1cmVJbnRlcmZh
Y2UqLCBncG9pbnRlcik7CitzdGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiwg
U291cFNlc3Npb24qKTsKK3N0YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqLCBT
b3VwU2Vzc2lvbiopOworc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdrX0F1dGhfRGF0YSop
OworCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERShFd2tfU291cF9BdXRoX0RpYWxvZywgZXdrX2F1
dGhfc291cF9kaWFsb2csIEdfVFlQRV9PQkpFQ1QsCisgICAgICAgICAgICAgICAgICAgICAgICBH
X0lNUExFTUVOVF9JTlRFUkZBQ0UoU09VUF9UWVBFX1NFU1NJT05fRkVBVFVSRSwgZXdrX2F1dGhf
c291cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQpKQorCitzdGF0aWMgdm9pZCBld2tfYXV0
aF9zb3VwX2RpYWxvZ19jbGFzc19pbml0KEV3a19Tb3VwX0F1dGhfRGlhbG9nQ2xhc3MqIGtsYXNz
KQoreworfQorCitzdGF0aWMgdm9pZCBld2tfYXV0aF9zb3VwX2RpYWxvZ19pbml0KEV3a19Tb3Vw
X0F1dGhfRGlhbG9nKiBpbnN0YW5jZSkKK3sKK30KKworc3RhdGljIHZvaWQgZXdrX2F1dGhfc291
cF9kaWFsb2dfc2Vzc2lvbl9mZWF0dXJlX2luaXQoU291cFNlc3Npb25GZWF0dXJlSW50ZXJmYWNl
ICpmZWF0dXJlX2ludGVyZmFjZSwgZ3BvaW50ZXIgaW50ZXJmYWNlX2RhdGEpCit7CisgICAgZmVh
dHVyZV9pbnRlcmZhY2UtPmF0dGFjaCA9IGF0dGFjaDsKKyAgICBmZWF0dXJlX2ludGVyZmFjZS0+
ZGV0YWNoID0gZGV0YWNoOworfQorCit2b2lkIGV3a19hdXRoX3NvdXBfc2hvd19kaWFsb2dfY2Fs
bGJhY2tfc2V0KEV3a19BdXRoX1Nob3dfRGlhbG9nX0NhbGxiYWNrIGNhbGxiYWNrKQoreworICAg
IGV3a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrID0gY2FsbGJhY2s7Cit9CisKK3ZvaWQgZXdr
X2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0IGNo
YXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRhKQoreworICAgIGlmICghZGF0YSkKKyAgICAgICAgcmV0
dXJuOworCisgICAgRXdrX0F1dGhfRGF0YSogYXV0aF9kYXRhID0gKEV3a19BdXRoX0RhdGEqKWRh
dGE7CisgICAgc291cF9hdXRoX2F1dGhlbnRpY2F0ZShhdXRoX2RhdGEtPmF1dGgsIHVzZXJuYW1l
LCBwYXNzd29yZCk7CisgICAgc291cF9zZXNzaW9uX3VucGF1c2VfbWVzc2FnZShhdXRoX2RhdGEt
PnNlc3Npb24sIGF1dGhfZGF0YS0+bXNnKTsKKyAgICBmcmVlX2F1dGhfZGF0YShhdXRoX2RhdGEp
OworfQorCitzdGF0aWMgdm9pZCBzZXNzaW9uX2F1dGhlbnRpY2F0ZShTb3VwU2Vzc2lvbiogc2Vz
c2lvbiwgU291cE1lc3NhZ2UqIG1zZywgU291cEF1dGgqIGF1dGgsIGdib29sZWFuIHJldHJ5aW5n
LCBncG9pbnRlciAvKiB1c2VyX2RhdGEgKi8pCit7CisgICAgU291cFVSSSogdXJpOworICAgIEV3
a19BdXRoX0RhdGEqIGF1dGhfZGF0YTsKKyAgICBjb25zdCBjaGFyKiByZWFsbTsKKworICAgIGlm
ICghZXdrX2F1dGhfc2hvd19kaWFsb2dfY2FsbGJhY2spCisgICAgICAgIHJldHVybjsKKworICAg
IGF1dGhfZGF0YSA9IChFd2tfQXV0aF9EYXRhKiljYWxsb2MoMSwgc2l6ZW9mKEV3a19BdXRoX0Rh
dGEpKTsKKworICAgIGlmICghYXV0aF9kYXRhKSB7CisgICAgICAgIENSSVRJQ0FMKCJjb3VsZCBu
b3QgYWxsb2NhdGUgRXdrX0F1dGhfRGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisg
ICAgc291cF9zZXNzaW9uX3BhdXNlX21lc3NhZ2Uoc2Vzc2lvbiwgbXNnKTsKKyAgICAvLyBXZSBu
ZWVkIHRvIG1ha2Ugc3VyZSB0aGUgbWVzc2FnZSBzdGlja3MgYXJvdW5kIHdoZW4gcGF1c2luZyBp
dC4KKyAgICBnX29iamVjdF9yZWYobXNnKTsKKyAgICBnX29iamVjdF9yZWYoc2Vzc2lvbik7Cisg
ICAgZ19vYmplY3RfcmVmKGF1dGgpOworCisgICAgYXV0aF9kYXRhLT5tc2cgPSBtc2c7CisgICAg
YXV0aF9kYXRhLT5hdXRoID0gYXV0aDsKKyAgICBhdXRoX2RhdGEtPnNlc3Npb24gPSBzZXNzaW9u
OworCisgICAgdXJpID0gc291cF9tZXNzYWdlX2dldF91cmkoYXV0aF9kYXRhLT5tc2cpOworICAg
IHJlYWxtID0gc291cF9hdXRoX2dldF9yZWFsbShhdXRoX2RhdGEtPmF1dGgpOworCisgICAgLy8g
Q2FsbCBhcHBsaWNhdGlvbiBtZXRob2QgcmVzcG9uc2libGUgZm9yIHNob3dpbmcgYXV0aGVudGlj
YXRpb24gZGlhbG9nIGFuZCBzZW5kaW5nIGJhY2sgYXV0aG9yaXphdGlvbiBkYXRhLgorICAgIGV3
a19hdXRoX3Nob3dfZGlhbG9nX2NhbGxiYWNrKHJlYWxtLCBzb3VwX3VyaV90b19zdHJpbmcodXJp
LCBUUlVFKSwgYXV0aF9kYXRhKTsKK30KKworc3RhdGljIHZvaWQgZnJlZV9hdXRoX2RhdGEoRXdr
X0F1dGhfRGF0YSogYXV0aF9kYXRhKQoreworICAgIGdfb2JqZWN0X3VucmVmKGF1dGhfZGF0YS0+
bXNnKTsKKyAgICBnX29iamVjdF91bnJlZihhdXRoX2RhdGEtPnNlc3Npb24pOworICAgIGdfb2Jq
ZWN0X3VucmVmKGF1dGhfZGF0YS0+YXV0aCk7CisgICAgZnJlZShhdXRoX2RhdGEpOworfQorCitz
dGF0aWMgdm9pZCBhdHRhY2goU291cFNlc3Npb25GZWF0dXJlKiBtYW5hZ2VyLCBTb3VwU2Vzc2lv
biogc2Vzc2lvbikKK3sKKyAgICBnX3NpZ25hbF9jb25uZWN0KHNlc3Npb24sICJhdXRoZW50aWNh
dGUiLCBHX0NBTExCQUNLKHNlc3Npb25fYXV0aGVudGljYXRlKSwgbWFuYWdlcik7Cit9CisKK3N0
YXRpYyB2b2lkIGRldGFjaChTb3VwU2Vzc2lvbkZlYXR1cmUqIG1hbmFnZXIsIFNvdXBTZXNzaW9u
KiBzZXNzaW9uKQoreworICAgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyhz
ZXNzaW9uLCAodm9pZCopc2Vzc2lvbl9hdXRoZW50aWNhdGUsIG1hbmFnZXIpOworfQorCisjaWZk
ZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19hdXRoX3NvdXAuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3Vw
LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVmY2VhYQotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfYXV0aF9zb3VwLmgKQEAgLTAsMCAr
MSw2NyBAQAorLyoKKyAgICBDb3B5cmlnaHQgKEMpIDIwMDkgSWdhbGlhIFMuTC4KKyAgICBDb3B5
cmlnaHQgKEMpIDIwMTEgU2Ftc3VuZyBFbGVjdHJvbmljcworCisgICAgVGhpcyBsaWJyYXJ5IGlz
IGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICAgIG1vZGlm
eSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisg
ICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsg
ZWl0aGVyCisgICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorCisgICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGlu
IHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgICAgYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAgICBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgor
CisgICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICAgIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUg
dGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgICAgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwK
KyAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyovCisKKyNpZm5kZWYgZXdrX2F1dGhf
c291cF9oCisjZGVmaW5lIGV3a19hdXRoX3NvdXBfaAorCisjaW5jbHVkZSAiZXdrX2F1dGguaCIK
KyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2lmZGVmIF9f
Y3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisjZGVmaW5lIEVXS19UWVBFX1NPVVBf
QVVUSF9ESUFMT0cgICAgICAgICAgICAoZXdrX2F1dGhfc291cF9kaWFsb2dfZ2V0X3R5cGUoKSkK
KyNkZWZpbmUgRVdLX1NPVVBfQVVUSF9ESUFMT0cob2JqZWN0KSAgICAgICAgIChHX1RZUEVfQ0hF
Q0tfSU5TVEFOQ0VfQ0FTVCgob2JqZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgRXdr
X1NvdXBfQXV0aF9EaWFsb2cpKQorI2RlZmluZSBFV0tfU09VUF9BVVRIX0RJQUxPR19DTEFTUyhr
bGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEVXS19UWVBFX1NPVVBf
QVVUSF9ESUFMT0csIEV3a19Tb3VwX0F1dGhfRGlhbG9nKSkKKyNkZWZpbmUgRVdLX0lTX1NPVVBf
QVVUSF9ESUFMT0cob2JqZWN0KSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2Jq
ZWN0KSwgRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIEVXS19JU19TT1VQX0FV
VEhfRElBTE9HX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwg
RVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRykpCisjZGVmaW5lIEVXS19TT1VQX0FVVEhfRElBTE9H
X0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgRVdLX1RZ
UEVfU09VUF9BVVRIX0RJQUxPRywgRXdrX1NvdXBfQXV0aF9EaWFsb2cpKQorCit0eXBlZGVmIHN0
cnVjdCB7CisgICAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7Cit9IEV3a19Tb3VwX0F1dGhfRGlh
bG9nOworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgR09iamVjdENsYXNzIHBhcmVudF9jbGFzczsK
K30gRXdrX1NvdXBfQXV0aF9EaWFsb2dDbGFzczsKKworR1R5cGUgZXdrX2F1dGhfc291cF9kaWFs
b2dfZ2V0X3R5cGUodm9pZCk7CisKKy8qKgorICogIFNldHMgY2FsbGJhY2sgdG8gYmUgY2FsbGVk
IHdoZW4gYXV0aGVudGljYXRpb24gaXMgcmVxdWlyZWQuCisgKi8KK3ZvaWQgZXdrX2F1dGhfc291
cF9zaG93X2RpYWxvZ19jYWxsYmFja19zZXQoRXdrX0F1dGhfU2hvd19EaWFsb2dfQ2FsbGJhY2sg
Y2FsbGJhY2spOworCisvKioKKyAqICBNZXRob2QgZm9yIHNldHRpbmcgY3JlZGVudGlhbHMKKyAq
CisgKiAgQHBhcmFtIHVzZXJuYW1lIHVzZXJuYW1lCisgKiAgQHBhcmFtIHBhc3N3b3JkIHBhc3N3
b3JkCisgKiAgQHBhcmFtIGRhdGEgc291cCBhdXRoZW50aWNhdGlvbiBkYXRhCisgKi8KK3ZvaWQg
ZXdrX2F1dGhfc291cF9jcmVkZW50aWFsc19zZXQoY29uc3QgY2hhciogdXNlcm5hbWUsIGNvbnN0
IGNoYXIqIHBhc3N3b3JkLCB2b2lkKiBkYXRhKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9Cisj
ZW5kaWYKKworI2VuZGlmIC8vIGV3a19hdXRoX3NvdXBfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9lZmwvZXdrL2V3a19tYWluLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfbWFp
bi5jcHAKaW5kZXggOGNhODdkMS4uOWU5ZTc3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19tYWluLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX21haW4u
Y3BwCkBAIC01Miw2ICs1Miw3IEBACiAjaWYgVVNFKFNPVVApCiAvLyBSRU1PVkUtTUU6IHNlZSB0
b2RvIGJlbG93CiAjaW5jbHVkZSAiUmVzb3VyY2VIYW5kbGUuaCIKKyNpbmNsdWRlICJld2tfYXV0
aF9zb3VwLmgiCiAjaW5jbHVkZSA8bGlic291cC9zb3VwLmg+CiAjZW5kaWYKIApAQCAtMjEwLDkg
KzIxMSwxMSBAQCBFaW5hX0Jvb2wgX2V3a19pbml0X2JvZHkodm9pZCkKICAgICAgICAgU291cFNl
c3Npb24qIHNlc3Npb24gPSBXZWJDb3JlOjpSZXNvdXJjZUhhbmRsZTo6ZGVmYXVsdFNlc3Npb24o
KTsKICAgICAgICAgc291cF9zZXNzaW9uX2FkZF9mZWF0dXJlX2J5X3R5cGUoc2Vzc2lvbiwgU09V
UF9UWVBFX0NPTlRFTlRfU05JRkZFUik7CiAgICAgICAgIHNvdXBfc2Vzc2lvbl9hZGRfZmVhdHVy
ZV9ieV90eXBlKHNlc3Npb24sIFNPVVBfVFlQRV9DT05URU5UX0RFQ09ERVIpOworCisgICAgICAg
IFNvdXBTZXNzaW9uRmVhdHVyZSogYXV0aF9kaWFsb2cgPSBzdGF0aWNfY2FzdDxTb3VwU2Vzc2lv
bkZlYXR1cmUqPihnX29iamVjdF9uZXcoRVdLX1RZUEVfU09VUF9BVVRIX0RJQUxPRywgMCkpOwor
ICAgICAgICBzb3VwX3Nlc3Npb25fYWRkX2ZlYXR1cmUoc2Vzc2lvbiwgYXV0aF9kaWFsb2cpOwog
ICAgIH0KICNlbmRpZgogCiAgICAgcmV0dXJuIEVJTkFfVFJVRTsKIH0KLQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>